אלעזר writes: > But nobody (yet) claimed it to be a reasonable example of code we > don't want to break.
"Reasonable example" is not the standard. The ideal is that *nobody*'s code breaks unless it's necessary to to fix a bug. The current implementation conforms to the specification[1], and therefore the proposed change is not a bugfix. The Yale Book of Quotations quotes English judge Robert Megarry as follows: "Whereas in England all is permitted that is not expressly prohibited, it has been said that in Germany all is prohibited unless expressly permitted and in France all is permitted that is expressly prohibited. In the European Common Market no-one knows what is permitted and it all costs more." http://freakonomics.com/2009/10/29/quotes-uncovered-death-and-statistics/ Python, of course, follows the principle of English law. That's what we mean by "consenting adults". The rules about change are more flexible in the stdlib, but even there we get reports every release about breakage due to improvements in various modules. This is the language definition, so "if you can do it in vX.Y, it should do the same in vX.(Y+1)" is a strict rule.[2] Footnotes: [1] Assuming, as I do, that in PEP 3107 "expression" refers only to the syntax specification and does not at all imply adding a new expression type to the language. What is stored in __annotations__ is thus implied to be the object that is the value of the expression, following the precedent of initialization, and the general Pythonic approach of evaluating expressions when encountered. And that semantics is stated explicitly in PEP 3107. [2] The definition of "do the same" does not necessarily mean "produce identical output", eg, in the case of "dir()" in the bare interpreter with no imports. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/