diff --git a/src/specklepy/objects/base.py b/src/specklepy/objects/base.py index b3189fa..ce5eab0 100644 --- a/src/specklepy/objects/base.py +++ b/src/specklepy/objects/base.py @@ -5,6 +5,7 @@ from typing import ( Any, ClassVar, Dict, + ForwardRef, List, Optional, Set, @@ -217,6 +218,9 @@ def _validate_type(t: Optional[type], value: Any) -> Tuple[bool, Any]: return True, t(value) if getattr(t, "__module__", None) == "typing": + if isinstance(t, ForwardRef): + return True, value + origin = getattr(t, "__origin__") # below is what in nicer for >= py38 # origin = get_origin(t) diff --git a/tests/unit/test_type_validation.py b/tests/unit/test_type_validation.py index 6411234..55e1909 100644 --- a/tests/unit/test_type_validation.py +++ b/tests/unit/test_type_validation.py @@ -106,6 +106,7 @@ fake_bases = [FakeBase("foo"), FakeBase("bar")] True, fake_bases, ), + (List["int"], [2, 3, 4], True, [2, 3, 4]) ], ) def test_validate_type(