mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
4a54f393ad
* 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
82 lines
3.0 KiB
Markdown
82 lines
3.0 KiB
Markdown
Installation is as simple as:
|
|
|
|
```bash
|
|
pip install pydantic
|
|
```
|
|
|
|
*pydantic* has no required dependencies except python 3.6, 3.7, 3.8, 3.9 or 3.10,
|
|
[`typing-extensions`](https://pypi.org/project/typing-extensions/), and the
|
|
[`dataclasses`](https://pypi.org/project/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](https://www.anaconda.com) under the [conda-forge](https://conda-forge.org)
|
|
channel:
|
|
|
|
```bash
|
|
conda install pydantic -c conda-forge
|
|
```
|
|
|
|
## Compiled with Cython
|
|
|
|
*pydantic* can optionally be compiled with [cython](https://cython.org/) which should give a 30-50% performance improvement.
|
|
|
|
By default `pip install` provides optimized binaries via [PyPI](https://pypi.org/project/pydantic/#files) 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:
|
|
|
|
```py
|
|
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`](https://pip.pypa.io/en/stable/cli/pip_install/#install-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:
|
|
|
|
```bash
|
|
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](https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html), this would require having the [`Cython`](https://pypi.org/project/Cython/) package installed before re-compiling *pydantic* with:
|
|
```bash
|
|
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](https://github.com/JoshData/python-email-validator)
|
|
* [dotenv file support](usage/settings.md#dotenv-env-support) with `Settings` requires
|
|
[python-dotenv](https://pypi.org/project/python-dotenv)
|
|
|
|
To install these along with *pydantic*:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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]
|
|
```
|