typed_python icon indicating copy to clipboard operation
typed_python copied to clipboard

Serializer cannot deserialize Alternatives of the same name and signature in different modules

Open wllgrnt opened this issue 2 years ago • 0 comments

Given three files:

#module_1.py

from typed_python import Alternative, SerializationContext, Entrypoint

def clone(x):
    return SerializationContext().deserialize(SerializationContext().serialize(x))

@Entrypoint
def test_alternative_hashing():
    A = Alternative("A", A=dict(a=int))
    print('A from module 1', A, 'clones to', clone(A))
    return A

test_alternative_hashing()
#module_2.py

from typed_python import Alternative, SerializationContext, Entrypoint
from alternative_serialisation_module import clone

@Entrypoint
def test_alternative_hashing_2():
    A = Alternative("A", A=dict(a=int))
    print('A from module 2', A, 'clones to', clone(A))
    return A

test_alternative_hashing_2()
#module_3.py

from module_1 import test_alternative_hashing
from module_2 import test_alternative_hashing_2

Run module_3.py.

Expected output

A from module 1 <class 'module_1.A'> clones to <class 'module_1.A'>
A from module 2 <class 'module_2.A'> clones to <class 'module_2.A'>

Actual output

A from module 1 <class 'module_1.A'> clones to <class 'module_1.A'>
A from module 2 <class 'module_2.A'> clones to <class 'module_1.A'>

wllgrnt avatar Feb 14 '23 20:02 wllgrnt