mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
6b53cabe036a907a117e3530719befef2c417ae1
* Add pickle support to dynamically created models * Add created model module check * Use globals() to retrieve model * Use single quotes * use mocker instead of mock Co-authored-by: PrettyWood <em.jolibois@gmail.com> * remove unused import * add test for dynamic forward ref * move generic test to test_generics.py * fix test_generic_model_pickle test, add additional check for <locals> in create_model * fix code style * resolve issues with global/local models * make ensure_picklable return given model * remove ensure_picklable, use test_is_call_from_module only in generics * reformat code after updating black==20.8b1 * move get_caller_module_name and is_call_from_module to generics * apply suggestions from @samuelcolvin * add tests for get_caller_module and is_call_from_module called from module * fix linting * fix path to modules in test_module fixture, capture stderr and stdout * fix broken test module * fix subprocess call for windows * enhance create_module fixture, add run_as_module fixture this will allow run modules in subprocess and define module code in functions-containers * add test for redefined concrete model without cache * add changes file * remove unused variable * rewrite tests with pytest.raises * fix linting * rewrite test_create_model_pickle and test_forward_ref_with_create_model with module definition in function * Update create_model docstring Co-authored-by: PrettyWood <em.jolibois@gmail.com> Co-authored-by: Samuel Colvin <s@muelcolvin.com>
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, Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name = 'John Doe'
signup_ts: Optional[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.
Reporting a Security Vulnerability
See our security policy.
Languages
Python
99.7%
Makefile
0.3%