diff --git a/src/coredumpy/py_object_proxy.py b/src/coredumpy/py_object_proxy.py index 7b45c40..d527643 100644 --- a/src/coredumpy/py_object_proxy.py +++ b/src/coredumpy/py_object_proxy.py @@ -83,7 +83,13 @@ def load_objects(cls, data): @classmethod def default_encode(cls, obj): - data = {"type": type(obj).__name__, "attrs": {}} + obj_type = type(obj) + if obj_type.__module__ in ("builtins", "__main__"): + typename = obj_type.__qualname__ + else: + typename = f"{obj_type.__module__}.{obj_type.__qualname__}" + + data = {"type": typename, "attrs": {}} if isinstance(obj, (types.ModuleType, types.FunctionType, types.BuiltinFunctionType, diff --git a/tests/test_py_object_proxy.py b/tests/test_py_object_proxy.py index b5b4010..20cd0c5 100644 --- a/tests/test_py_object_proxy.py +++ b/tests/test_py_object_proxy.py @@ -29,7 +29,7 @@ def __init__(self, x): proxy = self.convert_object(obj) self.assertEqual(proxy.x, 142857) self.assertEqual(dir(proxy), ['x']) - self.assertIn('