pydantic
Data validation and settings management using Python type hinting.
Fast and extensible, pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.6+; validate it with pydantic.
Help
See documentation for more details.
Installation
Install using pip install -U pydantic or conda install pydantic -c conda-forge.
For more installation options to make pydantic even faster,
see the Install section in the documentation.
A Simple Example
from datetime import datetime
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
name = 'John Doe'
signup_ts: datetime = None
friends: List[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123
Contributing
For guidance on setting up a development environment and how to make a contribution to pydantic, see Contributing to Pydantic.
v1.3 (2019-12-21)
- Change
schemaandschema_modelto handle dataclasses by using their__pydantic_model__feature, #792 by @aviramha - Added option for
root_validatorto be skipped if values validation fails using keywordskip_on_failure=True, #1049 by @aviramha - Allow
Config.schema_extrato 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__isTrue, #1064 by @samuelcolvin - Change
BaseModel.parse_fileto useConfig.json_loads, #1067 by @kierandarcy - Fix for optional
Jsonfields, #1073 by @volker48 - Change the default number of threads used when compiling with cython to one,
allow override via the
CYTHON_NTHREADSenvironment 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
Configinheritance onBaseSettingswhen used withenv_prefix, #1091 by @samuelcolvin - Fix for
__modify_schema__when it conflicted withfield_class_to_schema*, #1102 by @samuelcolvin - docs: Fix explanation of case sensitive environment variable names when populating
BaseSettingssubclass attributes, #1105 by @tribals - Rename django-rest-framework benchmark in documentation, #1119 by @frankie567
v1.2 (2019-11-28)
- Possible Breaking Change: Add support for required
Optionalwithname: Optional[AnyType] = Field(...)and refactorModelFieldcreation to preserverequiredparameter value, #1031 by @tiangolo; see here for details - Add benchmarks for
cattrs, #513 by @sebastianmika - Add
exclude_noneoption todict()and friends, #587 by @niknetniko - Add benchmarks for
valideer, #670 by @gsakkis - Add
parse_obj_asandparse_file_asfunctions for ad-hoc parsing of data into arbitrary pydantic-compatible types, #934 by @dmontagu - Add
allow_reuseargument 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
ByteSizetype 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.Literalfor Python 3.8, #1026 by @dmontagu
v1.1.1 (2019-11-20)
- Fix bug where use of complex fields on sub-models could cause fields to be incorrectly configured, #1015 by @samuelcolvin
v1.1 (2019-11-07)
- 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
Anyto allowNone, also supportTypeVarthus allowing use of un-parameterised collection types e.g.DictandList, #962 by @samuelcolvin - Set
FieldInfoon subfields to fix schema generation for complex nested types, #965 by @samuelcolvin
v1.0 (2019-10-23)
- Breaking Change: deprecate the
Model.fieldsproperty, useModel.__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_defaultstoexclude_unset, and add ability to exclude actual defaults, #915 by @dmontagu - Add
**kwargstopydantic.main.ModelMetaclass.__new__so__init_subclass__can take custom parameters on extendedBaseModelclasses, #867 by @retnikt - Fix field of a type that has a default value, #880 by @koxudaxi
- Use
FutureWarninginstead ofDeprecationWarningwhenaliasinstead ofenvis used for settings models, #881 by @samuelcolvin - Fix issue with
BaseSettingsinheritance andaliasgetting set toNone, #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_insensitiveonBaseSettingsconfig, #885 by @samuelcolvin - For
BaseSettingsmerge 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, documentconstruct()usage, #898 by @samuelcolvin - Add example for the
construct()method, #907 by @ashears - Improve use of
Fieldconstraints on complex types, raise an error if constraints are not enforceable, also support tuples with an ellipsisTuple[X, ...],SequenceandFrozenSetin schema, #909 by @samuelcolvin - update docs for bool missing valid value, #911 by @trim21
- Better
str/reprlogic forModelField, #912 by @samuelcolvin - Fix
ConstrainedList, update schema generation to reflectmin_itemsandmax_itemsField()arguments, #917 by @samuelcolvin - Allow abstracts sets (eg. dict keys) in the
includeandexcludearguments ofdict(), #921 by @samuelcolvin - Fix JSON serialization errors on
ValidationError.json()by usingpydantic_encoder, #922 by @samuelcolvin - Clarify usage of
remove_untouched, improve error message for types with no validators, #926 by @retnikt
v1.0b2 (2019-10-07)
- Mark
StrictBooltypecheck asboolto 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
GenericModelsubclasses, #859 by @dmontagu - Add
if TYPE_CHECKING:to the excluded lines for test coverage, #874 by @dmontagu - Rename
allow_population_by_aliastoallow_population_by_field_name, remove unnecessary warning about it, #875 by @samuelcolvin
v1.0b1 (2019-10-01)
- Breaking Change: rename
SchematoField, make it a function to placate mypy, #577 by @samuelcolvin - Breaking Change: modify parsing behavior for
bool, #617 by @dmontagu - Breaking Change:
get_validatorsis no longer recognised, use__get_validators__.Config.ignore_extraandConfig.allow_extraare no longer recognised, useConfig.extra, #720 by @samuelcolvin - Breaking Change: modify default config settings for
BaseSettings;case_insensitiverenamed tocase_sensitive, default changed tocase_sensitive = False,env_prefixdefault changed to''- e.g. no prefix, #721 by @dmontagu - Breaking change: Implement
root_validatorand 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
initvarssupport topost_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
URLparsing logic, #755 by @samuelcolvin - Breaking Change: preserve superclass annotations for field-determination when not provided in subclass, #757 by @dmontagu
- Breaking Change:
BaseSettingsnow uses the specialenvsettings to define which environment variables to read, not aliases, #847 by @samuelcolvin - add support for
assertstatements inside validators, #653 by @abdusco - Update documentation to specify the use of
pydantic.dataclasses.dataclassand subclassingpydantic.BaseModel, #710 by @maddosaurus - Allow custom JSON decoding and encoding via
json_loadsandjson_dumpsConfigproperties, #714 by @samuelcolvin - make all annotated fields occur in the order declared, #715 by @dmontagu
- use pytest to test
mypyintegration, #735 by @dmontagu - add
__repr__method toErrorWrapper, #738 by @samuelcolvin - Added support for
FrozenSetmembers in dataclasses, and a better error when attempting to use types from thetypingmodule 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,ValidationErrorand datetime parsing, #763 by @samuelcolvin - Improvements to
datetime/date/time/timedeltatypes: more descriptive errors, change errors tovalue_errornottype_error, support bytes, #766 by @samuelcolvin - fix error messages for
Literaltypes with multiple allowed values, #770 by @dmontagu - Improved auto-generated
titlefield in JSON schema by converting underscore to space, #772 by @skewty - support
mypy --no-implicit-reexportfor dataclasses, also respect--no-implicit-reexportin pydantic itself, #783 by @samuelcolvin - add the
PaymentCardNumbertype, #790 by @matin - Fix const validations for lists, #794 by @hmvp
- Set
additionalPropertiesto false in schema for models with extra fields disallowed, #796 by @Code0x58 EmailStrvalidation method now returns local part case-sensitive per RFC 5321, #798 by @henriklindgren- Added ability to validate strictness to
ConstrainedFloat,ConstrainedIntandConstrainedStrand addedStrictFloatandStrictIntclasses, #799 by @DerRidda - Improve handling of
NoneandOptional, replacewholewitheach_item(inverse meaning, defaultFalse) 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 aValidationErrorduring parsing, #820 by @dmontagu - allow
getter_dictonConfig, modifyGetterDictto be more like aMappingobject and thus easier to work with, #821 by @samuelcolvin - Only check
TypeVarparam on baseGenericModelclass, #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
v0.32.2 (2019-08-17)
- fix
__post_init__usage with dataclass inheritance, fix #739 by @samuelcolvin - fix required fields validation on GenericModels classes, #742 by @amitbl
- fix defining custom
SchemaonGenericModelfields, #754 by @amitbl
v0.32.1 (2019-08-08)
- do not validate extra fields when
validate_assignmentis on, #724 by @YaraslauZhylko
v0.32 (2019-08-06)
- add model name to
ValidationErrorerror message, #676 by @dmontagu - breaking change: remove
__getattr__and rename__values__to__dict__onBaseModel, deprecation warning on use__values__attr, attributes access speed increased up to 14 times, #712 by @MrMrRobat - support
ForwardRef(without self-referencing annotations) in Python 3.6, #706 by @koxudaxi - implement
schema_extrainConfigsub-class, #663 by @tiangolo
v0.31.1 (2019-07-31)
v0.31 (2019-07-24)
- better support for floating point
multiple_ofvalues, #652 by @justindujardin - fix schema generation for
NewTypeandLiteral, #649 by @dmontagu - fix
alias_generatorand field config conflict, #645 by @gmetzker and #658 by @MrMrRobat - more detailed message for
EnumError, #673 by @dmontagu - add advanced exclude support for
dict,jsonandcopy, #648 by @MrMrRobat - fix bug in
GenericModelfor models with concrete parameterized fields, #672 by @dmontagu - add documentation for
Literaltype, #651 by @dmontagu - add
Config.keep_untouchedfor custom descriptors support, #679 by @MrMrRobat - use
inspect.cleandocinternally to get model description, #657 by @tiangolo - add
Colorto schema generation, by @euri10 - add documentation for Literal type, #651 by @dmontagu
v0.30.1 (2019-07-15)
- fix so nested classes which inherit and change
__init__are correctly processed while still allowingselfas a parameter, #644 by @lnaden and @dgasmith
v0.30 (2019-07-07)
- 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_generatorsupport, #622 by @MrMrRobat - 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
selfas a field name inparse_obj, #632 by @samuelcolvin
v0.29 (2019-06-19)
- support dataclasses.InitVar, #592 by @pfrederiks
- Updated documentation to elucidate the usage of
Unionwhen defining multiple types under an attribute's annotation and showcase how the type-order can affect marshalling of provided values, #594 by @somada141 - add
conlisttype, #583 by @hmvp - add support for generics, #595 by @dmontagu
v0.28 (2019-06-06)
- 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.compiledon ipython, #573 by @dmontagu and @samuelcolvin - add
StrictBooltype, #579 by @cazgp
v0.27 (2019-05-30)
- breaking change
_pydantic_post_initto 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
v0.27.0a1 (2019-05-26)
- fix JSON Schema for
list,tuple, andset, #540 by @tiangolo - compiling with cython,
manylinuxbinaries, some other performance improvements, #548 by @samuelcolvin
v0.26 (2019-05-22)
- 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 changingvalidate_model()to always returnsTuple[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
Colortype, #504 by @pilosus and @samuelcolvin
v0.25 (2019-05-05)
- Improve documentation on self-referencing models and annotations, #487 by @theenglishway
- fix
.dict()with extra keys, #490 by @JaewonKim - support
constkeyword inSchema, #434 by @Sean1708
v0.24 (2019-04-23)
- fix handling
ForwardRefin sub-types, likeUnion, #464 by @tiangolo - fix secret serialization, #465 by @atheuz
- Support custom validators for dataclasses, #454 by @primal100
- fix
parse_objto cope with dict-like objects, #472 by @samuelcolvin - fix to schema generation in nested dataclass-based models, #474 by @NoAnyLove
- fix
jsonforPath,FilePath, andDirectoryPathobjects, #473 by @mikegoodspeed
v0.23 (2019-04-04)
- improve documentation for contributing section, #441 by @pilosus
- improve README.rst to include essential information about the package, #446 by @pilosus
IntEnumsupport, #444 by @potykion- fix PyObject callable value, #409 by @pilosus
- fix
blackdeprecation warnings after update, #451 by @pilosus - fix
ForwardRefcollection bug, #450 by @tigerwings - Support specialized
ClassVars, #455 by @tyrylu - fix JSON serialization for
ipaddresstypes, #333 by @pilosus - add
SecretStrandSecretBytestypes, #452 by @atheuz
v0.22 (2019-03-29)
- add
IPv{4,6,Any}NetworkandIPv{4,6,Any}Interfacetypes fromipaddressstdlib, #333 by @pilosus - add docs for
datetimetypes, #386 by @pilosus - fix to schema generation in dataclass-based models, #408 by @pilosus
- fix path in nested models, #437 by @kataev
- add
Sequencesupport, #304 by @pilosus
v0.21.0 (2019-03-15)
- fix typo in
NoneIsNotAllowedErrormessage, #414 by @YaraslauZhylko - add
IPvAnyAddress,IPv4AddressandIPv6Addresstypes, #333 by @pilosus
v0.20.1 (2019-02-26)
- fix type hints of
parse_objand similar methods, #405 by @erosennin - fix submodel validation, #403 by @samuelcolvin
- correct type hints for
ValidationError.json, #406 by @layday
v0.20.0 (2019-02-18)
- fix tests for python 3.8, #396 by @samuelcolvin
- Adds fields to the
dirmethod for autocompletion in interactive sessions, #398 by @dgasmith - support
ForwardRef(and thereforefrom __future__ import annotations) with dataclasses, #397 by @samuelcolvin
v0.20.0a1 (2019-02-13)
- breaking change (maybe): more sophisticated argument parsing for validators, any subset of
values,configandfieldis now permitted, eg.(cls, value, field), however the variadic key word argument ("**kwargs") must be calledkwargs, #388 by @samuelcolvin - breaking change: Adds
skip_defaultsargument toBaseModel.dict()to allow skipping of fields that were not explicitly set, signature ofModel.construct()changed, #389 by @dgasmith - add
py.typedmarker file for PEP-561 support, #391 by @je-l - Fix
extrabehaviour for multiple inheritance/mix-ins, #394 by @YaraslauZhylko
v0.19.0 (2019-02-04)
- Support
Callabletype hint, fix #279 by @proofit404 - Fix schema for fields with
validatordecorator, fix #375 by @tiangolo - Add
multiple_ofconstraint toConstrainedDecimal,ConstrainedFloat,ConstrainedIntand their related typescondecimal,confloat, andconint#371, thanks @StephenBrown2 - Deprecated
ignore_extraandallow_extraConfig fields in favor ofextra, #352 by @liiight - Add type annotations to all functions, test fully with mypy, #373 by @samuelcolvin
- fix for 'missing' error with
validate_allorvalidate_always, #381 by @samuelcolvin - Change the second/millisecond watershed for date/datetime parsing to
2e10, #385 by @samuelcolvin
v0.18.2 (2019-01-22)
- Fix to schema generation with
Optionalfields, fix #361 by @samuelcolvin
v0.18.1 (2019-01-17)
- add
ConstrainedBytesandconbytestypes, #315 @Gr1N - adding
MANIFEST.into include license in package.tar.gz, #358 by @samuelcolvin
v0.18.0 (2019-01-13)
- breaking change: don't call validators on keys of dictionaries, #254 by @samuelcolvin
- Fix validators with
always=Truewhen the default isNoneor the type is optional, also preventwholevalidators being called for sub-fields, fix #132 by @samuelcolvin - improve documentation for settings priority and allow it to be easily changed, #343 by @samuelcolvin
- fix
ignore_extra=Falseandallow_population_by_alias=True, fix #257 by @samuelcolvin - breaking change: Set
BaseConfigattributesmin_anystr_lengthandmax_anystr_lengthtoNoneby default, fix #349 in #350 by @tiangolo - add support for postponed annotations, #348 by @samuelcolvin
v0.17.0 (2018-12-27)
- fix schema for
timedeltaas number, #325 by @tiangolo - prevent validators being called repeatedly after inheritance, #327 by @samuelcolvin
- prevent duplicate validator check in ipython, fix #312 by @samuelcolvin
- add "Using Pydantic" section to docs, #323 by @tiangolo & #326 by @samuelcolvin
- fix schema generation for fields annotated as
: dict,: list,: tupleand: set, #330 & #335 by @nkonin - add support for constrained strings as dict keys in schema, #332 by @tiangolo
- support for passing Config class in dataclasses decorator, #276 by @jarekkar
(breaking change: this supersedes the
validate_assignmentargument withconfig) - support for nested dataclasses, #334 by @samuelcolvin
- better errors when getting an
ImportErrorwithPyObject, #309 by @samuelcolvin - rename
get_validatorsto__get_validators__, deprecation warning on use of old name, #338 by @samuelcolvin - support
ClassVarby excluding such attributes from fields, #184 by @samuelcolvin
v0.16.1 (2018-12-10)
- fix
create_modelto correctly use the passed__config__, #320 by @hugoduncan
v0.16.0 (2018-12-03)
- breaking change: refactor schema generation to be compatible with JSON Schema and OpenAPI specs, #308 by @tiangolo
- add
schematoschemamodule to generate top-level schemas from base models, #308 by @tiangolo - add additional fields to
Schemaclass to declare validation forstrand numeric values, #311 by @tiangolo - rename
_schematoschemaon fields, #318 by @samuelcolvin - add
case_insensitiveoption toBaseSettingsConfig, #277 by @jasonkuhrt
v0.15.0 (2018-11-18)
- move codebase to use black, #287 by @samuelcolvin
- fix alias use in settings, #286 by @jasonkuhrt and @samuelcolvin
- fix datetime parsing in
parse_date, #298 by @samuelcolvin - allow dataclass inheritance, fix #293 by @samuelcolvin
- fix
PyObject = None, fix #305 by @samuelcolvin - allow
Patterntype, fix #303 by @samuelcolvin
v0.14.0 (2018-10-02)
- dataclasses decorator, #269 by @Gaunt and @samuelcolvin
v0.13.1 (2018-09-21)
- fix issue where int_validator doesn't cast a
boolto anint#264 by @nphyatt - add deep copy support for
BaseModel.copy()#249, @gangefors
v0.13.0 (2018-08-25)
- raise an exception if a field's name shadows an existing
BaseModelattribute #242 - add
UrlStrandurlstrtypes #236 - timedelta json encoding ISO8601 and total seconds, custom json encoders #247, by @cfkanesan and @samuelcolvin
- allow
timedeltaobjects as values for properties of typetimedelta(matchesdatetimeetc. behavior) #247
v0.12.1 (2018-07-31)
- fix schema generation for fields defined using
typing.Any#237
v0.12.0 (2018-07-31)
- add
by_aliasargument in.dict()and.json()model methods #205 - add Json type support #214
- support tuples #227
- major improvements and changes to schema #213
v0.11.2 (2018-07-05)
- add
NewTypesupport #115 - fix
list,set&tuplevalidation #225 - separate out
validate_modelmethod, allow errors to be returned along with valid values #221
v0.11.1 (2018-07-02)
- support Python 3.7 #216, thanks @layday
- Allow arbitrary types in model #209, thanks @oldPadavan
v0.11.0 (2018-06-28)
- make
list,tupleandsettypes stricter #86 - breaking change: remove msgpack parsing #201
- add
FilePathandDirectoryPathtypes #10 - model schema generation #190
- JSON serialisation of models and schemas #133
v0.10.0 (2018-06-11)
- add
Config.allow_population_by_alias#160, thanks @bendemaree - breaking change: new errors format #179, thanks @Gr1N
- breaking change: removed
Config.min_number_sizeandConfig.max_number_size#183, thanks @Gr1N - breaking change: correct behaviour of
ltandgtarguments toconintetc. #188 for the old behaviour useleandge#194, thanks @jaheba - added error context and ability to redefine error message templates using
Config.error_msg_templates#183, thanks @Gr1N - fix typo in validator exception #150
- copy defaults to model values, so different models don't share objects #154
v0.9.1 (2018-05-10)
- allow custom
get_field_configon config classes #159 - add
UUID1,UUID3,UUID4andUUID5types #167, thanks @Gr1N - modify some inconsistent docstrings and annotations #173, thanks @YannLuo
- fix type annotations for exotic types #171, thanks @Gr1N
- re-use type validators in exotic types #171
- scheduled monthly requirements updates #168
- add
Decimal,ConstrainedDecimalandcondecimaltypes #170, thanks @Gr1N
v0.9.0 (2018-04-28)
- tweak email-validator import error message #145
- fix parse error of
parse_date()andparse_datetime()when input is 0 #144, thanks @YannLuo - add
Config.anystr_strip_whitespaceandstrip_whitespacekwarg toconstr, by default values isFalse#163, thanks @Gr1N - add
ConstrainedFloat,confloat,PositiveFloatandNegativeFloattypes #166, thanks @Gr1N
v0.8.0 (2018-03-25)
- fix type annotation for
inherit_config#139 - breaking change: check for invalid field names in validators #140
- validate attributes of parent models #141
- breaking change: email validation now uses email-validator #142
v0.7.1 (2018-02-07)
- fix bug with
create_modelmodifying the base class
v0.7.0 (2018-02-06)
- added compatibility with abstract base classes (ABCs) #123
- add
create_modelmethod #113 #125 - breaking change: rename
.configto.__config__on a model - breaking change: remove deprecated
.values()on a model, use.dict()instead - remove use of
OrderedDictand use simple dict #126 - add
Config.use_enum_values#127 - add wildcard validators of the form
@validate('*')#128
v0.6.4 (2018-02-01)
- allow python date and times objects #122
v0.6.3 (2017-11-26)
- fix direct install without
README.rstpresent
v0.6.2 (2017-11-13)
- errors for invalid validator use
- safer check for complex models in
Settings
v0.6.1 (2017-11-08)
v0.6.0 (2017-11-07)
- assignment validation #94, thanks petroswork!
- JSON in environment variables for complex types, #96
- add
validatordecorators for complex validation, #97 - depreciate
values(...)and replace with.dict(...), #99
v0.5.0 (2017-10-23)
- add
UUIDvalidation #89 - remove
indexandtrackfrom error object (json) if they're null #90 - improve the error text when a list is provided rather than a dict #90
- add benchmarks table to docs #91
v0.4.0 (2017-07-08)
- show length in string validation error
- fix aliases in config during inheritance #55
- simplify error display
- use unicode ellipsis in
truncate - add
parse_obj,parse_rawandparse_filehelper functions #58 - switch annotation only fields to come first in fields list not last
v0.3.0 (2017-06-21)
- immutable models via
config.allow_mutation = False, associated cleanup and performance improvement #44 - immutable helper methods
construct()andcopy()#53 - allow pickling of models #53
setattris removed as__setattr__is now intelligent #44raise_exceptionremoved, Models now always raise exceptions #44- instance method validators removed
- django-restful-framework benchmarks added #47
- fix inheritance bug #49
- make str type stricter so list, dict etc are not coerced to strings. #52
- add
StrictStrwhich only always strings as input #52
v0.2.1 (2017-06-07)
- pypi and travis together messed up the deploy of
v0.2this should fix it
v0.2.0 (2017-06-07)
- breaking change:
values()on a model is now a method not a property, takesincludeandexcludearguments - allow annotation only fields to support mypy
- add pretty
to_string(pretty=True)method for models
v0.1.0 (2017-06-03)
- add docs
- add history
Release files for pydantic 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydantic-1.3.tar.gz | 100.9 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pydantic-1.3-py36.py37.py38-none-any.whl | Python 3.8, Python 3.7, Python 3.6 | none | any | Details |
| pydantic-1.3-cp38-cp38-manylinux2010_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.12+ x86-64 | Details |
| pydantic-1.3-cp38-cp38-manylinux2010_i686.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.12+ x86-32 | Details |
| pydantic-1.3-cp38-cp38-manylinux1_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.5+ x86-64 | Details |
| pydantic-1.3-cp38-cp38-manylinux1_i686.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.5+ x86-32 | Details |
| pydantic-1.3-cp37-cp37m-manylinux2010_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.12+ x86-64 | Details |
| pydantic-1.3-cp37-cp37m-manylinux2010_i686.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.12+ x86-32 | Details |
| pydantic-1.3-cp37-cp37m-manylinux1_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.5+ x86-64 | Details |
| pydantic-1.3-cp37-cp37m-manylinux1_i686.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.5+ x86-32 | Details |
| pydantic-1.3-cp36-cp36m-manylinux2010_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.12+ x86-64 | Details |
| pydantic-1.3-cp36-cp36m-manylinux2010_i686.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.12+ x86-32 | Details |
| pydantic-1.3-cp36-cp36m-manylinux1_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.5+ x86-64 | Details |
| pydantic-1.3-cp36-cp36m-manylinux1_i686.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.5+ x86-32 | Details |
Total release size: 83.4 MB
Release files / pydantic-1.3.tar.gz
| Download URL | pydantic-1.3.tar.gz |
|---|---|
| Size | 100.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2eab7d548b0e530bf65bee7855ad8164c2f6a889975d5e9c4eefd1e7c98245dc
|
|
BLAKE2b-256 checksum How to use checksums |
3e69b22c0eb3157115e1e3d111f574a6a41552539f1e53b064121ef4e9ac1368
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-py36.py37.py38-none-any.whl
| Download URL | pydantic-1.3-py36.py37.py38-none-any.whl |
|---|---|
| Size | 85.5 kB |
| Tags | Python 3.6 Python 3.7 Python 3.8 |
|
SHA-256 checksum How to use checksums |
d03df07b7611004140b0fef91548878c2b5f48c520a8cb76d11d20e9887a495e
|
|
BLAKE2b-256 checksum How to use checksums |
d8f2faaf43cd311d6b2381a2623140c9d99d7aa7885100dc4f707fc868b3b199
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp38-cp38-manylinux2010_x86_64.whl
| Download URL | pydantic-1.3-cp38-cp38-manylinux2010_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | CPython 3.8 Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
b60f2b3b0e0dd74f1800a57d1bbd597839d16faf267e45fa4a5407b15d311085
|
|
BLAKE2b-256 checksum How to use checksums |
0df88207b3245dac391dd3314638394ee56aa8f2ebea802a54e8110cf834dd86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp38-cp38-manylinux2010_i686.whl
| Download URL | pydantic-1.3-cp38-cp38-manylinux2010_i686.whl |
|---|---|
| Size | 6.8 MB |
| Tags | CPython 3.8 Linux glibc 2.12+ x86-32 |
|
SHA-256 checksum How to use checksums |
c0da48978382c83f9488c6bbe4350e065ea5c83e85ca5cfb8fa14ac11de3c296
|
|
BLAKE2b-256 checksum How to use checksums |
ccea901c0e39e0e1f24d0b706955bdfb32d2fb5228903a9df406b2031ea8f766
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp38-cp38-manylinux1_x86_64.whl
| Download URL | pydantic-1.3-cp38-cp38-manylinux1_x86_64.whl |
|---|---|
| Size | 9.4 MB |
| Tags | CPython 3.8 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
dacb79144bb3fdb57cf9435e1bd16c35586bc44256215cfaa33bf21565d926ae
|
|
BLAKE2b-256 checksum How to use checksums |
2b4d1690550d376c799ea2565c54e66d1a728429dc50e1cc04c20a44b61f02ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp38-cp38-manylinux1_i686.whl
| Download URL | pydantic-1.3-cp38-cp38-manylinux1_i686.whl |
|---|---|
| Size | 6.8 MB |
| Tags | CPython 3.8 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
87673d1de790c8d5282153cab0b09271be77c49aabcedf3ac5ab1a1fd4dcbac0
|
|
BLAKE2b-256 checksum How to use checksums |
43fc92509595696a9e4e8bf95064a6614eab5aa0eec2cc33c6bcdd597e32fe15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp37-cp37m-manylinux2010_x86_64.whl
| Download URL | pydantic-1.3-cp37-cp37m-manylinux2010_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
479ca8dc7cc41418751bf10302ee0a1b1f8eedb2de6c4f4c0f3cf8372b204f9a
|
|
BLAKE2b-256 checksum How to use checksums |
4b561f652c3f658d2a9fd495d2e988a2da57eabdb6c4b8f4563c2ccbe6a2a8c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp37-cp37m-manylinux2010_i686.whl
| Download URL | pydantic-1.3-cp37-cp37m-manylinux2010_i686.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-32 |
|
SHA-256 checksum How to use checksums |
8a8e089aec18c26561e09ee6daf15a3cc06df05bdc67de60a8684535ef54562f
|
|
BLAKE2b-256 checksum How to use checksums |
8a311ff1431fd2f4e15c1e0c029ec5bddd36e6ce5f4e0ab1625931efca8e5fe1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp37-cp37m-manylinux1_x86_64.whl
| Download URL | pydantic-1.3-cp37-cp37m-manylinux1_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
d4bb6a75abc2f04f6993124f1ed4221724c9dc3bd9df5cb54132e0b68775d375
|
|
BLAKE2b-256 checksum How to use checksums |
6ed8ba712bb4c9ac0afdd38ac4bc0a0506638a7548a875849f8bca462f20c612
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp37-cp37m-manylinux1_i686.whl
| Download URL | pydantic-1.3-cp37-cp37m-manylinux1_i686.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
176885123dfdd8f7ab6e7ba1b66d4197de75ba830bb44d921af88b3d977b8aa5
|
|
BLAKE2b-256 checksum How to use checksums |
506be4695d61ebefe0c327ca1012b555491e90231e55244f890907f32d00a571
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp36-cp36m-manylinux2010_x86_64.whl
| Download URL | pydantic-1.3-cp36-cp36m-manylinux2010_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
59235324dd7dc5363a654cd14271ea8631f1a43de5d4fc29c782318fcc498002
|
|
BLAKE2b-256 checksum How to use checksums |
9924e78cf017628e7eaed20cb040999b1ecc69f872da53dfd0d9aed40c0fa5f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp36-cp36m-manylinux2010_i686.whl
| Download URL | pydantic-1.3-cp36-cp36m-manylinux2010_i686.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-32 |
|
SHA-256 checksum How to use checksums |
2b32a5f14558c36e39aeefda0c550bfc0f47fc32b4ce16d80dc4df2b33838ed8
|
|
BLAKE2b-256 checksum How to use checksums |
6e1b2385dc09da33ac9c7c501c9b23065ec34f5e825019291b24582b93eacf5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp36-cp36m-manylinux1_x86_64.whl
| Download URL | pydantic-1.3-cp36-cp36m-manylinux1_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
cbe284bd5ad67333d49ecc0dc27fa52c25b4c2fe72802a5c060b5f922db58bef
|
|
BLAKE2b-256 checksum How to use checksums |
52fdcf60e8677e5e06079ad137798b94213bf5261c943d94a517925a3ec8d0da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|
Release files / pydantic-1.3-cp36-cp36m-manylinux1_i686.whl
| Download URL | pydantic-1.3-cp36-cp36m-manylinux1_i686.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
dd9359db7644317898816f6142f378aa48848dcc5cf14a481236235fde11a148
|
|
BLAKE2b-256 checksum How to use checksums |
023c25bcc6e3360435cf20a08afadffacc0fc5b80adc630dfce6a401237e5b24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.1
|