Skip to content

Releases: yukinarit/pyserde

v0.8.3

28 Jun 12:46
e313fa8
Compare
Choose a tag to compare
  • fix: Use numpy<1.23.0 for python 3.7 and 3.8 (3045521)

v0.8.2

18 Jun 02:32
90c0871
Compare
Choose a tag to compare
  • chore: Replace stringcase with casfey (1f8a17d), closes #240

This release had a contribution from 1 person: @gitpushdashf. Thank you so much! 🎉 😂

v0.8.1

15 Jun 00:06
ace00ad
Compare
Choose a tag to compare
  • feat: Don't wrap user exception in SerdeError (161cffd)

v0.8.0

01 Jun 22:50
0421050
Compare
Choose a tag to compare

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

10 May 14:38
508c54d
Compare
Choose a tag to compare

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

11 Apr 22:17
0963c35
Compare
Choose a tag to compare
  • Don't package tests and examples (af829ae), closes #214
  • ci: Use pypy-3.8 (316b98e)
  • feat: Support PEP604 Union operator (17419d2)

This release had contributions from 1 person: @gitpushdashf. Thank you so much! 🎉 😂

v0.7.1

17 Mar 13:45
924671d
Compare
Choose a tag to compare
  • ci: Run tests on pull_request only (015cb41)
  • feat: Support typing.Generic (e9f2bdb)
  • build: Drop python 3.6 and pypy (279f1a4)
  • docs: Fix typo in docs introduction (03f24da)

This release had contributions from 1 person: @chagui. Thank you so much! 🎉 😂

v0.7.0

14 Feb 15:11
899cd5b
Compare
Choose a tag to compare
  • 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 to ExternalTagging. This may break the existing code, so please be aware if you use dataclasses with Union. For more information, check the documentation
  • build: Update mypy to workaround typed_ast error (0ea33a7)

This release had contributions from 1 person: @tardyp. Thank you so much! 🎉 😂

v0.6.0

20 Dec 12:02
04c3d13
Compare
Choose a tag to compare
  • 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

24 Nov 12:53
758cce5
Compare
Choose a tag to compare
  • 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! 🎉 😂