Skip to content

Commit

Permalink
Merge pull request #257 from yukinarit/bump-to-0.9.0
Browse files Browse the repository at this point in the history
chore: Bump version to 0.9.0
  • Loading branch information
yukinarit authored Aug 26, 2022
2 parents faf6065 + 038d3e7 commit d42e058
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 2 deletions.
55 changes: 54 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,57 @@
## `0.8.3` (2022-06-28)
## `0.9.0` (2022-08-26)

`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`.

```python
@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.

```python
@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](https://github.com/yukinarit/pyserde/commit/23ea180))
* refactor: Change to pass "type_check" parameter in decorator ([fbe8dc8](https://github.com/yukinarit/pyserde/commit/fbe8dc8))
* feat: Add type coercion feature make it default ([dabb777](https://github.com/yukinarit/pyserde/commit/dabb777))
* feat: Implement strict type checking ([0273b9a](https://github.com/yukinarit/pyserde/commit/0273b9a))

Another notable change is switching toml library from [toml](https://pypi.org/project/toml/) to [tomli](https://pypi.org/project/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](https://peps.python.org/pep-0680/).

* feat: Switch toml library to tomli ([11b4df6](https://github.com/yukinarit/pyserde/commit/11b4df6))
* Better documentation about generic alias ([fd4e5a5](https://github.com/yukinarit/pyserde/commit/fd4e5a5))
* Ensure union_func_name produces a valid function name ([eddf250](https://github.com/yukinarit/pyserde/commit/eddf250))
* Import 'Literal' from serde.compat ([a7450c1](https://github.com/yukinarit/pyserde/commit/a7450c1))
* Support NumPy 1.23 in Python 3.7/3.8 ([3309a73](https://github.com/yukinarit/pyserde/commit/3309a73))
* Use str instead of repr in typename, fixing Union[Literal["str"], ...] ([b3905ef](https://github.com/yukinarit/pyserde/commit/b3905ef))
* fix: from_json return returns T not Optional[T] ([9e50fb7](https://github.com/yukinarit/pyserde/commit/9e50fb7))

This release had contributions from 1 person: [@kngwyu](https://github.com/kngwyu). Thank you so much! :tada: :joy:

## `0.8.3` (2022-06-28)

* fix: Use numpy<1.23.0 for python 3.7 and 3.8 ([3045521](https://github.com/yukinarit/pyserde/commit/3045521))

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "pyserde"
version = "0.8.3"
version = "0.9.0"
description = "Yet another serialization library on top of dataclasses"
authors = ["yukinarit <[email protected]>"]
license = "MIT"
Expand Down

0 comments on commit d42e058

Please sign in to comment.