Surprising fix for SF bug 563060: module can be used as base class.
Change the module constructor (module_init) to have the signature __init__(name:str, doc=None); this prevents the call from type_new() to succeed. While we're at it, prevent repeated calling of module_init for the same module from leaking the dict, changing the semantics so that __dict__ is only initialized if NULL. Also adding a unittest, test_module.py. This is an incompatibility with 2.2, if anybody was instantiating the module class before, their argument list was probably empty; so this can't be backported to 2.2.x.
This commit is contained in:
parent
c3a787e090
commit
2e4e02620b
|
@ -6,6 +6,13 @@ Type/class unification and new-style classes
|
|||
|
||||
Core and builtins
|
||||
|
||||
- The constructor for the module type now requires a name argument and
|
||||
takes an optional docstring argument. Previously, this constructor
|
||||
ignored its arguments. As a consequence, deriving a class from a
|
||||
module (not from the module type) is now illegal; previously this
|
||||
created an unnamed module, just like invoking the module type did.
|
||||
[SF bug 563060]
|
||||
|
||||
- A new warning PendingDeprecationWarning was added to provide
|
||||
direction on features which are in the process of being deprecated.
|
||||
The warning will not be printed by default. To see the pending
|
||||
|
|
Loading…
Reference in New Issue