Details
-
Bug
-
Status: Open
-
P3
-
Resolution: Unresolved
-
None
-
None
-
None
Description
The pickler recurses infinitely and dies with maximum recursion limit exceeded when a module contains a self-referential class (or any class which is part of a cycle).
Here's a minimal example:
class RecursiveClass(object): SELF_TYPE = None def __init__(self, datum) self.datum = 'RecursiveClass:%s' % datum RecursiveClass.SELF_TYPE = RecursiveClass
If this is in a module, then the pickler will enter the infinite recursion when trying to pickle any nested class in that module.
An actual example is with typing.Type, which is part of a cycle typing.Type -> type -> object -> typing.Type. If a module contains an attribute that refers to typing.Type, such as a type alias, it will trigger this bug.
Attachments
Issue Links
- links to