From ab705d5028fe6a93c5aa833ea0ecf49d1b055e99 Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Fri, 4 Aug 2023 13:12:46 +0200 Subject: [PATCH] Allow pydantic v2 using transitional v1 support --- requirements.txt | 2 +- setup.cfg | 2 +- thinc/tests/test_config.py | 6 +++++- thinc/tests/test_types.py | 7 ++++++- thinc/util.py | 8 ++++++-- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index d0f8b055b..b7682e738 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ catalogue>=2.0.4,<2.1.0 confection>=0.0.1,<1.0.0 ml_datasets>=0.2.0,<0.3.0; python_version < "3.11" # Third-party dependencies -pydantic>=1.7.4,!=1.8,!=1.8.1,<1.11.0 +pydantic>=1.7.4,!=1.8,!=1.8.1,<3.0.0 numpy>=1.15.0; python_version < "3.9" numpy>=1.19.0; python_version >= "3.9" packaging>=20.0 diff --git a/setup.cfg b/setup.cfg index d38e994fb..f80422a8c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,7 +51,7 @@ install_requires = setuptools numpy>=1.15.0; python_version < "3.9" numpy>=1.19.0; python_version >= "3.9" - pydantic>=1.7.4,!=1.8,!=1.8.1,<1.11.0 + pydantic>=1.7.4,!=1.8,!=1.8.1,<3.0.0 packaging>=20.0 # Backports of modern Python features dataclasses>=0.6,<1.0; python_version < "3.7" diff --git a/thinc/tests/test_config.py b/thinc/tests/test_config.py index fe2118e25..a3f4ede46 100644 --- a/thinc/tests/test_config.py +++ b/thinc/tests/test_config.py @@ -6,7 +6,11 @@ import catalogue import numpy import pytest -from pydantic import BaseModel, PositiveInt, StrictBool, StrictFloat, constr + +try: + from pydantic.v1 import BaseModel, PositiveInt, StrictBool, StrictFloat, constr +except ImportError: + from pydantic import BaseModel, PositiveInt, StrictBool, StrictFloat, constr # type: ignore import thinc.config from thinc.api import Config, Model, NumpyOps, RAdam diff --git a/thinc/tests/test_types.py b/thinc/tests/test_types.py index ebfbb6fb6..738a309f9 100644 --- a/thinc/tests/test_types.py +++ b/thinc/tests/test_types.py @@ -1,6 +1,11 @@ import numpy import pytest -from pydantic import ValidationError, create_model + +try: + from pydantic.v1 import ValidationError, create_model +except ImportError: + from pydantic import ValidationError, create_model # type: ignore + from thinc.types import ( Floats1d, diff --git a/thinc/util.py b/thinc/util.py index 9a1aaf65b..04abe0170 100644 --- a/thinc/util.py +++ b/thinc/util.py @@ -24,7 +24,12 @@ import numpy from packaging.version import Version -from pydantic import ValidationError, create_model + +try: + from pydantic.v1 import ValidationError, create_model +except ImportError: + from pydantic import ValidationError, create_model # type: ignore + from wasabi import table from .compat import ( @@ -251,7 +256,6 @@ def to_categorical( *, label_smoothing: float = 0.0, ) -> FloatsXd: - if n_classes is None: n_classes = int(numpy.max(Y) + 1) # type: ignore