Releases: yukinarit/pyserde
v0.9.6
- Recursive dataclasses are supported in #290
@dataclass class Recur: f: Optional['Recur'] serde(Recur)
typing.FrozenSet
andtyping.DefaultDict
are supported in #285,#286@serde @dataclass class Foo: a: FrozenSet[int] b: DefaultDict[str, List[int]]
- Pickle serializer and deserializer support is added in #284. Thanks @DoeringChristian!
Full Changelog: v0.9.5...v0.9.6
v0.9.5
v0.9.4
v0.9.3
Thanks to PEP681 @dataclass_transform, @dataclass
decorator is no longer mandatory if you use a PEP681 supported type checker such as pyright. If you are a mypy user, you still need @dataclass
decorator.
@serde
#@dataclass <= No longer needed.
class Foo:
i: int
v0.9.2
v0.9.1
v0.9.0
pyserde
v0.9 adds one of the most awaited features, the type checking functionality 🎉 If you add Coerce
or Strict
in serde
decorator, pyserde
will do type coercing or type checking based on the declared types.
Coerce
Type coercing automatically converts a value into the declared type during (de)serialization. If the value is incompatible e.g. value is "foo" and type is int, pyserde raises an SerdeError
.
@serde(type_check=Coerce)
@dataclass
class Foo
s: str
foo = Foo(10)
# pyserde automatically coerce the int value 10 into "10".
# {"s": "10"} will be printed.
print(to_json(foo))
Strict
Strict type checking is to check every value against the declared type during (de)serialization. We plan to make Strict
a default type checker in the future release.
@serde(type_check=Strict)
@dataclass
class Foo
s: str
foo = Foo(10)
# pyserde checks the value 10 is instance of `str`.
# SerdeError will be raised in this case because of the type mismatch.
print(to_json(foo))
- refactor: Change default type_check from Coerce to NoCheck (23ea180)
- refactor: Change to pass "type_check" parameter in decorator (fbe8dc8)
- feat: Add type coercion feature make it default (dabb777)
- feat: Implement strict type checking (0273b9a)
Another notable change is switching toml library from toml to tomli. tomli is used in a handful of major products e.g. pip
and pytest
and will be the part of Python standard library in Python 3.11.
- feat: Switch toml library to tomli (11b4df6)
- Better documentation about generic alias (fd4e5a5)
- Ensure union_func_name produces a valid function name (eddf250)
- Import 'Literal' from serde.compat (a7450c1)
- Support NumPy 1.23 in Python 3.7/3.8 (3309a73)
- Use str instead of repr in typename, fixing Union[Literal["str"], ...] (b3905ef)
- fix: from_json return returns T not Optional[T] (9e50fb7)
This release had contributions from 1 person: @kngwyu. Thank you so much! 🎉 😂