Skip to content

Commit 7a56f75

Browse files
fix: load generic dict scalar fields
1 parent c16e83b commit 7a56f75

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

indico/types/base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import inspect
22
import json
33
from datetime import datetime
4-
from typing import TYPE_CHECKING, Any, List, cast
4+
from typing import TYPE_CHECKING, Any, List, cast, get_origin
55

66
from indico.types.utils import cc_to_snake
77

@@ -38,6 +38,7 @@ def valid_type(v: "Any") -> bool:
3838
return (
3939
(inspect.isclass(v) and issubclass(v, BaseType))
4040
or v in [str, int, float, bool, JSONType, datetime]
41+
or get_origin(v) is dict
4142
or valid_type(list_subtype(v))
4243
)
4344

tests/unit/types/test_base_type.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime
2-
from typing import List
2+
from typing import Dict, List
33

44
from indico.types.base import BaseType, JSONType
55

@@ -97,3 +97,12 @@ class A(BaseType):
9797
x = A(**{"createdAt": "1590169591.582852"})
9898

9999
assert x.created_at == datetime.fromtimestamp(1590169591.582852)
100+
101+
102+
def test_generic_dict_field():
103+
class A(BaseType):
104+
meta: Dict[str, str]
105+
106+
x = A(meta={"foo": "bar"})
107+
108+
assert x.meta == {"foo": "bar"}

0 commit comments

Comments
 (0)