Releases: yukinarit/pyserde
v0.8.3
v0.8.2
v0.8.1
v0.8.0
Thanks to the contribution by @kigawas, pyserde can optionally use orjson as JSON serializer!
pip install pyserde[orjson]
If orjson is installed in the system, pyserde automatically use orjson in to_json/from_json.
NOTE: In order to align the JSON (de)serializer to orjson, a few parameters are passed in json.dumps
internally. This would lead to a breaking change in some cases. If you need the same behaviour as in pyserde<0.8, please explicitely pass those parameters in serde.json.to_json
. 🙇♂️
to_json(obj, ensure_ascii=True, separators=(", ", ": "))
Other noteble chage is we have @dataclass
decorator back in the all example and test code in the repository as shown below. It's because we found mypy isn't able to deduce the type correctly without @dataclass
decorator. If you are not mypy user, you can still declare a class with only @serde
decorator. 👍 For more information, please read the docs.
@serde
@dataclass # <-- Recommended to add @dataclass if you are mypy user.
class Foo:
i: int
s: str
f: float
b: bool
- build: Add "orjson" extras (ea70ec1)
- orjson support (2744675)
- Update json.py (2d67b65)
- feat: Support class declaration w/wo dataclass (a35f909)
- fix: Add dataclass decorator for all example code (60567ab)
- fix: Treat |None as Optional (5555452)
- Fix the default deserializer for custom class deserializer (6c2245b)
This release had contributions from 1 person: @kigawas. Thank you so much! 🎉 😂
v0.7.3
Thanks to the great contribution by @kmsquire, pyserde supports some numpy types!
@serde
class NPFoo:
i: np.int32
j: np.int64
f: np.float32
g: np.float64
h: np.bool_
u: np.ndarray
v: npt.NDArray
w: npt.NDArray[np.int32]
x: npt.NDArray[np.int64]
y: npt.NDArray[np.float32]
z: npt.NDArray[np.float64]
- feat: Remove try-catch from is_numpy_array() (unnecessary) (731876f)
- feat: Support Literal[...] type annotation (e50c958)
- feat: Support numpy types (78eb22e)
- feat(compat): Only define np_get_origin() for python 3.8 or earlier (02c5af2)
- feat(numpy): Support serialization of numpy.datetime64 (5e521cf)
- Don't import tests module from pyserde package (d664426)
- fix: Recognized numpy arrays on Python 3.7, 3.8 (a0fa36f)
- fix(numpy): Fix direct numpy array deserialization (8f9f71c)
- ci: Remove pypy-3.8 until a numpy wheel is released for it (61b6130)
- chore: Update black, fix test_union formatting (4a708fd)
- chore: Update numpy version specification based on numpy compatibility with python (1fa5e07)
This release had contributions from 2 people: @kmsquire and @chagui. Thank you so much! 🎉 😂
v0.7.2
v0.7.1
v0.7.0
- fix: Optional in custom class deserializer (181b2f1)
- fix: raise SerdeError from serde's APIs (76b0aee)
- pyserde (de)serialize method used to raise various Exceptions such as KeyError. pyserde always raises SerdeError since v0.7.0
- core: using black formatting only if debug is enabled (e596a84)
- feat: Add _make_serialize and _make_deserialize (a71c5d5)
- feat: Implement Union tagging system (c884dc4)
- This will change the default tagging for dataclasses with Union from
Untagged
toExternalTagging
. This may break the existing code, so please be aware if you use dataclasses with Union. For more information, check the documentation
- This will change the default tagging for dataclasses with Union from
- build: Update mypy to workaround typed_ast error (0ea33a7)
This release had contributions from 1 person: @tardyp. Thank you so much! 🎉 😂
v0.6.0
- feat: Add @serde decorator (523dc9c)
- feat: Add serde field function (488bf00)
- feat: Add serde_skip_default field attribute (0f0b212)
- feat: Automatically put dataclass decorator (2f0cf01)
With serde
decorator and field
function, you can declare pyserde class more easily.
from serde import serde, field
@serde
class Foo:
a : List[str] = field(default_factory=list, skip_if_false=True)
The declaration until v0.5.3 still works.
from dataclasses import dataclass
from serde import serialize, deserialize
@deserialize
@serialize
@dataclass
class Foo:
a : List[str] = field(default_factory=list, metadata={'serde_skip_if_false': True})
v0.5.3
- feat: Add more dataclass Field's attrs to Field (7b57c53)
- feat: Support python 3.10 (2f0c557)
- refactor: Delete unused imports (629d040)
- refactor: Remove type references from SerdeScope (bdd8784)
- refactor: Speficy correct type bound for serde.core.fields (c3b555c)
- fix: Add types in typing module to scope (e12e802)
- fix: Never use default value for from_tuple (3ce4f6b)
- fix: Use default value only if key isn't present (3fa4ab6)
- Fix typo in README (5f957d0)
This release had contributions from 2 people: @rnestler, @mauvealerts. Thank you so much! 🎉 😂