mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
af26f7f181145089eef461d7829950f32ef06fc6
* Fix issue with unspecified generic type, fix #550 Seems to solve #550 With this change, models with bare `List` or `Dict` as a typehint still validate for type agreement, but don't validate the type of the parameters. I'm not sure this is the "right" fix (I don't know the implications of ignoring TypeVars like this), but considering how simple it was I figured I'd at least share. * Update validators.py Found this discussion: https://github.com/samuelcolvin/pydantic/issues/545; `lenient_issubclass` does seem to fix it. * Update validators.py Hacky solution to prevent no validator exception. Maybe there's a better way? * Tests pass and PR checklist done * Check sooner * Block empty list from dict constructor * Removed modifications to dict_validator
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
Languages
Python
99.7%
Makefile
0.3%