Metadata-Version: 2.1
Name: pydantic
Version: 0.18.1
Summary: Data validation and settings management using python 3.6 type hinting
Home-page: https://github.com/samuelcolvin/pydantic
Author: Samuel Colvin
Author-email: s@muelcolvin.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX :: Linux
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet
Requires-Python: >=3.6
Requires-Dist: dataclasses (>=0.6) ; python_version < "3.7"
Provides-Extra: email
Requires-Dist: email-validator (>=1.0.3) ; extra == 'email'
Provides-Extra: ujson
Requires-Dist: ujson (>=1.35) ; extra == 'ujson'

pydantic
========

|BuildStatus| |Coverage| |pypi|

Data validation and settings management using python type hinting.

See `documentation`_ for more details.

.. |BuildStatus| image:: https://travis-ci.org/samuelcolvin/pydantic.svg?branch=master
   :target: https://travis-ci.org/samuelcolvin/pydantic
.. |Coverage| image:: https://codecov.io/gh/samuelcolvin/pydantic/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/samuelcolvin/pydantic
.. |pypi| image:: https://img.shields.io/pypi/v/pydantic.svg
   :target: https://pypi.python.org/pypi/pydantic
.. _documentation: https://pydantic-docs.helpmanual.io/


.. :changelog:

History
-------

v0.18.1 (2019-01-17)
....................
* add ``ConstrainedBytes`` and ``conbytes`` types, `#315`_ `@Gr1N`_
* adding ``MANIFEST.in`` to 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=True`` when the default is ``None`` or the type is optional, also prevent
  ``whole`` 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`` and ``allow_population_by_alias=True``, fix `#257`_ by `@samuelcolvin`_
* **breaking change**: Set ``BaseConfig`` attributes ``min_anystr_length`` and ``max_anystr_length`` to
  ``None`` by default, fix `#349`_ in `#350`_ by `@tiangolo`_
* add support for postponed annotations, `#348`_ by `@samuelcolvin`_

v0.17.0 (2018-12-27)
....................
* 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 with ``config``)
* support for nested dataclasses, `#334`_ by `@samuelcolvin`_
* better errors when getting an ``ImportError`` with ``PyObject``, `#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`_

