Skip to content

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

@wllgrnt

Description

@wllgrnt

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'>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions