obj_dict = dataclasses.asdict(obj)
return jsonable_encoder(
obj_dict,
- exclude_none=exclude_none,
+ include=include,
+ exclude=exclude,
+ by_alias=by_alias,
+ exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
+ exclude_none=exclude_none,
custom_encoder=custom_encoder,
sqlalchemy_safe=sqlalchemy_safe,
)
+from dataclasses import dataclass
from datetime import datetime, timezone
from enum import Enum
from pathlib import PurePath, PurePosixPath, PureWindowsPath
self.name = name
+@dataclass
+class Item:
+ name: str
+ count: int
+
+
class DictablePerson(Person):
def __iter__(self):
return ((k, v) for k, v in self.__dict__.items())
}
+def test_encode_dataclass():
+ item = Item(name="foo", count=100)
+ assert jsonable_encoder(item) == {"name": "foo", "count": 100}
+ assert jsonable_encoder(item, include={"name"}) == {"name": "foo"}
+ assert jsonable_encoder(item, exclude={"count"}) == {"name": "foo"}
+ assert jsonable_encoder(item, include={}) == {}
+ assert jsonable_encoder(item, exclude={}) == {"name": "foo", "count": 100}
+
+
def test_encode_unsupported():
unserializable = Unserializable()
with pytest.raises(ValueError):