Releases: yukinarit/pyserde
Releases · yukinarit/pyserde
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
UntaggedtoExternalTagging. 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! 🎉 😂
v0.5.2
v0.5.1
v0.5.0
@deserialize
@serialize
@dataclass
class Bar:
c: float
d: bool
@deserialize
@serialize
@dataclass
class Foo:
a: int
b: str
bar: Bar = field(metadata={'serde_flatten': True})- feat: Print Tips in serde.inspect (62c74f3)
- fix: "Cannot instantiate type" type error (6b3afbd)
- ci: Use [email protected] (45a999c)
- build: Parallel test execution (#148)
- build: Migrate to poetry (#144)
This release had contributions from 1 person: @alexmisk. Thank you so much! 🎉 😂
v0.4.0
from __future__ import annotations
from dataclasses import dataclass
from serde import deserialize, serialize
@deserialize
@serialize
@dataclass
class Foo:
i: int
s: str
f: float
b: bool
def foo(self, cls: Foo): # You can use "Foo" type before it's defined.
print('foo')- feat: Implement custom class (de)serializer (3484d46)
- feat: Implement custom field (de)serializer (14b791c)
def serializer(cls, o):
...
def deserializer(cls, o):
...
@deserialize(deserializer=deserializer)
@serialize(serializer=serializer)
@dataclass
class Foo:
i: int
# Class serializer/deserializer is used as default.
dt1: datetime
# Override by field serializer/deserializer.
dt2: datetime = field(
metadata={
'serde_serializer': lambda x: x.strftime('%y.%m.%d'),
'serde_deserializer': lambda x: datetime.strptime(x, '%y.%m.%d'),
}
)- feat: Improve error description for union type (8abb549)
- feat: Improve serde.inspect (8b8635a)
- feat: Support typing.any (988a621)
- feat: Support typing.NewType for primitives (731ed79)
- refactor: Add lvalue renderer for serialization (665dc77)
- refactor: Remove arg template filter from se.py (0377655)
- refactor: Remove self class from scope (da81f1f)
- refactor: Rename custom (de)serializer attributes (03b2274)
- ci: Add python 3.10-dev to CI pipeline (1f33e59)
- ci: Don't cache pip to workaround pip error (c912429)
- build: add pre-commit to test requirements (a88ea40)
- fix: correctly render single element tuples (a8a6456)
- fix: pass convert_sets argument to union functions (ab40cc9)
- fix: support unions with nested unions in containers (#113) (c26e828), closes #113
v0.3.2
- feat: Improve error description for union type (8abb549)
- feat: Improve serde.inspect (8b8635a)
- feat: Support typing.any (988a621)
- feat: Support typing.NewType for primitives (731ed79)
- build: add pre-commit to test requirements (a88ea40)
- fix: correctly render single element tuples (a8a6456)
- fix: pass convert_sets argument to union functions (ab40cc9)
- fix: support unions with nested unions in containers (#113) (c26e828), closes #113
- ci: Don't cache pip to workaround pip error (c912429)
- refactor: Remove self class from scope (da81f1f)
This release had contibutions from 1 person: @ydylla. Thank you so much! 🎉 😂
v0.3.1
v0.3.0
- feat: Support PEP585 type hint annotation (81d3f4f)
@deserialize @serialize @dataclass class Foo: l: list[str] t: tuple[str, bool] d: dict[str, list[int]]
- feat: add support for typing.Set & set (20a4cdc)
- feat: add more types & use code generation (d352d2d)
- IPv4Address, IPv6Address, IPv4Network, IPv6Network, IPv4Interface, IPv6Interface
- PosixPath, WindowsPath, PurePath, PurePosixPath, PureWindowsPath
- UUID
- feat: add convert_sets option required for to_json & to_msgpack (f954586)
- feat: add union support for complex types (434edf6)
@deserialize @serialize @dataclass class Foo: v: Union[int, str] c: Union[Dict[str, int], List[int]]
- fix: Ellipsis overwriting configured default for reuse_instances (b0366e5)
- fix: forward reuse_instances & fix call order for optionals (c56128c)
- fix: compatibility with python 3.6 (7ae87b4)
- fix: this pytest option does not exist #58 (c5938da), closes #58
- fix: scope should not be shared between classes (889ada1)
- fix: use iter_unions to recursively collect all unions of dataclass (577aeb9)
- build: Add PEP561 py.typed marker file (c0f46b9)
- build: Don't install dataclasses for python>3.6 (f47caa9)
- build: setup pre-commit as formatting tool (2876de4)
- ci: add code style check (c52f7e9)
This release had contibutions from 2 people: @ydylla, @alexmisk. Thank you so much! 🎉 😂