<div dir="ltr"><div><div><div><div>Currently, the naming section of PEP 8 doesn't say very much about what a leading underscore *means* in the Python standard library.<br><br></div>I would like to add a new "Private interfaces" subsection under "Naming Conventions" to say the following:<br>
<br></div>=================<br>Private interfaces<br><br></div>Unless explicitly documented otherwise, a leading underscore on any name indicates that it is an internal implementation detail and backwards compatibility guarantees do not apply. It is strongly encouraged that private APIs (whether modules, classes, functions, attributes or other names) be clearly marked in this way, as many Python users rely on introspection to identify available functionality and may be mislead into believing an API without the leading underscore is in fact a public API with the standard backwards compatibility guarantees.<br>
<br>All test modules are also considered private interfaces.<br><br></div><div>Even though they typically lack the leading underscore, modules imported by another module are also considered an implementation detail. Other modules *should* not rely on indirect access to such modules unless they are an explicitly documented part of the API (such as ``os.path``).<br>
=================<br><br></div><div>Cheers,<br>Nick.<br clear="all"></div><div><div><br>-- <br>Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>   |   Brisbane, Australia
</div></div></div>