What's in the Box
Bugfixes
- Lazy reprs eval to False, so we should check for a None when deciding on the error message at Constraints validation failure.
- Optional fields for recursive types were not properly reflected when generating the JSON Schema.
- Fields marked with `...` for default are no longer considered nullable when generating the JSON Schema, but are still optional.
- Objects are named after their type rather than their field when generating the JSON Schema (130) (breaking change)
- Structured Tuples were not properly validated or deserialized (138)
Features
- Adds validation and deserialization for Literal types (87). [Docs](https://python-typical.org/usage/types/#literal-types)
- Adds support for Tagged Unions (72). See the caveats in (133). [Docs](https://python-typical.org/usage/types/#tagged-unions-polymorphic-types)
- Adds `typic.environ` for typed get/set access of environment variables, and lazy evaluation of defaults for Settings, with clearer error messaging. [Docs](https://python-typical.org/usage/settings/)
- Adds support for `datetime.time` and `datetime.timedelta`.
- Small optimizations for Object and Array constraint validation.