Stephan Lanfermann 1b467da11f Added generic approach to strict type checking for constrained types (#799)
* Added generic approach to strict type checking for constraint types
- Use the arbitrary validator to build strict validators for ConstrainedInt, ConstrainedFloat, ConstrainedStr
- Make StrictStr a derived class of ConstrainedStr
- Add tests for new strict cases for ConstrainedInt and ConstrainedFloat

* - Created StrictInt and StrictFloat subclasses and exported them
- Changed strictness tests to use these new subclasses

* - Added section for Strict Types to docs

* - Added changes file

* Update docs/index.rst

Co-Authored-By: Zaar Hai <haizaar@users.noreply.github.com>

* Update docs/index.rst

Co-Authored-By: Zaar Hai <haizaar@users.noreply.github.com>

* - Create validators for strict int and float
- Make ConstrainedInt and ConstrainedFloat use those validators instead of abusing arbitrary type validator for strictness
- Prevent double validaton of same conditions by only yielding either the strict or non-strict type validator for for those classes

* Changed strict int and float tests to alos match for exception message in invalid cases

* - Removed obvious note about lack of ConstrainedBool
- Added example for strict type usage
- Added note about caveats for StrictInt and StrictFloat

* Update pydantic/validators.py

faster method to check if a value is boolean for strict int validator

Co-Authored-By: Samuel Colvin <samcolvin@gmail.com>

* - Removed StrictBool part from Boolean section of docs
- Moved the Strctbool code example into strict_types.py example file

* - Changed behavior of strictness for COnstrainedStr to match that fo other constrained types

* - Actually make ConstrainedStr use the correct validator for strictness
2019-09-17 12:38:51 +01:00
2019-08-10 13:34:21 +01:00
2019-08-18 15:58:45 +01:00
2019-08-06 15:42:49 +01:00
2019-01-17 20:59:58 +00:00
2019-09-02 11:37:33 +01:00
2019-01-17 20:59:58 +00:00
2019-09-02 11:37:33 +01:00
2019-09-13 10:56:57 +01:00

pydantic
========

|BuildStatus| |Coverage| |pypi| |CondaForge| |downloads| |versions| |license|

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 `Install`_ section in the documentation.


A Simple Example
----------------

.. code-block:: python

    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 the `Contributing to Pydantic`_.


.. |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
.. |CondaForge| image:: https://img.shields.io/conda/v/conda-forge/pydantic.svg
   :target: https://anaconda.org/conda-forge/pydantic
.. |downloads| image:: https://img.shields.io/pypi/dm/pydantic.svg
   :target: https://pypistats.org/packages/pydantic
.. |versions| image:: https://img.shields.io/pypi/pyversions/pydantic.svg
   :target: https://github.com/samuelcolvin/pydantic
.. |license| image:: https://img.shields.io/github/license/samuelcolvin/pydantic.svg
   :target: https://github.com/samuelcolvin/pydantic/blob/master/LICENSE
.. _documentation: https://pydantic-docs.helpmanual.io/
.. _Install: https://pydantic-docs.helpmanual.io/#install
.. _Contributing to Pydantic: https://pydantic-docs.helpmanual.io/#contributing-to-pydantic
S
Description
No description provided
Readme MIT 5.9 MiB
Languages
Python 99.7%
Makefile 0.3%