v0.16.1 (2018-12-10)
....................
* fix ``create_model`` to 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 ``schema`` to ``schema`` module to generate top-level schemas from base models, `#308`_ by `@tiangolo`_
* add additional fields to ``Schema`` class to declare validation for ``str`` and numeric values, `#311`_ by `@tiangolo`_
* rename ``_schema`` to ``schema`` on fields, `#318`_ by `@samuelcolvin`_
* add ``case_insensitive`` option to ``BaseSettings`` ``Config``, `#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 ``Pattern`` type, 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 ``bool`` to an ``int`` `#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 ``BaseModel`` attribute `#242`_
* add ``UrlStr`` and ``urlstr`` 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 type ``timedelta`` (matches ``datetime`` etc. 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_alias`` argument 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 ``NewType`` support `#115`_
* fix ``list``, ``set`` & ``tuple`` validation `#225`_
* separate out ``validate_model`` method, 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``, ``tuple`` and ``set`` types stricter `#86`_
* **breaking change**: remove msgpack parsing `#201`_
* add ``FilePath`` and ``DirectoryPath`` types `#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_size`` and ``Config.max_number_size`` `#183`_, thanks `@Gr1N`_
* **breaking change**: correct behaviour of ``lt`` and ``gt`` arguments to ``conint`` etc. `#188`_
  for the old behaviour use ``le`` and ``ge`` `#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_config`` on config classes `#159`_
* add ``UUID1``, ``UUID3``, ``UUID4`` and ``UUID5`` 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`` and ``condecimal`` types `#170`_, thanks `@Gr1N`_

v0.9.0 (2018-04-28)
...................
* tweak email-validator import error message `#145`_
* fix parse error of ``parse_date()`` and ``parse_datetime()`` when input is 0 `#144`_, thanks `@YannLuo`_
* add ``Config.anystr_strip_whitespace`` and ``strip_whitespace`` kwarg to ``constr``,
  by default values is ``False`` `#163`_, thanks `@Gr1N`_
* add ``ConstrainedFloat``, ``confloat``, ``PositiveFloat`` and ``NegativeFloat`` types `#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 <https://github.com/JoshData/python-email-validator>`_ `#142`_

v0.7.1 (2018-02-07)
...................
* fix bug with ``create_model`` modifying the base class

v0.7.0 (2018-02-06)
...................
* 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`_

v0.6.4 (2018-02-01)
...................
* allow python date and times objects `#122`_

v0.6.3 (2017-11-26)
...................
* fix direct install without ``README.rst`` present

v0.6.2 (2017-11-13)
...................
* errors for invalid validator use
* safer check for complex models in ``Settings``

v0.6.1 (2017-11-08)
...................
* prevent duplicate validators, `#101`_
* add ``always`` kwarg to validators, `#102`_

v0.6.0 (2017-11-07)
...................
* 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`_

v0.5.0 (2017-10-23)
...................
* add ``UUID`` validation `#89`_
* remove ``index`` and ``track`` 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`_

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_raw`` and ``parse_file`` helper 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()`` and ``copy()`` `#53`_
* allow pickling of models `#53`_
* ``setattr`` is removed as ``__setattr__`` is now intelligent `#44`_
* ``raise_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`_

v0.2.1 (2017-06-07)
...................
* pypi and travis together messed up the deploy of ``v0.2`` this should fix it

v0.2.0 (2017-06-07)
...................
* **breaking change**: ``values()`` on a model is now a method not a property,
  takes ``include`` and ``exclude`` arguments
* 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


.. _#249: https://github.com/samuelcolvin/pydantic/issues/249
.. _#139: https://github.com/samuelcolvin/pydantic/issues/139
.. _#277: https://github.com/samuelcolvin/pydantic/issues/277
.. _#125: https://github.com/samuelcolvin/pydantic/issues/125
.. _#102: https://github.com/samuelcolvin/pydantic/issues/102
.. _@nphyatt: https://github.com/nphyatt
.. _#214: https://github.com/samuelcolvin/pydantic/issues/214
.. _#183: https://github.com/samuelcolvin/pydantic/issues/183
.. _#53: https://github.com/samuelcolvin/pydantic/issues/53
.. _#305: https://github.com/samuelcolvin/pydantic/issues/305
.. _@bendemaree: https://github.com/bendemaree
.. _#343: https://github.com/samuelcolvin/pydantic/issues/343
.. _@nkonin: https://github.com/nkonin
.. _#190: https://github.com/samuelcolvin/pydantic/issues/190
.. _#127: https://github.com/samuelcolvin/pydantic/issues/127
.. _#216: https://github.com/samuelcolvin/pydantic/issues/216
.. _#323: https://github.com/samuelcolvin/pydantic/issues/323
.. _#58: https://github.com/samuelcolvin/pydantic/issues/58
.. _#286: https://github.com/samuelcolvin/pydantic/issues/286
.. _#311: https://github.com/samuelcolvin/pydantic/issues/311
.. _#170: https://github.com/samuelcolvin/pydantic/issues/170
.. _#122: https://github.com/samuelcolvin/pydantic/issues/122
.. _#335: https://github.com/samuelcolvin/pydantic/issues/335
.. _#55: https://github.com/samuelcolvin/pydantic/issues/55
.. _#132: https://github.com/samuelcolvin/pydantic/issues/132
.. _#173: https://github.com/samuelcolvin/pydantic/issues/173
.. _#163: https://github.com/samuelcolvin/pydantic/issues/163
.. _#154: https://github.com/samuelcolvin/pydantic/issues/154
.. _#205: https://github.com/samuelcolvin/pydantic/issues/205
.. _#44: https://github.com/samuelcolvin/pydantic/issues/44
.. _#254: https://github.com/samuelcolvin/pydantic/issues/254
.. _#247: https://github.com/samuelcolvin/pydantic/issues/247
.. _#167: https://github.com/samuelcolvin/pydantic/issues/167
.. _#309: https://github.com/samuelcolvin/pydantic/issues/309
.. _#338: https://github.com/samuelcolvin/pydantic/issues/338
.. _#358: https://github.com/samuelcolvin/pydantic/issues/358
.. _@tiangolo: https://github.com/tiangolo
.. _#303: https://github.com/samuelcolvin/pydantic/issues/303
.. _#179: https://github.com/samuelcolvin/pydantic/issues/179
.. _#150: https://github.com/samuelcolvin/pydantic/issues/150
.. _#141: https://github.com/samuelcolvin/pydantic/issues/141
.. _@jasonkuhrt: https://github.com/jasonkuhrt
.. _#242: https://github.com/samuelcolvin/pydantic/issues/242
.. _#334: https://github.com/samuelcolvin/pydantic/issues/334
.. _@cfkanesan: https://github.com/cfkanesan
.. _#312: https://github.com/samuelcolvin/pydantic/issues/312
.. _#326: https://github.com/samuelcolvin/pydantic/issues/326
.. _#145: https://github.com/samuelcolvin/pydantic/issues/145
.. _#89: https://github.com/samuelcolvin/pydantic/issues/89
.. _#144: https://github.com/samuelcolvin/pydantic/issues/144
.. _#123: https://github.com/samuelcolvin/pydantic/issues/123
.. _#327: https://github.com/samuelcolvin/pydantic/issues/327
.. _#227: https://github.com/samuelcolvin/pydantic/issues/227
.. _#264: https://github.com/samuelcolvin/pydantic/issues/264
.. _#184: https://github.com/samuelcolvin/pydantic/issues/184
.. _#140: https://github.com/samuelcolvin/pydantic/issues/140
.. _#308: https://github.com/samuelcolvin/pydantic/issues/308
.. _#171: https://github.com/samuelcolvin/pydantic/issues/171
.. _#330: https://github.com/samuelcolvin/pydantic/issues/330
.. _#52: https://github.com/samuelcolvin/pydantic/issues/52
.. _#237: https://github.com/samuelcolvin/pydantic/issues/237
.. _#236: https://github.com/samuelcolvin/pydantic/issues/236
.. _#168: https://github.com/samuelcolvin/pydantic/issues/168
.. _@Gr1N: https://github.com/Gr1N
.. _#159: https://github.com/samuelcolvin/pydantic/issues/159
.. _#96: https://github.com/samuelcolvin/pydantic/issues/96
.. _#128: https://github.com/samuelcolvin/pydantic/issues/128
.. _#293: https://github.com/samuelcolvin/pydantic/issues/293
.. _#201: https://github.com/samuelcolvin/pydantic/issues/201
.. _#166: https://github.com/samuelcolvin/pydantic/issues/166
.. _#126: https://github.com/samuelcolvin/pydantic/issues/126
.. _#221: https://github.com/samuelcolvin/pydantic/issues/221
.. _#86: https://github.com/samuelcolvin/pydantic/issues/86
.. _#332: https://github.com/samuelcolvin/pydantic/issues/332
.. _#90: https://github.com/samuelcolvin/pydantic/issues/90
.. _#225: https://github.com/samuelcolvin/pydantic/issues/225
.. _#325: https://github.com/samuelcolvin/pydantic/issues/325
.. _#91: https://github.com/samuelcolvin/pydantic/issues/91
.. _@hugoduncan: https://github.com/hugoduncan
.. _#349: https://github.com/samuelcolvin/pydantic/issues/349
.. _@jarekkar: https://github.com/jarekkar
.. _@samuelcolvin: https://github.com/samuelcolvin
.. _#194: https://github.com/samuelcolvin/pydantic/issues/194
.. _#115: https://github.com/samuelcolvin/pydantic/issues/115
.. _#209: https://github.com/samuelcolvin/pydantic/issues/209
.. _#213: https://github.com/samuelcolvin/pydantic/issues/213
.. _@jaheba: https://github.com/jaheba
.. _#320: https://github.com/samuelcolvin/pydantic/issues/320
.. _#101: https://github.com/samuelcolvin/pydantic/issues/101
.. _#318: https://github.com/samuelcolvin/pydantic/issues/318
.. _#257: https://github.com/samuelcolvin/pydantic/issues/257
.. _#113: https://github.com/samuelcolvin/pydantic/issues/113
.. _#276: https://github.com/samuelcolvin/pydantic/issues/276
.. _#49: https://github.com/samuelcolvin/pydantic/issues/49
.. _#350: https://github.com/samuelcolvin/pydantic/issues/350
.. _@Gaunt: https://github.com/Gaunt
.. _#287: https://github.com/samuelcolvin/pydantic/issues/287
.. _@gangefors: https://github.com/gangefors
.. _#348: https://github.com/samuelcolvin/pydantic/issues/348
.. _@layday: https://github.com/layday
.. _@oldPadavan: https://github.com/oldPadavan
.. _#133: https://github.com/samuelcolvin/pydantic/issues/133
.. _#10: https://github.com/samuelcolvin/pydantic/issues/10
.. _#47: https://github.com/samuelcolvin/pydantic/issues/47
.. _#99: https://github.com/samuelcolvin/pydantic/issues/99
.. _#269: https://github.com/samuelcolvin/pydantic/issues/269
.. _#142: https://github.com/samuelcolvin/pydantic/issues/142
.. _#97: https://github.com/samuelcolvin/pydantic/issues/97
.. _#298: https://github.com/samuelcolvin/pydantic/issues/298
.. _#160: https://github.com/samuelcolvin/pydantic/issues/160
.. _#188: https://github.com/samuelcolvin/pydantic/issues/188
.. _@YannLuo: https://github.com/YannLuo
.. _#94: https://github.com/samuelcolvin/pydantic/issues/94
.. _#315: https://github.com/samuelcolvin/pydantic/issues/315


