spacemanspiff2007 / HABApp

Easy home automation with MQTT and/or openHAB
Apache License 2.0
54 stars 23 forks source link

PyUp Pin pydantic to latest version 1.10.1 #318

Closed pyup-bot closed 1 year ago

pyup-bot commented 1 year ago

This PR pins pydantic to the latest release 1.10.1.

Changelog ### 1.10.1 ``` * Add `__hash__` method to `pydancic.color.Color` class, 4454 by czaki ``` ### 1.10.0 ``` * Refactor the whole _pydantic_ `dataclass` decorator to really act like its standard lib equivalent. It hence keeps `__eq__`, `__hash__`, ... and makes comparison with its non-validated version possible. It also fixes usage of `frozen` dataclasses in fields and usage of `default_factory` in nested dataclasses. The support of `Config.extra` has been added. Finally, config customization directly via a `dict` is now possible, 2557 by PrettyWood <br/><br/> **BREAKING CHANGES:** - The `compiled` boolean (whether _pydantic_ is compiled with cython) has been moved from `main.py` to `version.py` - Now that `Config.extra` is supported, `dataclass` ignores by default extra arguments (like `BaseModel`) * Fix PEP487 `__set_name__` protocol in `BaseModel` for PrivateAttrs, 4407 by tlambert03 * Allow for custom parsing of environment variables via `parse_env_var` in `Config`, 4406 by acmiyaguchi * Rename `master` to `main`, 4405 by hramezani * Fix `StrictStr` does not raise `ValidationError` when `max_length` is present in `Field`, 4388 by hramezani * Make `SecretStr` and `SecretBytes` hashable, 4387 by chbndrhnns * Fix `StrictBytes` does not raise `ValidationError` when `max_length` is present in `Field`, 4380 by JeanArhancet * Add support for bare `type`, 4375 by hramezani * Support Python 3.11, including binaries for 3.11 in PyPI, 4374 by samuelcolvin * Add support for `re.Pattern`, 4366 by hramezani * Fix `__post_init_post_parse__` is incorrectly passed keyword arguments when no `__post_init__` is defined, 4361 by hramezani * Fix implicitly importing `ForwardRef` and `Callable` from `pydantic.typing` instead of `typing` and also expose `MappingIntStrAny`, 4358 by aminalaee * remove `Any` types from the `dataclass` decorator so it can be used with the `disallow_any_expr` mypy option, 4356 by DetachHead * moved repo to `pydantic/pydantic`, 4348 by yezz123 * fix "extra fields not permitted" error when dataclass with `Extra.forbid` is validated multiple times, 4343 by detachhead * Add Python 3.9 and 3.10 examples to docs, 4339 by Bobronium * Discriminated union models now use `oneOf` instead of `anyOf` when generating OpenAPI schema definitions, 4335 by MaxwellPayne * Allow type checkers to infer inner type of `Json` type. `Json[list[str]]` will be now inferred as `list[str]`, `Json[Any]` should be used instead of plain `Json`. Runtime behaviour is not changed, 4332 by Bobronium * Allow empty string aliases by using a `alias is not None` check, rather than `bool(alias)`, 4253 by sergeytsaplin * Update `ForwardRef`s in `Field.outer_type_`, 4249 by JacobHayes * The use of `__dataclass_transform__` has been replaced by `typing_extensions.dataclass_transform`, which is the preferred way to mark pydantic models as a dataclass under [PEP 681](https://peps.python.org/pep-0681/), #4241 by multimeric * Use parent model's `Config` when validating nested `NamedTuple` fields, 4219 by synek * Update `BaseModel.construct` to work with aliased Fields, 4192 by kylebamos * Catch certain raised errors in `smart_deepcopy` and revert to `deepcopy` if so, 4184 by coneybeare * Add `Config.anystr_upper` and `to_upper` kwarg to constr and conbytes, 4165 by satheler * Fix JSON schema for `set` and `frozenset` when they include default values, 4155 by aminalaee * Teach the mypy plugin that methods decorated by `validator` are classmethods, 4102 by DMRobertson * Improve mypy plugin's ability to detect required fields, 4086 by richardxia * Support fields of type `Type[]` in schema, 4051 by aminalaee * Add `default` value in JSON Schema when `const=True`, 4031 by aminalaee * Adds reserved word check to signature generation logic, 4011 by strue36 * Fix Json strategy failure for the complex nested field, 4005 by sergiosim * Add JSON-compatible float constraint `allow_inf_nan`, 3994 by tiangolo * Remove undefined behaviour when `env_prefix` had characters in common with `env_nested_delimiter`, 3975 by arsenron * Support generics model with `create_model`, 3945 by hot123s * allow submodels to overwrite extra field info, 3934 by PrettyWood * Document and test structural pattern matching ([PEP 636](https://peps.python.org/pep-0636/)) on `BaseModel`, #3920 by irgolic * Fix incorrect deserialization of python timedelta object to ISO 8601 for negative time deltas. Minus was serialized in incorrect place ("P-1DT23H59M59.888735S" instead of correct "-P1DT23H59M59.888735S"), 3899 by 07pepa * Fix validation of discriminated union fields with an alias when passing a model instance, 3846 by chornsby * Add a CockroachDsn type to validate CockroachDB connection strings. The type supports the following schemes: `cockroachdb`, `cockroachdb+psycopg2` and `cockroachdb+asyncpg`, 3839 by blubber * Fix MyPy plugin to not override pre-existing `__init__` method in models, 3824 by patrick91 * Fix mypy version checking, 3783 by KotlinIsland * support overwriting dunder attributes of `BaseModel` instances, 3777 by PrettyWood * Added `ConstrainedDate` and `condate`, 3740 by hottwaj * Support `kw_only` in dataclasses, 3670 by detachhead * Add comparison method for `Color` class, 3646 by aminalaee * Drop support for python3.6, associated cleanup, 3605 by samuelcolvin * created new function `to_lower_camel()` for "non pascal case" camel case, 3463 by schlerp * Add checks to `default` and `default_factory` arguments in Mypy plugin, 3430 by klaa97 * fix mangling of `inspect.signature` for `BaseModel`, 3413 by fix-inspect-signature * Adds the `SecretField` abstract class so that all the current and future secret fields like `SecretStr` and `SecretBytes` will derive from it, 3409 by expobrain * Support multi hosts validation in `PostgresDsn`, 3337 by rglsk * Fix parsing of very small numeric timedelta values, 3315 by samuelcolvin * Update `SecretsSettingsSource` to respect `config.case_sensitive`, 3273 by JeanArhancet * Add MongoDB network data source name (DSN) schema, 3229 by snosratiershad * Add support for multiple dotenv files, 3222 by rekyungmin * Raise an explicit `ConfigError` when multiple fields are incorrectly set for a single validator, 3215 by SunsetOrange * Allow ellipsis on `Field`s inside `Annotated` for `TypedDicts` required, 3133 by ezegomez * Catch overflow errors in `int_validator`, 3112 by ojii * Adds a `__rich_repr__` method to `Representation` class which enables pretty printing with [Rich](https://github.com/willmcgugan/rich), #3099 by willmcgugan * Add percent encoding in `AnyUrl` and descendent types, 3061 by FaresAhmedb * `validate_arguments` decorator now supports `alias`, 3019 by MAD-py * Avoid `__dict__` and `__weakref__` attributes in `AnyUrl` and IP address fields, 2890 by nuno-andre * Add ability to use `Final` in a field type annotation, 2766 by uriyyo * Update requirement to `typing_extensions>=4.1.0` to guarantee `dataclass_transform` is available, 4424 by commonism * Add Explosion and AWS to main sponsors, 4413 by samuelcolvin * Update documentation for `copy_on_model_validation` to reflect recent changes, 4369 by samuelcolvin * Runtime warning if `__slots__` is passed to `create_model`, `__slots__` is then ignored, 4432 by samuelcolvin * Add type hints to `BaseSettings.Config` to avoid mypy errors, also correct mypy version compatibility notice in docs, 4450 by samuelcolvin ``` ### 1.10.0b1 ``` Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0b1) for details. ``` ### 1.10.0a2 ``` Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0a2) for details. ``` ### 1.10.0a1 ``` Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/releases/tag/v1.10.0a1) for details. ``` ### 1.9.2 ``` **Revert Breaking Change**: _v1.9.1_ introduced a breaking change where model fields were deep copied by default, this release reverts the default behaviour to match _v1.9.0_ and before, while also allow deep-copy behaviour via `copy_on_model_validation = 'deep'`. See 4092 for more information. * Allow for shallow copies of model fields, `Config.copy_on_model_validation` is now a str which must be `'none'`, `'deep'`, or `'shallow'` corresponding to not copying, deep copy & shallow copy; default `'shallow'`, 4093 by timkpaine ``` ### 1.9.1 ``` Thank you to pydantic's sponsors: tiangolo, stellargraph, JonasKs, grillazz, Mazyod, kevinalh, chdsbd, povilasb, povilasb, jina-ai, mainframeindustries, robusta-dev, SendCloud, rszamszur, jodal, hardbyte, corleyma, daddycocoaman, Rehket, jokull, reillysiemens, westonsteimel, primer-io, koxudaxi, browniebroke, stradivari96, adriangb, kamalgill, jqueguiner, dev-zero, datarootsio, RedCarpetUp for their kind support. * Limit the size of `generics._generic_types_cache` and `generics._assigned_parameters` to avoid unlimited increase in memory usage, 4083 by samuelcolvin * Add Jupyverse and FPS as Jupyter projects using pydantic, 4082 by davidbrochart * Speedup `__isinstancecheck__` on pydantic models when the type is not a model, may also avoid memory "leaks", 4081 by samuelcolvin * Fix in-place modification of `FieldInfo` that caused problems with PEP 593 type aliases, 4067 by adriangb * Add support for autocomplete in VS Code via `__dataclass_transform__` when using `pydantic.dataclasses.dataclass`, 4006 by giuliano-oliveira * Remove benchmarks from codebase and docs, 3973 by samuelcolvin * Typing checking with pyright in CI, improve docs on vscode/pylance/pyright, 3972 by samuelcolvin * Fix nested Python dataclass schema regression, 3819 by himbeles * Update documentation about lazy evaluation of sources for Settings, 3806 by garyd203 * Prevent subclasses of bytes being converted to bytes, 3706 by samuelcolvin * Fixed "error checking inheritance of" when using PEP585 and PEP604 type hints, 3681 by aleksul * Allow self referencing `ClassVar`s in models, 3679 by samuelcolvin * **Breaking Change, see 4106**: Fix issue with self-referencing dataclass, 3675 by uriyyo * Include non-standard port numbers in rendered URLs, 3652 by dolfinus * `Config.copy_on_model_validation` does a deep copy and not a shallow one, 3641 by PrettyWood * fix: clarify that discriminated unions do not support singletons, 3636 by tommilligan * Add `read_text(encoding='utf-8')` for `setup.py`, 3625 by hswong3i * Fix JSON Schema generation for Discriminated Unions within lists, 3608 by samuelcolvin ``` ### 1.9.0 ``` * Apply `update_forward_refs` to `Config.json_encodes` prevent name clashes in types defined via strings, 3583 by samuelcolvin * Extend pydantic's mypy plugin to support mypy versions `0.910`, `0.920`, `0.921` & `0.930`, 3573 & 3594 by PrettyWood, christianbundy, samuelcolvin ``` ### 1.9.0a2 ``` * support generic models with discriminated union, 3551 by PrettyWood * keep old behaviour of `json()` by default, 3542 by PrettyWood * Removed typing-only `__root__` attribute from `BaseModel`, 3540 by layday * Build Python 3.10 wheels, 3539 by mbachry * Fix display of `extra` fields with model `__repr__`, 3234 by cocolman * models copied via `Config.copy_on_model_validation` always have all fields, 3201 by PrettyWood * nested ORM from nested dictionaries, 3182 by PrettyWood * fix link to discriminated union section by PrettyWood ``` ### 1.9.0a1 ``` * Add support for `Decimal`-specific validation configurations in `Field()`, additionally to using `condecimal()`, to allow better support from editors and tooling, 3507 by tiangolo * Add `arm64` binaries suitable for MacOS with an M1 CPU to PyPI, 3498 by samuelcolvin * Fix issue where `None` was considered invalid when using a `Union` type containing `Any` or `object`, 3444 by tharradine * When generating field schema, pass optional `field` argument (of type `pydantic.fields.ModelField`) to `__modify_schema__()` if present, 3434 by jasujm * Fix issue when pydantic fail to parse `typing.ClassVar` string type annotation, 3401 by uriyyo * Mention Python >= 3.9.2 as an alternative to `typing_extensions.TypedDict`, 3374 by BvB93 * Changed the validator method name in the [Custom Errors example](https://pydantic-docs.helpmanual.io/usage/models/#custom-errors) to more accurately describe what the validator is doing; changed from `name_must_contain_space` to ` value_must_equal_bar`, 3327 by michaelrios28 * Add `AmqpDsn` class, 3254 by kludex * Always use `Enum` value as default in generated JSON schema, 3190 by joaommartins * Add support for Mypy 0.920, 3175 by christianbundy * `validate_arguments` now supports `extra` customization (used to always be `Extra.forbid`), 3161 by PrettyWood * Complex types can be set by nested environment variables, 3159 by Air-Mark * Fix mypy plugin to collect fields based on `pydantic.utils.is_valid_field` so that it ignores untyped private variables, 3146 by hi-ogawa * fix `validate_arguments` issue with `Config.validate_all`, 3135 by PrettyWood * avoid dict coercion when using dict subclasses as field type, 3122 by PrettyWood * add support for `object` type, 3062 by PrettyWood * Updates pydantic dataclasses to keep `_special` properties on parent classes, 3043 by zulrang * Add a `TypedDict` class for error objects, 3038 by matthewhughes934 * Fix support for using a subclass of an annotation as a default, 3018 by JacobHayes * make `create_model_from_typeddict` mypy compliant, 3008 by PrettyWood * Make multiple inheritance work when using `PrivateAttr`, 2989 by hmvp * Parse environment variables as JSON, if they have a `Union` type with a complex subfield, 2936 by cbartz * Prevent `StrictStr` permitting `Enum` values where the enum inherits from `str`, 2929 by samuelcolvin * Make `SecretsSettingsSource` parse values being assigned to fields of complex types when sourced from a secrets file, just as when sourced from environment variables, 2917 by davidmreed * add a dark mode to _pydantic_ documentation, 2913 by gbdlin * Make `pydantic-mypy` plugin compatible with `pyproject.toml` configuration, consistent with `mypy` changes. See the [doc](https://pydantic-docs.helpmanual.io/mypy_plugin/#configuring-the-plugin) for more information, 2908 by jrwalk * add Python 3.10 support, 2885 by PrettyWood * Correctly parse generic models with `Json[T]`, 2860 by geekingfrog * Update contrib docs re: Python version to use for building docs, 2856 by paxcodes * Clarify documentation about _pydantic_'s support for custom validation and strict type checking, despite _pydantic_ being primarily a parsing library, 2855 by paxcodes * Fix schema generation for `Deque` fields, 2810 by sergejkozin * fix an edge case when mixing constraints and `Literal`, 2794 by PrettyWood * Fix postponed annotation resolution for `NamedTuple` and `TypedDict` when they're used directly as the type of fields within Pydantic models, 2760 by jameysharp * Fix bug when `mypy` plugin fails on `construct` method call for `BaseSettings` derived classes, 2753 by uriyyo * Add function overloading for a `pydantic.create_model` function, 2748 by uriyyo * Fix mypy plugin issue with self field declaration, 2743 by uriyyo * The colon at the end of the line "The fields which were supplied when user was initialised:" suggests that the code following it is related. Changed it to a period, 2733 by krisaoe * Renamed variable `schema` to `schema_` to avoid shadowing of global variable name, 2724 by shahriyarr * Add support for autocomplete in VS Code via `__dataclass_transform__`, 2721 by tiangolo * add missing type annotations in `BaseConfig` and handle `max_length = 0`, 2719 by PrettyWood * Change `orm_mode` checking to allow recursive ORM mode parsing with dicts, 2718 by nuno-andre * Add episode 313 of the *Talk Python To Me* podcast, where Michael Kennedy and Samuel Colvin discuss *pydantic*, to the docs, 2712 by RatulMaharaj * fix JSON schema generation when a field is of type `NamedTuple` and has a default value, 2707 by PrettyWood * `Enum` fields now properly support extra kwargs in schema generation, 2697 by sammchardy * **Breaking Change, see 3780**: Make serialization of referenced pydantic models possible, 2650 by PrettyWood * Add `uniqueItems` option to `ConstrainedList`, 2618 by nuno-andre * Try to evaluate forward refs automatically at model creation, 2588 by uriyyo * Switch docs preview and coverage display to use [smokeshow](https://smokeshow.helpmanual.io/), #2580 by samuelcolvin * Add `__version__` attribute to pydantic module, 2572 by paxcodes * Add `postgresql+asyncpg`, `postgresql+pg8000`, `postgresql+psycopg2`, `postgresql+psycopg2cffi`, `postgresql+py-postgresql` and `postgresql+pygresql` schemes for `PostgresDsn`, 2567 by postgres-asyncpg * Enable the Hypothesis plugin to generate a constrained decimal when the `decimal_places` argument is specified, 2524 by cwe5590 * Allow `collections.abc.Callable` to be used as type in Python 3.9, 2519 by daviskirk * Documentation update how to custom compile pydantic when using pip install, small change in `setup.py` to allow for custom CFLAGS when compiling, 2517 by peterroelants * remove side effect of `default_factory` to run it only once even if `Config.validate_all` is set, 2515 by PrettyWood * Add lookahead to ip regexes for `AnyUrl` hosts. This allows urls with DNS labels looking like IPs to validate as they are perfectly valid host names, 2512 by sbv-csis * Set `minItems` and `maxItems` in generated JSON schema for fixed-length tuples, 2497 by PrettyWood * Add `strict` argument to `conbytes`, 2489 by koxudaxi * Support user defined generic field types in generic models, 2465 by daviskirk * Add an example and a short explanation of subclassing `GetterDict` to docs, 2463 by nuno-andre * add `KafkaDsn` type, `HttpUrl` now has default port 80 for http and 443 for https, 2447 by MihanixA * Add `PastDate` and `FutureDate` types, 2425 by Kludex * Support generating schema for `Generic` fields with subtypes, 2375 by maximberg * fix(encoder): serialize `NameEmail` to str, 2341 by alecgerona * add `Config.smart_union` to prevent coercion in `Union` if possible, see [the doc](https://pydantic-docs.helpmanual.io/usage/model_config/#smart-union) for more information, 2092 by PrettyWood * Add ability to use `typing.Counter` as a model field type, 2060 by uriyyo * Add parameterised subclasses to `__bases__` when constructing new parameterised classes, so that `A <: B => A[int] <: B[int]`, 2007 by diabolo-dan * Create `FileUrl` type that allows URLs that conform to [RFC 8089](https://tools.ietf.org/html/rfc8089#section-2). Add `host_required` parameter, which is `True` by default (`AnyUrl` and subclasses), `False` in `RedisDsn`, `FileUrl`, 1983 by vgerak * add `confrozenset()`, analogous to `conset()` and `conlist()`, 1897 by PrettyWood * stop calling parent class `root_validator` if overridden, 1895 by PrettyWood * Add `repr` (defaults to `True`) parameter to `Field`, to hide it from the default representation of the `BaseModel`, 1831 by fnep * Accept empty query/fragment URL parts, 1807 by xavier ``` ### 1.8.2 ``` !!! warning A security vulnerability, level "moderate" is fixed in v1.8.2. Please upgrade **ASAP**. See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh) * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')` (or their negative values) does not cause an infinite loop, see security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh) * fix schema generation with Enum by generating a valid name, 2575 by PrettyWood * fix JSON schema generation with a `Literal` of an enum member, 2536 by PrettyWood * Fix bug with configurations declarations that are passed as keyword arguments during class creation, 2532 by uriyyo * Allow passing `json_encoders` in class kwargs, 2521 by layday * support arbitrary types with custom `__eq__`, 2483 by PrettyWood * support `Annotated` in `validate_arguments` and in generic models with Python 3.9, 2483 by PrettyWood ``` ### 1.8.1 ``` Bug fixes for regressions and new features from `v1.8` * allow elements of `Config.field` to update elements of a `Field`, 2461 by samuelcolvin * fix validation with a `BaseModel` field and a custom root type, 2449 by PrettyWood * expose `Pattern` encoder to `fastapi`, 2444 by PrettyWood * enable the Hypothesis plugin to generate a constrained float when the `multiple_of` argument is specified, 2442 by tobi-lipede-oodle * Avoid `RecursionError` when using some types like `Enum` or `Literal` with generic models, 2436 by PrettyWood * do not overwrite declared `__hash__` in subclasses of a model, 2422 by PrettyWood * fix `mypy` complaints on `Path` and `UUID` related custom types, 2418 by PrettyWood * Support properly variable length tuples of compound types, 2416 by PrettyWood ``` ### 1.8 ``` Thank you to pydantic's sponsors: jorgecarleitao, BCarley, chdsbd, tiangolo, matin, linusg, kevinalh, koxudaxi, timdrijvers, mkeen, meadsteve, ginomempin, primer-io, and-semakin, tomthorogood, AjitZK, westonsteimel, Mazyod, christippett, CarlosDomingues, Kludex, r-m-n for their kind support. Highlights * [Hypothesis plugin](https://pydantic-docs.helpmanual.io/hypothesis_plugin/) for testing, #2097 by Zac-HD * support for [`NamedTuple` and `TypedDict`](https://pydantic-docs.helpmanual.io/usage/types/#annotated-types), 2216 by PrettyWood * Support [`Annotated` hints on model fields](https://pydantic-docs.helpmanual.io/usage/schema/#typingannotated-fields), 2147 by JacobHayes * [`frozen` parameter on `Config`](https://pydantic-docs.helpmanual.io/usage/model_config/) to allow models to be hashed, #1880 by rhuille Changes * **Breaking Change**, remove old deprecation aliases from v1, 2415 by samuelcolvin: * remove notes on migrating to v1 in docs * remove `Schema` which was replaced by `Field` * remove `Config.case_insensitive` which was replaced by `Config.case_sensitive` (default `False`) * remove `Config.allow_population_by_alias` which was replaced by `Config.allow_population_by_field_name` * remove `model.fields` which was replaced by `model.__fields__` * remove `model.to_string()` which was replaced by `str(model)` * remove `model.__values__` which was replaced by `model.__dict__` * **Breaking Change:** always validate only first sublevel items with `each_item`. There were indeed some edge cases with some compound types where the validated items were the last sublevel ones, 1933 by PrettyWood * Update docs extensions to fix local syntax highlighting, 2400 by daviskirk * fix: allow `utils.lenient_issubclass` to handle `typing.GenericAlias` objects like `list[str]` in Python >= 3.9, 2399 by daviskirk * Improve field declaration for _pydantic_ `dataclass` by allowing the usage of _pydantic_ `Field` or `'metadata'` kwarg of `dataclasses.field`, 2384 by PrettyWood * Making `typing-extensions` a required dependency, 2368 by samuelcolvin * Make `resolve_annotations` more lenient, allowing for missing modules, 2363 by samuelcolvin * Allow configuring models through class kwargs, 2356 by Bobronium * Prevent `Mapping` subclasses from always being coerced to `dict`, 2325 by ofek * fix: allow `None` for type `Optional[conset / conlist]`, 2320 by PrettyWood * Support empty tuple type, 2318 by PrettyWood * fix: `python_requires` metadata to require >=3.6.1, 2306 by hukkinj1 * Properly encode `Decimal` with, or without any decimal places, 2293 by hultner * fix: update `__fields_set__` in `BaseModel.copy(update=…)`, 2290 by PrettyWood * fix: keep order of fields with `BaseModel.construct()`, 2281 by PrettyWood * Support generating schema for Generic fields, 2262 by maximberg * Fix `validate_decorator` so `**kwargs` doesn't exclude values when the keyword has the same name as the `*args` or `**kwargs` names, 2251 by cybojenix * Prevent overriding positional arguments with keyword arguments in `validate_arguments`, as per behaviour with native functions, 2249 by cybojenix * add documentation for `con*` type functions, 2242 by tayoogunbiyi * Support custom root type (aka `__root__`) when using `parse_obj()` with nested models, 2238 by PrettyWood * Support custom root type (aka `__root__`) with `from_orm()`, 2237 by PrettyWood * ensure cythonized functions are left untouched when creating models, based on 1944 by kollmats, 2228 by samuelcolvin * Resolve forward refs for stdlib dataclasses converted into _pydantic_ ones, 2220 by PrettyWood * Add support for `NamedTuple` and `TypedDict` types. Those two types are now handled and validated when used inside `BaseModel` or _pydantic_ `dataclass`. Two utils are also added `create_model_from_namedtuple` and `create_model_from_typeddict`, 2216 by PrettyWood * Do not ignore annotated fields when type is `Union[Type[...], ...]`, 2213 by PrettyWood * Raise a user-friendly `TypeError` when a `root_validator` does not return a `dict` (e.g. `None`), 2209 by masalim2 * Add a `FrozenSet[str]` type annotation to the `allowed_schemes` argument on the `strict_url` field type, 2198 by Midnighter * add `allow_mutation` constraint to `Field`, 2195 by sblack-usu * Allow `Field` with a `default_factory` to be used as an argument to a function decorated with `validate_arguments`, 2176 by thomascobb * Allow non-existent secrets directory by only issuing a warning, 2175 by davidolrik * fix URL regex to parse fragment without query string, 2168 by andrewmwhite * fix: ensure to always return one of the values in `Literal` field type, 2166 by PrettyWood * Support `typing.Annotated` hints on model fields. A `Field` may now be set in the type hint with `Annotated[..., Field(...)`; all other annotations are ignored but still visible with `get_type_hints(..., include_extras=True)`, 2147 by JacobHayes * Added `StrictBytes` type as well as `strict=False` option to `ConstrainedBytes`, 2136 by rlizzo * added `Config.anystr_lower` and `to_lower` kwarg to `constr` and `conbytes`, 2134 by tayoogunbiyi * Support plain `typing.Tuple` type, 2132 by PrettyWood * Add a bound method `validate` to functions decorated with `validate_arguments` to validate parameters without actually calling the function, 2127 by PrettyWood * Add the ability to customize settings sources (add / disable / change priority order), 2107 by kozlek * Fix mypy complaints about most custom _pydantic_ types, 2098 by PrettyWood * Add a [Hypothesis](https://hypothesis.readthedocs.io/) plugin for easier [property-based testing](https://increment.com/testing/in-praise-of-property-based-testing/) with Pydantic's custom types - [usage details here](https://pydantic-docs.helpmanual.io/hypothesis_plugin/), #2097 by Zac-HD * add validator for `None`, `NoneType` or `Literal[None]`, 2095 by PrettyWood * Handle properly fields of type `Callable` with a default value, 2094 by PrettyWood * Updated `create_model` return type annotation to return type which inherits from `__base__` argument, 2071 by uriyyo * Add merged `json_encoders` inheritance, 2064 by art049 * allow overwriting `ClassVar`s in sub-models without having to re-annotate them, 2061 by layday * add default encoder for `Pattern` type, 2045 by PrettyWood * Add `NonNegativeInt`, `NonPositiveInt`, `NonNegativeFloat`, `NonPositiveFloat`, 1975 by mdavis-xyz * Use % for percentage in string format of colors, 1960 by EdwardBetts * Fixed issue causing `KeyError` to be raised when building schema from multiple `BaseModel` with the same names declared in separate classes, 1912 by JSextonn * Add `rediss` (Redis over SSL) protocol to `RedisDsn` Allow URLs without `user` part (e.g., `rediss://:passlocalhost`), 1911 by TrDex * Add a new `frozen` boolean parameter to `Config` (default: `False`). Setting `frozen=True` does everything that `allow_mutation=False` does, and also generates a `__hash__()` method for the model. This makes instances of the model potentially hashable if all the attributes are hashable, 1880 by rhuille * fix schema generation with multiple Enums having the same name, 1857 by PrettyWood * Added support for 13/19 digits VISA credit cards in `PaymentCardNumber` type, 1416 by AlexanderSov * fix: prevent `RecursionError` while using recursive `GenericModel`s, 1370 by xppt * use `enum` for `typing.Literal` in JSON schema, 1350 by PrettyWood * Fix: some recursive models did not require `update_forward_refs` and silently behaved incorrectly, 1201 by PrettyWood * Fix bug where generic models with fields where the typevar is nested in another type `a: List[T]` are considered to be concrete. This allows these models to be subclassed and composed as expected, 947 by daviskirk * Add `Config.copy_on_model_validation` flag. When set to `False`, _pydantic_ will keep models used as fields untouched on validation instead of reconstructing (copying) them, 265 by PrettyWood ``` ### 1.7.4 ``` * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')` (or their negative values) does not cause an infinite loop, See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh) ``` ### 1.7.3 ``` Thank you to pydantic's sponsors: timdrijvers, BCarley, chdsbd, tiangolo, matin, linusg, kevinalh, jorgecarleitao, koxudaxi, primer-api, mkeen, meadsteve for their kind support. * fix: set right default value for required (optional) fields, 2142 by PrettyWood * fix: support `underscore_attrs_are_private` with generic models, 2138 by PrettyWood * fix: update all modified field values in `root_validator` when `validate_assignment` is on, 2116 by PrettyWood * Allow pickling of `pydantic.dataclasses.dataclass` dynamically created from a built-in `dataclasses.dataclass`, 2111 by aimestereo * Fix a regression where Enum fields would not propagate keyword arguments to the schema, 2109 by bm424 * Ignore `__doc__` as private attribute when `Config.underscore_attrs_are_private` is set, 2090 by PrettyWood ``` ### 1.7.2 ``` * fix slow `GenericModel` concrete model creation, allow `GenericModel` concrete name reusing in module, 2078 by Bobronium * keep the order of the fields when `validate_assignment` is set, 2073 by PrettyWood * forward all the params of the stdlib `dataclass` when converted into _pydantic_ `dataclass`, 2065 by PrettyWood ``` ### 1.7.1 ``` Thank you to pydantic's sponsors: timdrijvers, BCarley, chdsbd, tiangolo, matin, linusg, kevinalh, jorgecarleitao, koxudaxi, primer-api, mkeen for their kind support. * fix annotation of `validate_arguments` when passing configuration as argument, 2055 by layday * Fix mypy assignment error when using `PrivateAttr`, 2048 by aphedges * fix `underscore_attrs_are_private` causing `TypeError` when overriding `__init__`, 2047 by samuelcolvin * Fixed regression introduced in v1.7 involving exception handling in field validators when `validate_assignment=True`, 2044 by johnsabath * fix: _pydantic_ `dataclass` can inherit from stdlib `dataclass` and `Config.arbitrary_types_allowed` is supported, 2042 by PrettyWood ``` ### 1.7 ``` Thank you to pydantic's sponsors: timdrijvers, BCarley, chdsbd, tiangolo, matin, linusg, kevinalh, jorgecarleitao, koxudaxi, primer-api for their kind support. Highlights * Python 3.9 support, thanks PrettyWood * [Private model attributes](https://pydantic-docs.helpmanual.io/usage/models/#private-model-attributes), thanks Bobronium * ["secrets files" support in `BaseSettings`](https://pydantic-docs.helpmanual.io/usage/settings/#secret-support), thanks mdgilene * [convert stdlib dataclasses to pydantic dataclasses and use stdlib dataclasses in models](https://pydantic-docs.helpmanual.io/usage/dataclasses/#stdlib-dataclasses-and-pydantic-dataclasses), thanks PrettyWood Changes * **Breaking Change:** remove `__field_defaults__`, add `default_factory` support with `BaseModel.construct`. Use `.get_default()` method on fields in `__fields__` attribute instead, 1732 by PrettyWood * Rearrange CI to run linting as a separate job, split install recipes for different tasks, 2020 by samuelcolvin * Allows subclasses of generic models to make some, or all, of the superclass's type parameters concrete, while also defining new type parameters in the subclass, 2005 by choogeboom * Call validator with the correct `values` parameter type in `BaseModel.__setattr__`, when `validate_assignment = True` in model config, 1999 by me-ransh * Force `fields.Undefined` to be a singleton object, fixing inherited generic model schemas, 1981 by daviskirk * Include tests in source distributions, 1976 by sbraz * Add ability to use `min_length/max_length` constraints with secret types, 1974 by uriyyo * Also check `root_validators` when `validate_assignment` is on, 1971 by PrettyWood * Fix const validators not running when custom validators are present, 1957 by hmvp * add `deque` to field types, 1935 by wozniakty * add basic support for Python 3.9, 1832 by PrettyWood * Fix typo in the anchor of exporting_models.mdmodelcopy and incorrect description, 1821 by KimMachineGun * Added ability for `BaseSettings` to read "secret files", 1820 by mdgilene * add `parse_raw_as` utility function, 1812 by PrettyWood * Support home directory relative paths for `dotenv` files (e.g. `~/.env`), 1803 by PrettyWood * Clarify documentation for `parse_file` to show that the argument should be a file *path* not a file-like object, 1794 by mdavis-xyz * Fix false positive from mypy plugin when a class nested within a `BaseModel` is named `Model`, 1770 by selimb * add basic support of Pattern type in schema generation, 1767 by PrettyWood * Support custom title, description and default in schema of enums, 1748 by PrettyWood * Properly represent `Literal` Enums when `use_enum_values` is True, 1747 by noelevans * Allows timezone information to be added to strings to be formatted as time objects. Permitted formats are `Z` for UTC or an offset for absolute positive or negative time shifts. Or the timezone data can be omitted, 1744 by noelevans * Add stub `__init__` with Python 3.6 signature for `ForwardRef`, 1738 by sirtelemak * Fix behaviour with forward refs and optional fields in nested models, 1736 by PrettyWood * add `Enum` and `IntEnum` as valid types for fields, 1735 by PrettyWood * Change default value of `__module__` argument of `create_model` from `None` to `'pydantic.main'`. Set reference of created concrete model to it's module to allow pickling (not applied to models created in functions), 1686 by Bobronium * Add private attributes support, 1679 by Bobronium * add `config` to `validate_arguments`, 1663 by samuelcolvin * Allow descendant Settings models to override env variable names for the fields defined in parent Settings models with `env` in their `Config`. Previously only `env_prefix` configuration option was applicable, 1561 by ojomio * Support `ref_template` when creating schema `$ref`s, 1479 by kilo59 * Add a `__call__` stub to `PyObject` so that mypy will know that it is callable, 1352 by brianmaissy * `pydantic.dataclasses.dataclass` decorator now supports built-in `dataclasses.dataclass`. It is hence possible to convert an existing `dataclass` easily to add *pydantic* validation. Moreover nested dataclasses are also supported, 744 by PrettyWood ``` ### 1.6.2 ``` * **Security fix:** Fix `date` and `datetime` parsing so passing either `'infinity'` or `float('inf')` (or their negative values) does not cause an infinite loop, See security advisory [CVE-2021-29510](https://github.com/pydantic/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh) ``` ### 1.6.1 ``` * fix validation and parsing of nested models with `default_factory`, 1710 by PrettyWood ``` ### 1.6 ``` Thank you to pydantic's sponsors: matin, tiangolo, chdsbd, jorgecarleitao, and 1 anonymous sponsor for their kind support. * Modify validators for `conlist` and `conset` to not have `always=True`, 1682 by samuelcolvin * add port check to `AnyUrl` (can't exceed 65536) ports are 16 insigned bits: `0 <= port <= 2**16-1` src: [rfc793 header format](https://tools.ietf.org/html/rfc793#section-3.1), 1654 by flapili * Document default `regex` anchoring semantics, 1648 by yurikhan * Use `chain.from_iterable` in class_validators.py. This is a faster and more idiomatic way of using `itertools.chain`. Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never stored as a huge list. This can save on both runtime and memory space, 1642 by cool-RR * Add `conset()`, analogous to `conlist()`, 1623 by patrickkwang * make *pydantic* errors (un)pickable, 1616 by PrettyWood * Allow custom encoding for `dotenv` files, 1615 by PrettyWood * Ensure `SchemaExtraCallable` is always defined to get type hints on BaseConfig, 1614 by PrettyWood * Update datetime parser to support negative timestamps, 1600 by mlbiche * Update mypy, remove `AnyType` alias for `Type[Any]`, 1598 by samuelcolvin * Adjust handling of root validators so that errors are aggregated from _all_ failing root validators, instead of reporting on only the first root validator to fail, 1586 by beezee * Make `__modify_schema__` on Enums apply to the enum schema rather than fields that use the enum, 1581 by therefromhere * Fix behavior of `__all__` key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, 1579 by xspirus * Subclass validators do not run when referencing a `List` field defined in a parent class when `each_item=True`. Added an example to the docs illustrating this, 1566 by samueldeklund * change `schema.field_class_to_schema` to support `frozenset` in schema, 1557 by wangpeibao * Call `__modify_schema__` only for the field schema, 1552 by PrettyWood * Move the assignment of `field.validate_always` in `fields.py` so the `always` parameter of validators work on inheritance, 1545 by dcHHH * Added support for UUID instantiation through 16 byte strings such as `b'\x12\x34\x56\x78' * 4`. This was done to support `BINARY(16)` columns in sqlalchemy, 1541 by shawnwall * Add a test assertion that `default_factory` can return a singleton, 1523 by therefromhere * Add `NameEmail.__eq__` so duplicate `NameEmail` instances are evaluated as equal, 1514 by stephen-bunn * Add datamodel-code-generator link in pydantic document site, 1500 by koxudaxi * Added a "Discussion of Pydantic" section to the documentation, with a link to "Pydantic Introduction" video by Alexander Hultnér, 1499 by hultner * Avoid some side effects of `default_factory` by calling it only once if possible and by not setting a default value in the schema, 1491 by PrettyWood * Added docs about dumping dataclasses to JSON, 1487 by mikegrima * Make `BaseModel.__signature__` class-only, so getting `__signature__` from model instance will raise `AttributeError`, 1466 by Bobronium * include `'format': 'password'` in the schema for secret types, 1424 by atheuz * Modify schema constraints on `ConstrainedFloat` so that `exclusiveMinimum` and minimum are not included in the schema if they are equal to `-math.inf` and `exclusiveMaximum` and `maximum` are not included if they are equal to `math.inf`, 1417 by vdwees * Squash internal `__root__` dicts in `.dict()` (and, by extension, in `.json()`), 1414 by patrickkwang * Move `const` validator to post-validators so it validates the parsed value, 1410 by selimb * Fix model validation to handle nested literals, e.g. `Literal['foo', Literal['bar']]`, 1364 by DBCerigo * Remove `user_required = True` from `RedisDsn`, neither user nor password are required, 1275 by samuelcolvin * Remove extra `allOf` from schema for fields with `Union` and custom `Field`, 1209 by mostaphaRoudsari * Updates OpenAPI schema generation to output all enums as separate models. Instead of inlining the enum values in the model schema, models now use a `$ref` property to point to the enum definition, 1173 by calvinwyoung ``` ### 1.5.1 ``` * Signature generation with `extra: allow` never uses a field name, 1418 by prettywood * Avoid mutating `Field` default value, 1412 by prettywood ``` ### 1.5 ``` * Make includes/excludes arguments for `.dict()`, `._iter()`, ..., immutable, 1404 by AlexECX * Always use a field's real name with includes/excludes in `model._iter()`, regardless of `by_alias`, 1397 by AlexECX * Update constr regex example to include start and end lines, 1396 by lmcnearney * Confirm that shallow `model.copy()` does make a shallow copy of attributes, 1383 by samuelcolvin * Renaming `model_name` argument of `main.create_model()` to `__model_name` to allow using `model_name` as a field name, 1367 by kittipatv * Replace raising of exception to silent passing for non-Var attributes in mypy plugin, 1345 by b0g3r * Remove `typing_extensions` dependency for Python 3.8, 1342 by prettywood * Make `SecretStr` and `SecretBytes` initialization idempotent, 1330 by atheuz * document making secret types dumpable using the json method, 1328 by atheuz * Move all testing and build to github actions, add windows and macos binaries, thank you StephenBrown2 for much help, 1326 by samuelcolvin * fix card number length check in `PaymentCardNumber`, `PaymentCardBrand` now inherits from `str`, 1317 by samuelcolvin * Have `BaseModel` inherit from `Representation` to make mypy happy when overriding `__str__`, 1310 by FuegoFro * Allow `None` as input to all optional list fields, 1307 by prettywood * Add `datetime` field to `default_factory` example, 1301 by StephenBrown2 * Allow subclasses of known types to be encoded with superclass encoder, 1291 by StephenBrown2 * Exclude exported fields from all elements of a list/tuple of submodels/dicts with `'__all__'`, 1286 by masalim2 * Add pydantic.color.Color objects as available input for Color fields, 1258 by leosussan * In examples, type nullable fields as `Optional`, so that these are valid mypy annotations, 1248 by kokes * Make `pattern_validator()` accept pre-compiled `Pattern` objects. Fix `str_validator()` return type to `str`, 1237 by adamgreg * Document how to manage Generics and inheritance, 1229 by esadruhn * `update_forward_refs()` method of BaseModel now copies `__dict__` of class module instead of modyfying it, 1228 by paul-ilyin * Support instance methods and class methods with `validate_arguments`, 1222 by samuelcolvin * Add `default_factory` argument to `Field` to create a dynamic default value by passing a zero-argument callable, 1210 by prettywood * add support for `NewType` of `List`, `Optional`, etc, 1207 by Kazy * fix mypy signature for `root_validator`, 1192 by samuelcolvin * Fixed parsing of nested 'custom root type' models, 1190 by Shados * Add `validate_arguments` function decorator which checks the arguments to a function matches type annotations, 1179 by samuelcolvin * Add `__signature__` to models, 1034 by Bobronium * Refactor `._iter()` method, 10x speed boost for `dict(model)`, 1017 by Bobronium ``` ### 1.4 ``` * **Breaking Change:** alias precedence logic changed so aliases on a field always take priority over an alias from `alias_generator` to avoid buggy/unexpected behaviour, see [here](https://pydantic-docs.helpmanual.io/usage/model_config/#alias-precedence) for details, 1178 by samuelcolvin * Add support for unicode and punycode in TLDs, 1182 by jamescurtin * Fix `cls` argument in validators during assignment, 1172 by samuelcolvin * completing Luhn algorithm for `PaymentCardNumber`, 1166 by cuencandres * add support for generics that implement `__get_validators__` like a custom data type, 1159 by tiangolo * add support for infinite generators with `Iterable`, 1152 by tiangolo * fix `url_regex` to accept schemas with `+`, `-` and `.` after the first character, 1142 by samuelcolvin * move `version_info()` to `version.py`, suggest its use in issues, 1138 by samuelcolvin * Improve pydantic import time by roughly 50% by deferring some module loading and regex compilation, 1127 by samuelcolvin * Fix `EmailStr` and `NameEmail` to accept instances of themselves in cython, 1126 by koxudaxi * Pass model class to the `Config.schema_extra` callable, 1125 by therefromhere * Fix regex for username and password in URLs, 1115 by samuelcolvin * Add support for nested generic models, 1104 by dmontagu * add `__all__` to `__init__.py` to prevent "implicit reexport" errors from mypy, 1072 by samuelcolvin * Add support for using "dotenv" files with `BaseSettings`, 1011 by acnebs ``` ### 1.3 ``` * Change `schema` and `schema_model` to handle dataclasses by using their `__pydantic_model__` feature, 792 by aviramha * Added option for `root_validator` to be skipped if values validation fails using keyword `skip_on_failure=True`, 1049 by aviramha * Allow `Config.schema_extra` to be a callable so that the generated schema can be post-processed, 1054 by selimb * Update mypy to version 0.750, 1057 by dmontagu * Trick Cython into allowing str subclassing, 1061 by skewty * Prevent type attributes being added to schema unless the attribute `__schema_attributes__` is `True`, 1064 by samuelcolvin * Change `BaseModel.parse_file` to use `Config.json_loads`, 1067 by kierandarcy * Fix for optional `Json` fields, 1073 by volker48 * Change the default number of threads used when compiling with cython to one, allow override via the `CYTHON_NTHREADS` environment variable, 1074 by samuelcolvin * Run FastAPI tests during Pydantic's CI tests, 1075 by tiangolo * My mypy strictness constraints, and associated tweaks to type annotations, 1077 by samuelcolvin * Add `__eq__` to SecretStr and SecretBytes to allow "value equals", 1079 by sbv-trueenergy * Fix schema generation for nested None case, 1088 by lutostag * Consistent checks for sequence like objects, 1090 by samuelcolvin * Fix `Config` inheritance on `BaseSettings` when used with `env_prefix`, 1091 by samuelcolvin * Fix for `__modify_schema__` when it conflicted with `field_class_to_schema*`, 1102 by samuelcolvin * docs: Fix explanation of case sensitive environment variable names when populating `BaseSettings` subclass attributes, 1105 by tribals * Rename django-rest-framework benchmark in documentation, 1119 by frankie567 ``` ### 1.2 ``` * **Possible Breaking Change:** Add support for required `Optional` with `name: Optional[AnyType] = Field(...)` and refactor `ModelField` creation to preserve `required` parameter value, 1031 by tiangolo; see [here](https://pydantic-docs.helpmanual.io/usage/models/#required-optional-fields) for details * Add benchmarks for `cattrs`, 513 by sebastianmika * Add `exclude_none` option to `dict()` and friends, 587 by niknetniko * Add benchmarks for `valideer`, 670 by gsakkis * Add `parse_obj_as` and `parse_file_as` functions for ad-hoc parsing of data into arbitrary pydantic-compatible types, 934 by dmontagu * Add `allow_reuse` argument to validators, thus allowing validator reuse, 940 by dmontagu * Add support for mapping types for custom root models, 958 by dmontagu * Mypy plugin support for dataclasses, 966 by koxudaxi * Add support for dataclasses default factory, 968 by ahirner * Add a `ByteSize` type for converting byte string (`1GB`) to plain bytes, 977 by dgasmith * Fix mypy complaint about `root_validator(pre=True)`, 984 by samuelcolvin * Add manylinux binaries for Python 3.8 to pypi, also support manylinux2010, 994 by samuelcolvin * Adds ByteSize conversion to another unit, 995 by dgasmith * Fix `__str__` and `__repr__` inheritance for models, 1022 by samuelcolvin * add testimonials section to docs, 1025 by sullivancolin * Add support for `typing.Literal` for Python 3.8, 1026 by dmontagu ``` ### 1.1.1 ``` * Fix bug where use of complex fields on sub-models could cause fields to be incorrectly configured, 1015 by samuelcolvin ``` ### 1.1 ``` * Add a mypy plugin for type checking `BaseModel.__init__` and more, 722 by dmontagu * Change return type typehint for `GenericModel.__class_getitem__` to prevent PyCharm warnings, 936 by dmontagu * Fix usage of `Any` to allow `None`, also support `TypeVar` thus allowing use of un-parameterised collection types e.g. `Dict` and `List`, 962 by samuelcolvin * Set `FieldInfo` on subfields to fix schema generation for complex nested types, 965 by samuelcolvin ``` ### 1.0 ``` * **Breaking Change:** deprecate the `Model.fields` property, use `Model.__fields__` instead, 883 by samuelcolvin * **Breaking Change:** Change the precedence of aliases so child model aliases override parent aliases, including using `alias_generator`, 904 by samuelcolvin * **Breaking change:** Rename `skip_defaults` to `exclude_unset`, and add ability to exclude actual defaults, 915 by dmontagu * Add `**kwargs` to `pydantic.main.ModelMetaclass.__new__` so `__init_subclass__` can take custom parameters on extended `BaseModel` classes, 867 by retnikt * Fix field of a type that has a default value, 880 by koxudaxi * Use `FutureWarning` instead of `DeprecationWarning` when `alias` instead of `env` is used for settings models, 881 by samuelcolvin * Fix issue with `BaseSettings` inheritance and `alias` getting set to `None`, 882 by samuelcolvin * Modify `__repr__` and `__str__` methods to be consistent across all public classes, add `__pretty__` to support python-devtools, 884 by samuelcolvin * deprecation warning for `case_insensitive` on `BaseSettings` config, 885 by samuelcolvin * For `BaseSettings` merge environment variables and in-code values recursively, as long as they create a valid object when merged together, to allow splitting init arguments, 888 by idmitrievsky * change secret types example, 890 by ashears * Change the signature of `Model.construct()` to be more user-friendly, document `construct()` usage, 898 by samuelcolvin * Add example for the `construct()` method, 907 by ashears * Improve use of `Field` constraints on complex types, raise an error if constraints are not enforceable, also support tuples with an ellipsis `Tuple[X, ...]`, `Sequence` and `FrozenSet` in schema, 909 by samuelcolvin * update docs for bool missing valid value, 911 by trim21 * Better `str`/`repr` logic for `ModelField`, 912 by samuelcolvin * Fix `ConstrainedList`, update schema generation to reflect `min_items` and `max_items` `Field()` arguments, 917 by samuelcolvin * Allow abstracts sets (eg. dict keys) in the `include` and `exclude` arguments of `dict()`, 921 by samuelcolvin * Fix JSON serialization errors on `ValidationError.json()` by using `pydantic_encoder`, 922 by samuelcolvin * Clarify usage of `remove_untouched`, improve error message for types with no validators, 926 by retnikt ``` ### 1.0b2 ``` * Mark `StrictBool` typecheck as `bool` to allow for default values without mypy errors, 690 by dmontagu * Transfer the documentation build from sphinx to mkdocs, re-write much of the documentation, 856 by samuelcolvin * Add support for custom naming schemes for `GenericModel` subclasses, 859 by dmontagu * Add `if TYPE_CHECKING:` to the excluded lines for test coverage, 874 by dmontagu * Rename `allow_population_by_alias` to `allow_population_by_field_name`, remove unnecessary warning about it, 875 by samuelcolvin ``` ### 1.0b1 ``` * **Breaking Change:** rename `Schema` to `Field`, make it a function to placate mypy, 577 by samuelcolvin * **Breaking Change:** modify parsing behavior for `bool`, 617 by dmontagu * **Breaking Change:** `get_validators` is no longer recognised, use `__get_validators__`. `Config.ignore_extra` and `Config.allow_extra` are no longer recognised, use `Config.extra`, 720 by samuelcolvin * **Breaking Change:** modify default config settings for `BaseSettings`; `case_insensitive` renamed to `case_sensitive`, default changed to `case_sensitive = False`, `env_prefix` default changed to `''` - e.g. no prefix, 721 by dmontagu * **Breaking change:** Implement `root_validator` and rename root errors from `__obj__` to `__root__`, 729 by samuelcolvin * **Breaking Change:** alter the behaviour of `dict(model)` so that sub-models are nolonger converted to dictionaries, 733 by samuelcolvin * **Breaking change:** Added `initvars` support to `post_init_post_parse`, 748 by Raphael-C-Almeida * **Breaking Change:** Make `BaseModel.json()` only serialize the `__root__` key for models with custom root, 752 by dmontagu * **Breaking Change:** complete rewrite of `URL` parsing logic, 755 by samuelcolvin * **Breaking Change:** preserve superclass annotations for field-determination when not provided in subclass, 757 by dmontagu * **Breaking Change:** `BaseSettings` now uses the special `env` settings to define which environment variables to read, not aliases, 847 by samuelcolvin * add support for `assert` statements inside validators, 653 by abdusco * Update documentation to specify the use of `pydantic.dataclasses.dataclass` and subclassing `pydantic.BaseModel`, 710 by maddosaurus * Allow custom JSON decoding and encoding via `json_loads` and `json_dumps` `Config` properties, 714 by samuelcolvin * make all annotated fields occur in the order declared, 715 by dmontagu * use pytest to test `mypy` integration, 735 by dmontagu * add `__repr__` method to `ErrorWrapper`, 738 by samuelcolvin * Added support for `FrozenSet` members in dataclasses, and a better error when attempting to use types from the `typing` module that are not supported by Pydantic, 745 by djpetti * add documentation for Pycharm Plugin, 750 by koxudaxi * fix broken examples in the docs, 753 by dmontagu * moving typing related objects into `pydantic.typing`, 761 by samuelcolvin * Minor performance improvements to `ErrorWrapper`, `ValidationError` and datetime parsing, 763 by samuelcolvin * Improvements to `datetime`/`date`/`time`/`timedelta` types: more descriptive errors, change errors to `value_error` not `type_error`, support bytes, 766 by samuelcolvin * fix error messages for `Literal` types with multiple allowed values, 770 by dmontagu * Improved auto-generated `title` field in JSON schema by converting underscore to space, 772 by skewty * support `mypy --no-implicit-reexport` for dataclasses, also respect `--no-implicit-reexport` in pydantic itself, 783 by samuelcolvin * add the `PaymentCardNumber` type, 790 by matin * Fix const validations for lists, 794 by hmvp * Set `additionalProperties` to false in schema for models with extra fields disallowed, 796 by Code0x58 * `EmailStr` validation method now returns local part case-sensitive per RFC 5321, 798 by henriklindgren * Added ability to validate strictness to `ConstrainedFloat`, `ConstrainedInt` and `ConstrainedStr` and added `StrictFloat` and `StrictInt` classes, 799 by DerRidda * Improve handling of `None` and `Optional`, replace `whole` with `each_item` (inverse meaning, default `False`) on validators, 803 by samuelcolvin * add support for `Type[T]` type hints, 807 by timonbimon * Performance improvements from removing `change_exceptions`, change how pydantic error are constructed, 819 by samuelcolvin * Fix the error message arising when a `BaseModel`-type model field causes a `ValidationError` during parsing, 820 by dmontagu * allow `getter_dict` on `Config`, modify `GetterDict` to be more like a `Mapping` object and thus easier to work with, 821 by samuelcolvin * Only check `TypeVar` param on base `GenericModel` class, 842 by zpencerq * rename `Model._schema_cache` -> `Model.__schema_cache__`, `Model._json_encoder` -> `Model.__json_encoder__`, `Model._custom_root_type` -> `Model.__custom_root_type__`, 851 by samuelcolvin ``` ### 0.32.2 ``` (Docs are available [here](https://5d584fcca7c9b70007d1c997--pydantic-docs.netlify.com)) * fix `__post_init__` usage with dataclass inheritance, fix 739 by samuelcolvin * fix required fields validation on GenericModels classes, 742 by amitbl * fix defining custom `Schema` on `GenericModel` fields, 754 by amitbl ``` ### 0.32.1 ``` * do not validate extra fields when `validate_assignment` is on, 724 by YaraslauZhylko ``` ### 0.32 ``` * add model name to `ValidationError` error message, 676 by dmontagu * **breaking change**: remove `__getattr__` and rename `__values__` to `__dict__` on `BaseModel`, deprecation warning on use `__values__` attr, attributes access speed increased up to 14 times, 712 by Bobronium * support `ForwardRef` (without self-referencing annotations) in Python 3.6, 706 by koxudaxi * implement `schema_extra` in `Config` sub-class, 663 by tiangolo ``` ### 0.31.1 ``` * fix json generation for `EnumError`, 697 by dmontagu * update numerous dependencies ``` ### 0.31 ``` * better support for floating point `multiple_of` values, 652 by justindujardin * fix schema generation for `NewType` and `Literal`, 649 by dmontagu * fix `alias_generator` and field config conflict, 645 by gmetzker and 658 by Bobronium * more detailed message for `EnumError`, 673 by dmontagu * add advanced exclude support for `dict`, `json` and `copy`, 648 by Bobronium * fix bug in `GenericModel` for models with concrete parameterized fields, 672 by dmontagu * add documentation for `Literal` type, 651 by dmontagu * add `Config.keep_untouched` for custom descriptors support, 679 by Bobronium * use `inspect.cleandoc` internally to get model description, 657 by tiangolo * add `Color` to schema generation, by euri10 * add documentation for Literal type, 651 by dmontagu ``` ### 0.30.1 ``` * fix so nested classes which inherit and change `__init__` are correctly processed while still allowing `self` as a parameter, 644 by lnaden and dgasmith ``` ### 0.30 ``` * enforce single quotes in code, 612 by samuelcolvin * fix infinite recursion with dataclass inheritance and `__post_init__`, 606 by Hanaasagi * fix default values for `GenericModel`, 610 by dmontagu * clarify that self-referencing models require Python 3.7+, 616 by vlcinsky * fix truncate for types, 611 by dmontagu * add `alias_generator` support, 622 by Bobronium * fix unparameterized generic type schema generation, 625 by dmontagu * fix schema generation with multiple/circular references to the same model, 621 by tiangolo and wongpat * support custom root types, 628 by koxudaxi * support `self` as a field name in `parse_obj`, 632 by samuelcolvin ``` ### 0.29 ``` * support dataclasses.InitVar, 592 by pfrederiks * Updated documentation to elucidate the usage of `Union` when defining multiple types under an attribute's annotation and showcase how the type-order can affect marshalling of provided values, 594 by somada141 * add `conlist` type, 583 by hmvp * add support for generics, 595 by dmontagu ``` ### 0.28 ``` * fix support for JSON Schema generation when using models with circular references in Python 3.7, 572 by tiangolo * support `__post_init_post_parse__` on dataclasses, 567 by sevaho * allow dumping dataclasses to JSON, 575 by samuelcolvin and DanielOberg * ORM mode, 562 by samuelcolvin * fix `pydantic.compiled` on ipython, 573 by dmontagu and samuelcolvin * add `StrictBool` type, 579 by cazgp ``` ### 0.27 ``` * **breaking change** `_pydantic_post_init` to execute dataclass' original `__post_init__` before validation, 560 by HeavenVolkoff * fix handling of generic types without specified parameters, 550 by dmontagu * **breaking change** (maybe): this is the first release compiled with **cython**, see the docs and please submit an issue if you run into problems ``` ### 0.27.0a1 ``` * fix JSON Schema for `list`, `tuple`, and `set`, 540 by tiangolo * compiling with cython, `manylinux` binaries, some other performance improvements, 548 by samuelcolvin ``` ### 0.26 ``` * fix to schema generation for `IPvAnyAddress`, `IPvAnyInterface`, `IPvAnyNetwork` 498 by pilosus * fix variable length tuples support, 495 by pilosus * fix return type hint for `create_model`, 526 by dmontagu * **Breaking Change:** fix `.dict(skip_keys=True)` skipping values set via alias (this involves changing `validate_model()` to always returns `Tuple[Dict[str, Any], Set[str], Optional[ValidationError]]`), 517 by sommd * fix to schema generation for `IPv4Address`, `IPv6Address`, `IPv4Interface`, `IPv6Interface`, `IPv4Network`, `IPv6Network` 532 by euri10 * add `Color` type, 504 by pilosus and samuelcolvin ``` ### 0.25 ``` * Improve documentation on self-referencing models and annotations, 487 by theenglishway * fix `.dict()` with extra keys, 490 by JaewonKim * support `const` keyword in `Schema`, 434 by Sean1708 ``` ### 0.24 ``` * fix handling `ForwardRef` in sub-types, like `Union`, 464 by tiangolo * fix secret serialization, 465 by atheuz * Support custom validators for dataclasses, 454 by primal100 * fix `parse_obj` to cope with dict-like objects, 472 by samuelcolvin * fix to schema generation in nested dataclass-based models, 474 by NoAnyLove * fix `json` for `Path`, `FilePath`, and `DirectoryPath` objects, 473 by mikegoodspeed ``` ### 0.23 ``` * improve documentation for contributing section, 441 by pilosus * improve README.rst to include essential information about the package, 446 by pilosus * `IntEnum` support, 444 by potykion * fix PyObject callable value, 409 by pilosus * fix `black` deprecation warnings after update, 451 by pilosus * fix `ForwardRef` collection bug, 450 by tigerwings * Support specialized `ClassVars`, 455 by tyrylu * fix JSON serialization for `ipaddress` types, 333 by pilosus * add `SecretStr` and `SecretBytes` types, 452 by atheuz ``` ### 0.22 ``` * add `IPv{4,6,Any}Network` and `IPv{4,6,Any}Interface` types from `ipaddress` stdlib, 333 by pilosus * add docs for `datetime` types, 386 by pilosus * fix to schema generation in dataclass-based models, 408 by pilosus * fix path in nested models, 437 by kataev * add `Sequence` support, 304 by pilosus ``` ### 0.21.0 ``` * fix typo in `NoneIsNotAllowedError` message, 414 by YaraslauZhylko * add `IPvAnyAddress`, `IPv4Address` and `IPv6Address` types, 333 by pilosus ``` ### 0.20.1 ``` * fix type hints of `parse_obj` and similar methods, 405 by erosennin * fix submodel validation, 403 by samuelcolvin * correct type hints for `ValidationError.json`, 406 by layday ``` ### 0.20.0 ``` * fix tests for Python 3.8, 396 by samuelcolvin * Adds fields to the `dir` method for autocompletion in interactive sessions, 398 by dgasmith * support `ForwardRef` (and therefore `from __future__ import annotations`) with dataclasses, 397 by samuelcolvin ``` ### 0.20.0a1 ``` * **breaking change** (maybe): more sophisticated argument parsing for validators, any subset of `values`, `config` and `field` is now permitted, eg. `(cls, value, field)`, however the variadic key word argument ("`**kwargs`") **must** be called `kwargs`, 388 by samuelcolvin * **breaking change**: Adds `skip_defaults` argument to `BaseModel.dict()` to allow skipping of fields that were not explicitly set, signature of `Model.construct()` changed, 389 by dgasmith * add `py.typed` marker file for PEP-561 support, 391 by je-l * Fix `extra` behaviour for multiple inheritance/mix-ins, 394 by YaraslauZhylko ``` ### 0.19.0 ``` * Support `Callable` type hint, fix 279 by proofit404 * Fix schema for fields with `validator` decorator, fix 375 by tiangolo * Add `multiple_of` constraint to `ConstrainedDecimal`, `ConstrainedFloat`, `ConstrainedInt` and their related types `condecimal`, `confloat`, and `conint` 371, thanks StephenBrown2 * Deprecated `ignore_extra` and `allow_extra` Config fields in favor of `extra`, 352 by liiight * Add type annotations to all functions, test fully with mypy, 373 by samuelcolvin * fix for 'missing' error with `validate_all` or `validate_always`, 381 by samuelcolvin * Change the second/millisecond watershed for date/datetime parsing to `2e10`, 385 by samuelcolvin ``` ### 0.18.2 ``` * Fix to schema generation with `Optional` fields, fix 361 by samuelcolvin ``` ### 0.18.1 ``` * add `ConstrainedBytes` and `