Eric Jolibois
|
c834f3419d
|
Support discriminated union (#2336)
* feat: add discriminated union
* feat: add OpenAPI spec schema
* test: add basic example for generated schema
* test: add validation tests
* docs: add basic documentation
* fix: support ForwardRef
* test: add ForwardRef case
* fix: false positive lint error
https://github.com/PyCQA/pyflakes/pull/600
* improve error
* add schema/schema_json utils
* fix tests after merge
* refactor: add `discriminator` attribute to `FieldInfo`
* refactor: @cybojenix remarks
* fix schema with forward ref
* start nested
* feat: add allowed values in error message
* fix wrong check
Same example with
```
class FooDomainA(BaseModel):
__root__: Union[FooDomainAA, FooDomainAB]
```
(without a discriminator)
should obviously be valid
* test: add nested examples
* remove uncovered code as we don't need it
* docs: add nested example
* fix: support properly Annotated Field syntax
* support naked annotated
* fix: handle TypeError
* make error loc more explicit
* fix behaviour with basemodel instance as value
* support schema for dataclasses
* tweak examples
* refactor: context manager just around code that fails
* refactor: add docstring + tweak on `get_sub_types`
* refactor: move `get_discriminator_values` in `utils.py`
* refactor: create `MissingDiscriminator` and `InvalidDiscriminator`
* refactor: move logic in `_validate_discriminated_union`
* refactor: remove `DiscriminatedUnionConfig`
* docs: schema/schema_json
* tests: add tests with other `Literal` types
* update 3.10
* add schema docstring
* weird bug on 3.8 with `Literal[None]`
* bump to view docs & coverage
* bump to prompt tests
* move tests in dedicated file
* chore: rewording
* refactor: replace property by direct slot
* refactor: faster check
* refactor: missing discriminator
* refactor: change error to ConfigError
* refactor: use display_as_type
* fix: mypy
* fix: duplicate
* feat: handle alias
* feat: handle nested unions
* tweak first example
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
|
2021-12-18 16:31:35 +00:00 |
|