- 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 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()
toversion.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
andNameEmail
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
- Change
schema
andschema_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 keywordskip_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__
isTrue
, #1064 by @samuelcolvin - Change
BaseModel.parse_file
to useConfig.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 onBaseSettings
when 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
BaseSettings
subclass attributes, #1105 by @tribals - Rename django-rest-framework benchmark in documentation, #1119 by @frankie567
- Possible Breaking Change: Add support for required
Optional
withname: Optional[AnyType] = Field(...)
and refactorModelField
creation to preserverequired
parameter value, #1031 by @tiangolo; see here for details - Add benchmarks for
cattrs
, #513 by @sebastianmika - Add
exclude_none
option todict()
and friends, #587 by @niknetniko - Add benchmarks for
valideer
, #670 by @gsakkis - Add
parse_obj_as
andparse_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
- Fix bug where use of complex fields on sub-models could cause fields to be incorrectly configured, #1015 by @samuelcolvin
- 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 allowNone
, also supportTypeVar
thus allowing use of un-parameterised collection types e.g.Dict
andList
, #962 by @samuelcolvin - Set
FieldInfo
on subfields to fix schema generation for complex nested types, #965 by @samuelcolvin
- Breaking Change: deprecate the
Model.fields
property, 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_defaults
toexclude_unset
, and add ability to exclude actual defaults, #915 by @dmontagu - Add
**kwargs
topydantic.main.ModelMetaclass.__new__
so__init_subclass__
can take custom parameters on extendedBaseModel
classes, #867 by @retnikt - Fix field of a type that has a default value, #880 by @koxudaxi
- Use
FutureWarning
instead ofDeprecationWarning
whenalias
instead ofenv
is used for settings models, #881 by @samuelcolvin - Fix issue with
BaseSettings
inheritance andalias
getting 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_insensitive
onBaseSettings
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, documentconstruct()
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 ellipsisTuple[X, ...]
,Sequence
andFrozenSet
in schema, #909 by @samuelcolvin - update docs for bool missing valid value, #911 by @trim21
- Better
str
/repr
logic forModelField
, #912 by @samuelcolvin - Fix
ConstrainedList
, update schema generation to reflectmin_items
andmax_items
Field()
arguments, #917 by @samuelcolvin - Allow abstracts sets (eg. dict keys) in the
include
andexclude
arguments 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
- Mark
StrictBool
typecheck asbool
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
toallow_population_by_field_name
, remove unnecessary warning about it, #875 by @samuelcolvin
- Breaking Change: rename
Schema
toField
, 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
andConfig.allow_extra
are no longer recognised, useConfig.extra
, #720 by @samuelcolvin - Breaking Change: modify default config settings for
BaseSettings
;case_insensitive
renamed tocase_sensitive
, default changed tocase_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 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
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 specialenv
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 subclassingpydantic.BaseModel
, #710 by @maddosaurus - Allow custom JSON decoding and encoding via
json_loads
andjson_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 toErrorWrapper
, #738 by @samuelcolvin - Added support for
FrozenSet
members in dataclasses, and a better error when attempting to use types from thetyping
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 tovalue_error
nottype_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
andConstrainedStr
and addedStrictFloat
andStrictInt
classes, #799 by @DerRidda - Improve handling of
None
andOptional
, replacewhole
witheach_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 aValidationError
during parsing, #820 by @dmontagu - allow
getter_dict
onConfig
, modifyGetterDict
to be more like aMapping
object and thus easier to work with, #821 by @samuelcolvin - Only check
TypeVar
param on baseGenericModel
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
- 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
onGenericModel
fields, #754 by @amitbl
- do not validate extra fields when
validate_assignment
is on, #724 by @YaraslauZhylko
- add model name to
ValidationError
error 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_extra
inConfig
sub-class, #663 by @tiangolo
- fix json generation for
EnumError
, #697 by @dmontagu - update numerous dependencies
- better support for floating point
multiple_of
values, #652 by @justindujardin - fix schema generation for
NewType
andLiteral
, #649 by @dmontagu - fix
alias_generator
and field config conflict, #645 by @gmetzker and #658 by @MrMrRobat - more detailed message for
EnumError
, #673 by @dmontagu - add advanced exclude support for
dict
,json
andcopy
, #648 by @MrMrRobat - 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 @MrMrRobat - 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
- fix so nested classes which inherit and change
__init__
are correctly processed while still allowingself
as a parameter, #644 by @lnaden and @dgasmith
- 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 @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
self
as a field name inparse_obj
, #632 by @samuelcolvin
- 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
- 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
- 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
- fix JSON Schema for
list
,tuple
, andset
, #540 by @tiangolo - compiling with cython,
manylinux
binaries, some other performance improvements, #548 by @samuelcolvin
- 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
Color
type, #504 by @pilosus and @samuelcolvin
- Improve documentation on self-referencing models and annotations, #487 by @theenglishway
- fix
.dict()
with extra keys, #490 by @JaewonKim - support
const
keyword inSchema
, #434 by @Sean1708
- fix handling
ForwardRef
in sub-types, likeUnion
, #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
forPath
,FilePath
, andDirectoryPath
objects, #473 by @mikegoodspeed
- 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
andSecretBytes
types, #452 by @atheuz
- add
IPv{4,6,Any}Network
andIPv{4,6,Any}Interface
types fromipaddress
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
- fix typo in
NoneIsNotAllowedError
message, #414 by @YaraslauZhylko - add
IPvAnyAddress
,IPv4Address
andIPv6Address
types, #333 by @pilosus
- 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
- 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 thereforefrom __future__ import annotations
) with dataclasses, #397 by @samuelcolvin
- breaking change (maybe): more sophisticated argument parsing for validators, any subset of
values
,config
andfield
is now permitted, eg.(cls, value, field)
, however the variadic key word argument ("**kwargs
") must be calledkwargs
, #388 by @samuelcolvin - breaking change: Adds
skip_defaults
argument toBaseModel.dict()
to allow skipping of fields that were not explicitly set, signature ofModel.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
- Support
Callable
type hint, fix #279 by @proofit404 - Fix schema for fields with
validator
decorator, fix #375 by @tiangolo - Add
multiple_of
constraint toConstrainedDecimal
,ConstrainedFloat
,ConstrainedInt
and their related typescondecimal
,confloat
, andconint
#371, thanks @StephenBrown2 - Deprecated
ignore_extra
andallow_extra
Config 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_all
orvalidate_always
, #381 by @samuelcolvin - Change the second/millisecond watershed for date/datetime parsing to
2e10
, #385 by @samuelcolvin
- Fix to schema generation with
Optional
fields, fix #361 by @samuelcolvin
- add
ConstrainedBytes
andconbytes
types, #315 @Gr1N - adding
MANIFEST.in
to include license in package.tar.gz
, #358 by @samuelcolvin
- breaking change: don't call validators on keys of dictionaries, #254 by @samuelcolvin
- Fix validators with
always=True
when the default isNone
or the type is optional, also preventwhole
validators 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=False
andallow_population_by_alias=True
, fix #257 by @samuelcolvin - breaking change: Set
BaseConfig
attributesmin_anystr_length
andmax_anystr_length
toNone
by default, fix #349 in #350 by @tiangolo - add support for postponed annotations, #348 by @samuelcolvin
- fix schema for
timedelta
as 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
,: tuple
and: 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_assignment
argument withconfig
) - support for nested dataclasses, #334 by @samuelcolvin
- better errors when getting an
ImportError
withPyObject
, #309 by @samuelcolvin - rename
get_validators
to__get_validators__
, deprecation warning on use of old name, #338 by @samuelcolvin - support
ClassVar
by excluding such attributes from fields, #184 by @samuelcolvin
- fix
create_model
to correctly use the passed__config__
, #320 by @hugoduncan
- breaking change: refactor schema generation to be compatible with JSON Schema and OpenAPI specs, #308 by @tiangolo
- add
schema
toschema
module to generate top-level schemas from base models, #308 by @tiangolo - add additional fields to
Schema
class to declare validation forstr
and numeric values, #311 by @tiangolo - rename
_schema
toschema
on fields, #318 by @samuelcolvin - add
case_insensitive
option toBaseSettings
Config
, #277 by @jasonkuhrt
- 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
Pattern
type, fix #303 by @samuelcolvin
- dataclasses decorator, #269 by @Gaunt and @samuelcolvin
- fix issue where int_validator doesn't cast a
bool
to anint
#264 by @nphyatt - add deep copy support for
BaseModel.copy()
#249, @gangefors
- raise an exception if a field's name shadows an existing
BaseModel
attribute #242 - add
UrlStr
andurlstr
types #236 - timedelta json encoding ISO8601 and total seconds, custom json encoders #247, by @cfkanesan and @samuelcolvin
- allow
timedelta
objects as values for properties of typetimedelta
(matchesdatetime
etc. behavior) #247
- fix schema generation for fields defined using
typing.Any
#237
- add
by_alias
argument in.dict()
and.json()
model methods #205 - add Json type support #214
- support tuples #227
- major improvements and changes to schema #213
- add
NewType
support #115 - fix
list
,set
&tuple
validation #225 - separate out
validate_model
method, allow errors to be returned along with valid values #221
- support Python 3.7 #216, thanks @layday
- Allow arbitrary types in model #209, thanks @oldPadavan
- make
list
,tuple
andset
types stricter #86 - breaking change: remove msgpack parsing #201
- add
FilePath
andDirectoryPath
types #10 - model schema generation #190
- JSON serialisation of models and schemas #133
- add
Config.allow_population_by_alias
#160, thanks @bendemaree - breaking change: new errors format #179, thanks @Gr1N
- breaking change: removed
Config.min_number_size
andConfig.max_number_size
#183, thanks @Gr1N - breaking change: correct behaviour of
lt
andgt
arguments toconint
etc. #188 for the old behaviour usele
andge
#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
- allow custom
get_field_config
on config classes #159 - add
UUID1
,UUID3
,UUID4
andUUID5
types #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
,ConstrainedDecimal
andcondecimal
types #170, thanks @Gr1N
- 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_whitespace
andstrip_whitespace
kwarg toconstr
, by default values isFalse
#163, thanks @Gr1N - add
ConstrainedFloat
,confloat
,PositiveFloat
andNegativeFloat
types #166, thanks @Gr1N
- 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
- fix bug with
create_model
modifying the base class
- added compatibility with abstract base classes (ABCs) #123
- add
create_model
method #113 #125 - breaking change: rename
.config
to.__config__
on a model - breaking change: remove deprecated
.values()
on a model, use.dict()
instead - remove use of
OrderedDict
and use simple dict #126 - add
Config.use_enum_values
#127 - add wildcard validators of the form
@validate('*')
#128
- allow python date and times objects #122
- fix direct install without
README.rst
present
- errors for invalid validator use
- safer check for complex models in
Settings
- prevent duplicate validators, #101
- add
always
kwarg to validators, #102
- assignment validation #94, thanks petroswork!
- JSON in environment variables for complex types, #96
- add
validator
decorators for complex validation, #97 - depreciate
values(...)
and replace with.dict(...)
, #99
- add
UUID
validation #89 - remove
index
andtrack
from 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
- 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_raw
andparse_file
helper functions #58 - switch annotation only fields to come first in fields list not last
- immutable models via
config.allow_mutation = False
, associated cleanup and performance improvement #44 - immutable helper methods
construct()
andcopy()
#53 - allow pickling of models #53
setattr
is removed as__setattr__
is now intelligent #44raise_exception
removed, 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
StrictStr
which only always strings as input #52
- pypi and travis together messed up the deploy of
v0.2
this should fix it
- breaking change:
values()
on a model is now a method not a property, takesinclude
andexclude
arguments - allow annotation only fields to support mypy
- add pretty
to_string(pretty=True)
method for models
- add docs
- add history