Skip to content
This repository was archived by the owner on Sep 9, 2024. It is now read-only.
This repository was archived by the owner on Sep 9, 2024. It is now read-only.

tojson and primitive fails when class is derived #185

@kfollesdal

Description

@kfollesdal
  • typical version: 2.7.4
  • Python version: 3.8.11
  • Operating System: Linux

Description

Try to make one class inherit another class. When using tojson or primitive on derived class get RecursionError.

What I Did

import typic

@typic.klass
class A:
    a :int

@typic.klass
class B(A):
    b:int

b = B(1,2)

try:
    b.tojson()
except RecursionError as e:
    print(e)
    b.primitive()
    

Traceback:

/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/klass.py:236: UserWarning: Keyword `always` will default to `False` in a future version. You should update your code to either explicitly declare `always=True` or update your code to not assume values will be coerced when set.
  return make_typedclass(
maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    b.tojson()
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/ext/json.py", line 34, in tojson
    return __dumps(__prim(o), **kwargs)
  File "<typical generated serializer__5288976827520983837>", line 7, in serializer__5288976827520983837
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  [Previous line repeated 496 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    b.primitive()
  File "<typical generated serializer__5288976827520983837>", line 7, in serializer__5288976827520983837
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  File "/nix/store/6v5r9jyh7c96gh3j4bg8niakhk34dbrk-python3.8-typical-2.7.4/lib/python3.8/site-packages/typic/serde/resolver.py", line 670, in iterator
    return __fields(o)
  [Previous line repeated 496 more times]
RecursionError: maximum recursion depth exceeded

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions