Skip to content

Commit b330147

Browse files
committed
fix: primitive serialization
1 parent 7287f54 commit b330147

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

api/serialization/util/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ def instance_to_model(instance: Any, * , use_class: Type=None, skip_classes: Lis
5050

5151
if instance is None:
5252
return None
53-
if isinstance(instance, (str, int, float)):
53+
if isinstance(instance, str):
54+
return instance
55+
if isinstance(instance, (int, float)):
5456
if math.isnan(instance):
5557
return None
5658
return instance

test/serialization/test_util.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import pytest
2+
import math
3+
4+
from api.serialization.util import instance_to_model
5+
6+
@pytest.mark.parametrize("target, result, error", [
7+
(None, None, None),
8+
("foo", "foo", None),
9+
(1, 1, None),
10+
(0.1, 0.1, None),
11+
(math.nan, None, None),
12+
([1, 2], [1, 2], None),
13+
((1, 2), [1, 2], None),
14+
({"foo": "bar", "one": 2}, {"foo": "bar", "one": 2}, None),
15+
({"foo": [1, "bar"]}, {"foo": [1, "bar"]}, None),
16+
({"foo": (1, "bar")}, {"foo": [1, "bar"]}, None),
17+
])
18+
def test_instance_to_model(target, result, error):
19+
if error:
20+
with pytest.raises(error):
21+
instance_to_model(target)
22+
pass
23+
return
24+
assert result == instance_to_model(target)

0 commit comments

Comments
 (0)