diff --git a/pycardano/serialization.py b/pycardano/serialization.py index b2ed0935..79b1473d 100644 --- a/pycardano/serialization.py +++ b/pycardano/serialization.py @@ -2,9 +2,8 @@ from __future__ import annotations -import typing - import re +import typing from collections import OrderedDict, UserList, defaultdict from copy import deepcopy from dataclasses import Field, dataclass, fields @@ -433,7 +432,7 @@ def _restore_typed_primitive( Returns: Union[:const:`Primitive`, CBORSerializable]: A CBOR primitive or a CBORSerializable. """ - if t in PRIMITIVE_TYPES and isinstance(v, t): + if t is Any or (t in PRIMITIVE_TYPES and isinstance(v, t)): return v elif isclass(t) and issubclass(t, CBORSerializable): return t.from_primitive(v) diff --git a/test/pycardano/test_serialization.py b/test/pycardano/test_serialization.py index 1905a6f1..2622b626 100644 --- a/test/pycardano/test_serialization.py +++ b/test/pycardano/test_serialization.py @@ -1,7 +1,6 @@ -from typing import Union - from dataclasses import dataclass, field from test.pycardano.util import check_two_way_cbor +from typing import Any, Union import pytest @@ -162,3 +161,14 @@ def test_indefinite_list(): b.remove(5) # remove should remove element and return IndefiniteList assert b == IndefiniteList([4, 6, 7]) and type(b) == IndefiniteList + + +def test_any_type(): + @dataclass + class Test1(MapCBORSerializable): + a: str = "" + b: Any = "" + + t = Test1(a="a", b=1) + + check_two_way_cbor(t)