mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
5885e6ce12fbb931301b1de922c0eff30db292c1
* Move host regex out of url_regex and inject it afterwards * Add new host regex with cache variable * Move url regex strings to separate variables * Add new postgres url regex with cache variable * Add tests for failed postgres dns with many hosts * Add new parts type: HostParts * Add new slot 'hosts' to PostgreDsn and update init with it * Add validators to PostgreDsn class. When multiple hosts are found, all hosts will be store in hosts list. To keep back compatibility single host will return all data as previously in main params. * Add more detail tests to check multi host postgres dsn with attributes * Add changes description in the file * Delete usless comments to regex strings because of varable names * Add missing docstring to postgres_url_regex function * Update postgre dsn with AnyUrl.slots * Update AnyUrl.validate_parts to support disabling port validation * Reuse _host_regex in postgres_url_regex * Fix typing * Delete not needed group in regex * Improve tests by adding parametrize to postgreDsn tests * Update postgres regex to not validate hosts in it * Delete duplicated code and use shared validate method * Move multi host methods into separate class and inherit it in the postgreDsn * fix tests * tweaks and re order code * add a note to docs Co-authored-by: Samuel Colvin <s@muelcolvin.com>
pydantic
Data validation and settings management using Python type hints.
Fast and extensible, pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.7+; 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%