Pyserde Versions Save

Yet another serialization library on top of dataclasses, inspired by serde-rs.

v0.16.1

2 weeks ago

What's Changed

Bug fixes

Build

Refactoring

Other changes

New Contributors

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.16.0...v0.16.1

v0.16.0

1 month ago

What's Changed

New features

CI

Build

Refactoring

Other changes

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.15.0...v0.16.0

v0.15.0

2 months ago

What's Changed

Bug fixes

Breaking changes

Build

Test

New Contributors

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.14.2...v0.15.0

v0.14.2

2 months ago

What's Changed

Bug fixes

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.14.1...v0.14.2

v0.14.1

2 months ago

What's Changed

New features

Documentation

New Contributors

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.14.0...v0.14.1

v0.14.0

2 months ago

What's Changed

Breaking changes

pyserde's strict type check system is overhauled by using beartype - O(1) runtime type checker. all pyserde classes now implicitly implement beartype decorator by default. Passing wrong type of values in constructor raises beartype's validation error.

@serde
class Foo:
    s: str

If you call Foo with wrong type of object, beartype validation error is raised.

>>> foo = Foo(10)
beartype.roar.BeartypeCallHintParamViolation: Method __main__.Foo.__init__() 
parameter s=10 violates type hint <class 'str'>, as int 10 not instance of str.

If you deserialize with wrong value, serde error is raised.

>>> print(from_json(Foo, '{"s": 10}'))
serde.compat.SerdeError: Method __main__.Foo.__init__() 
parameter s=10 violates type hint <class 'str'>, as int 10 not instance of str.

If you want to disable type check, set either serde.disabled or serde.coerce in type_check class attribute.

from serde import serde, disabled

@serde(type_check=disabled)
class Foo:
    s: str

See https://yukinarit.github.io/pyserde/guide/en/type-check.html for more information.

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.13.2...v0.14.0

v0.13.2

3 months ago

What's Changed

New features

CI

New Contributors

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.13.1...v0.13.2

v0.13.1

3 months ago

What's Changed

Build

Refactoring

Documentation

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.13.0...v0.13.1

v0.13.0

4 months ago

What's Changed

New features

New custom class (de)serializer allows to extend pyserde to support third party types in a neat and robust way. Also custom global (de)serializer is a game changer to allow sharing and reusing custom serializers across different python projects. See custom class serializer and custom global serializer for more information.

e.g. Implementing serializer for datetime and int

class Serializer:
    # Custom serializer for "datetime"
    @overload
    def serialize(self, value: datetime) -> str:
        return value.strftime("%d/%m/%y")

   # Custom serializer for "int"
   @overload
   def serialize(self, value: int) -> Any:
       return str(value)

   ....

Build

Documentation

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.12.7...v0.13.0

v0.12.7

5 months ago

What's Changed

Refactoring

Other changes

New Contributors

Full Changelog: https://github.com/yukinarit/pyserde/compare/v0.12.6...v0.12.7