-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
bpo-17422:language reference should specify restrictions on class namespace #18559
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
67042fc
3cc613c
5344bd5
ce1211d
50bf96c
fe0e189
0cbefbd
8ff956a
1d37fb2
c0d6251
9823caa
1c648cd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1946,10 +1946,12 @@ Once the appropriate metaclass has been identified, then the class namespace | |
is prepared. If the metaclass has a ``__prepare__`` attribute, it is called | ||
as ``namespace = metaclass.__prepare__(name, bases, **kwds)`` (where the | ||
additional keyword arguments, if any, come from the class definition). The | ||
``__prepare__`` method should be implemented as a :func:`classmethod`. | ||
``__prepare__`` method should be implemented as a :func:`classmethod`. The | ||
namespace returned by ``__prepare__`` is passed in to ``__new__``, but when | ||
the final class object is created the namespace is copied into a new ``dict``. | ||
|
||
If the metaclass has no ``__prepare__`` attribute, then the class namespace | ||
is initialised as an empty ordered mapping. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Per PEP 520, the default class namespace must be an ordered mapping and the original text here was purposefully phrased. While we've talked about requiring "dict" to be ordered (in the language reference), that hasn't happened. So changing the language spec text here to "dict" is inappropriate without a PEP. Note that elsewhere in the language reference the "ordered mapping" phrasing still exists. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Um, If after that has sunk in you still think this PR is wrong, please submit a new PR to fix it! (Sorry for landing prematurely.) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Per my comment on the bpo I think @ericsnowcurrently is right but for the wrong reasons. I have opened a PR correcting the wording. #18682 |
||
is initialised as an empty :func:`dict`. | ||
|
||
.. seealso:: | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
The language reference now specifies restrictions on class namespaces. Adapted from a patch by Ethan Furman. |
Uh oh!
There was an error while loading. Please reload this page.