Chuan Yu Foo created BEAM-4036:

             Summary: Pickler enters infinite recursion with self-referential 
                 Key: BEAM-4036
             Project: Beam
          Issue Type: Bug
          Components: sdk-py-core
            Reporter: Chuan Yu Foo
            Assignee: Ahmet Altay

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):

 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.

This message was sent by Atlassian JIRA

Reply via email to