Skip to content

Commit

Permalink
fix: support more data types
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastianmanger committed Aug 26, 2024
1 parent c690d5e commit 2784776
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
2 changes: 1 addition & 1 deletion constance/codecs.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def _as(discriminator: str, v: Any) -> dict[str, Any]:
def dumps(obj, _dumps=json.dumps, cls=JSONEncoder, default_kwargs=None, **kwargs):
"""Serialize object to json string."""
default_kwargs = default_kwargs or {}
is_default_type = isinstance(obj, (str, int, bool, float, type(None)))
is_default_type = isinstance(obj, (str, int, bool, float, type(None), dict, list))
return _dumps(
_as(DEFAULT_DISCRIMINATOR, obj) if is_default_type else obj, cls=cls, **dict(default_kwargs, **kwargs)
)
Expand Down
4 changes: 4 additions & 0 deletions tests/test_codecs.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ def setUp(self):
self.boolean = True
self.none = None
self.timedelta = timedelta(days=1, hours=2, minutes=3)
self.dict = {'test': 'test'}
self.list = ['test']

def test_serializes_and_deserializes_default_types(self):
self.assertEqual(dumps(self.datetime), '{"__type__": "datetime", "__value__": "2023-10-05T15:30:00"}')
Expand All @@ -37,6 +39,8 @@ def test_serializes_and_deserializes_default_types(self):
self.assertEqual(dumps(self.boolean), '{"__type__": "default", "__value__": true}')
self.assertEqual(dumps(self.none), '{"__type__": "default", "__value__": null}')
self.assertEqual(dumps(self.timedelta), '{"__type__": "timedelta", "__value__": 93780.0}')
self.assertEqual(dumps(self.dict), '{"__type__": "default", "__value__": {"test": "test"}}')
self.assertEqual(dumps(self.list), '{"__type__": "default", "__value__": ["test"]}')
for t in (
self.datetime,
self.date,
Expand Down

0 comments on commit 2784776

Please sign in to comment.