* refactor: extra `BaseConfig` and `Extra` in dedicated `config` module * refactor: clean useless `#noqa: F401` * refactor: clean useless `#noqa: F811` * refactor: replace enum check Error with 3.10 > DeprecationWarning: accessing one member from another is not supported * refactor: avoid using `distutils` directly error with python 3.10 > DeprecationWarning: The distutils package is deprecated and slated > for removal in Python 3.12. > Use setuptools or check PEP 632 for potential alternatives * fix: `__annotations__` always exists * fix: origin of `typing.Hashable` is not `None` * ci: add run with 3.10.0b2 * docs: add 3.10 * feat: support `|` union operator properly `|` operator has origin `types.Union` (and not `typing.Union`) * fix: enum repr is different with 3.10+ * fix: error message changed a bit change from basic `__init__` to `test_hashable_required.<locals>.MyDataclass.__init__()` (with `__qualname__`) * fix: always exists and is not inherited anymore * fix: avoid calling `asyncio.get_event_loop` directly With python 3.10, calling it results in > DeprecationWarning: There is no current event loop * fix(ci): do not run 3.10 on linux for now For now it can not be compiled. Let's just skip the check on linux for now instead of tuning the CI pipeline * fix(ci): ignore DeprecationWarning raised by `mypy` on windows * docs: add change file
3.0 KiB
Installation is as simple as:
pip install pydantic
pydantic has no required dependencies except python 3.6, 3.7, 3.8, 3.9 or 3.10,
typing-extensions, and the
dataclasses backport package for python 3.6.
If you've got python 3.6+ and pip installed, you're good to go.
Pydantic is also available on conda under the conda-forge channel:
conda install pydantic -c conda-forge
Compiled with Cython
pydantic can optionally be compiled with cython which should give a 30-50% performance improvement.
By default pip install provides optimized binaries via PyPI for Linux, MacOS and 64bit Windows.
If you're installing manually, install cython before installing pydantic and compilation should happen automatically.
To test if pydantic is compiled run:
import pydantic
print('compiled:', pydantic.compiled)
Performance vs package size trade-off
Compiled binaries can increase the size of your Python environment. If for some reason you want to reduce the size of your pydantic installation you can avoid installing any binaries using the pip --no-binary option. Make sure Cython is not in your environment, or that you have the SKIP_CYTHON environment variable set to avoid re-compiling pydantic libraries:
SKIP_CYTHON=1 pip install --no-binary pydantic pydantic
!!! note
pydantic is repeated here intentionally, --no-binary pydantic tells pip you want no binaries for pydantic,
the next pydantic tells pip which package to install.
Alternatively, you can re-compile pydantic with custom build options, this would require having the Cython package installed before re-compiling pydantic with:
CFLAGS="-Os -g0 -s" pip install \
--no-binary pydantic \
--global-option=build_ext \
pydantic
Optional dependencies
pydantic has two optional dependencies:
- If you require email validation you can add email-validator
- dotenv file support with
Settingsrequires python-dotenv
To install these along with pydantic:
pip install pydantic[email]
# or
pip install pydantic[dotenv]
# or just
pip install pydantic[email,dotenv]
Of course, you can also install these requirements manually with pip install email-validator and/or pip install.
Install from repository
And if you prefer to install pydantic directly from the repository:
pip install git+git://github.com/samuelcolvin/pydantic@master#egg=pydantic
# or with extras
pip install git+git://github.com/samuelcolvin/pydantic@master#egg=pydantic[email,dotenv]