classification
Title: Strengthen __*__ system name warning
Type: Stage:
Components: Documentation Versions: Python 3.1, Python 3.2, Python 2.7
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, georg.brandl, terry.reedy
Priority: normal Keywords: patch

Created on 2010-08-01 22:53 by terry.reedy, last changed 2010-08-02 19:33 by georg.brandl. This issue is now closed.

Messages (3)
msg112395 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-08-01 22:53
Current" 2.3.2. Reserved classes of identifiers
"__*__
    System-defined names. These names are defined by the interpreter and its implementation (including the standard library); applications should not expect to define additional names using this convention. The set of names of this class defined by Python may be extended in future versions. See section Special method names."

Current pydev thread,Is it intentional that "sys.__debug__ = 1" is illegal in Python 2.7?, Guido said;
"But yes, the docs should clarify that *any* use of __*__ names, in
any* context, that does not follow explicitly documented use, is
subject to breakage without warning."

I think I would replace the current "applications ... convention" with Guido's sentence, starting with "*Any* use", though I might put it at the end as the second most important sentence of the paragraph.

Until this thread, I did not understand the import of 'expect to' in that middle sentence. Apparently, it means that if a definition works now, it may become invalid in the future if it becomes not just a system word, but a reserved word like __debug__ did. Guido's sentence covers this case and all others, so the current sentence would no longer be needed.
msg112398 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2010-08-01 23:01
Suggested rewrite:
"System-defined names. These names are defined by the interpreter and its implementation (including the standard library). Current system names are discussed in the Special method names section and elsewhere. More will likely be defined in future versions of Python. *Any* use of __*__ names, in any* context, that does not follow explicitly documented use, is
subject to breakage without warning.
msg112523 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-02 19:33
Thanks, applied in r83550.
History
Date User Action Args
2010-08-02 19:33:10georg.brandlsetstatus: open -> closed

nosy: + georg.brandl
messages: + msg112523

dependencies: - Clarify __debug__ restrictions
resolution: accepted
2010-08-02 18:34:41terry.reedysetkeywords: + patch
2010-08-01 23:02:18eric.araujosetdependencies: + Clarify __debug__ restrictions
2010-08-01 23:01:11terry.reedysetmessages: + msg112398
2010-08-01 22:53:47terry.reedycreate