From 73bceda0e9ba3cfdb8edc5595f0deeef3e136e12 Mon Sep 17 00:00:00 2001 From: Thingus Date: Wed, 2 Jul 2025 10:17:55 +0100 Subject: [PATCH 1/3] Pydantic upgrade Removes the pydantic constraint and replaces all pydantic api calls to the back-compatible `pydantic.v1`. Also rebulds requirements.txt and dev-requirements.txt. --- constraints.in | 1 - dev-requirements.txt | 92 +++++++++++-------- flowkit_ui_backend/db/db.py | 2 +- flowkit_ui_backend/impl/accounts_api_impl.py | 2 +- flowkit_ui_backend/models/bin.py | 2 +- flowkit_ui_backend/models/categories.py | 2 +- flowkit_ui_backend/models/category.py | 2 +- flowkit_ui_backend/models/config.py | 2 +- flowkit_ui_backend/models/data_input.py | 2 +- flowkit_ui_backend/models/data_provider.py | 2 +- flowkit_ui_backend/models/data_providers.py | 2 +- flowkit_ui_backend/models/data_type.py | 2 +- flowkit_ui_backend/models/dataset.py | 2 +- flowkit_ui_backend/models/extra_models.py | 2 +- flowkit_ui_backend/models/flow_data.py | 2 +- flowkit_ui_backend/models/heartbeat.py | 2 +- flowkit_ui_backend/models/indicator.py | 2 +- flowkit_ui_backend/models/indicators.py | 2 +- flowkit_ui_backend/models/language.py | 2 +- flowkit_ui_backend/models/latest_date.py | 2 +- flowkit_ui_backend/models/metadata.py | 2 +- flowkit_ui_backend/models/query_parameters.py | 2 +- flowkit_ui_backend/models/query_result.py | 2 +- flowkit_ui_backend/models/scope_mapping.py | 2 +- flowkit_ui_backend/models/signed_url.py | 2 +- flowkit_ui_backend/models/signup_cache.py | 2 +- .../models/single_location_data.py | 2 +- .../models/spatial_resolution.py | 2 +- .../models/spatial_resolutions.py | 2 +- .../models/temporal_resolution.py | 2 +- .../models/temporal_resolutions.py | 2 +- flowkit_ui_backend/models/time_range.py | 2 +- flowkit_ui_backend/models/user_metadata.py | 2 +- flowkit_ui_backend/util/config.py | 6 +- flowkit_ui_backend/util/util.py | 2 +- requirements.in | 3 +- requirements.txt | 57 +++++++----- 37 files changed, 122 insertions(+), 101 deletions(-) delete mode 100644 constraints.in diff --git a/constraints.in b/constraints.in deleted file mode 100644 index 6047551..0000000 --- a/constraints.in +++ /dev/null @@ -1 +0,0 @@ -pydantic < 2 \ No newline at end of file diff --git a/dev-requirements.txt b/dev-requirements.txt index b8d4ffc..c95ad4d 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -12,7 +12,7 @@ aiohappyeyeballs==2.6.1 # via # -c requirements.txt # aiohttp -aiohttp==3.11.18 +aiohttp==3.12.13 # via # -c requirements.txt # -r requirements.in @@ -30,6 +30,10 @@ aniso8601==10.0.1 # via # -c requirements.txt # -r requirements.in +annotated-types==0.7.0 + # via + # -c requirements.txt + # pydantic anyio==3.7.1 # via # -c requirements.txt @@ -58,7 +62,7 @@ attrs==25.3.0 # via # -c requirements.txt # aiohttp -auth0-python==4.9.0 +auth0-python==4.10.0 # via # -c requirements.txt # -r requirements.in @@ -74,7 +78,7 @@ cachetools==5.5.2 # -r requirements.in # asyncache # google-auth -certifi==2025.4.26 +certifi==2025.6.15 # via # -c requirements.txt # -r requirements.in @@ -89,11 +93,11 @@ chardet==5.2.0 # via # -c requirements.txt # -r requirements.in -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements.txt # requests -click==8.1.8 +click==8.2.1 # via # -c requirements.txt # black @@ -102,13 +106,13 @@ colorama==0.4.6 # via # -c requirements.txt # -r requirements.in -coverage==7.8.0 +coverage==7.9.1 # via # coverage-badge # pytest-cov coverage-badge==1.1.2 # via -r dev-requirements.in -cryptography==44.0.2 +cryptography==45.0.4 # via # -c requirements.txt # auth0-python @@ -129,21 +133,21 @@ email-validator==2.2.0 # -r requirements.in executing==2.2.0 # via stack-data -fastapi==0.115.12 +fastapi==0.115.14 # via # -c requirements.txt # -r requirements.in -frozenlist==1.6.0 +frozenlist==1.7.0 # via # -c requirements.txt # aiohttp # aiosignal -google-api-core==2.24.2 +google-api-core==2.25.1 # via # -c requirements.txt # google-cloud-core # google-cloud-storage -google-auth==2.39.0 +google-auth==2.40.3 # via # -c requirements.txt # -r requirements.in @@ -154,7 +158,7 @@ google-cloud-core==2.4.3 # via # -c requirements.txt # google-cloud-storage -google-cloud-storage==3.1.0 +google-cloud-storage==3.1.1 # via # -c requirements.txt # -r requirements.in @@ -215,7 +219,7 @@ idna==3.10 # yarl iniconfig==2.1.0 # via pytest -ipython==9.2.0 +ipython==9.4.0 # via black ipython-pygments-lexers==1.1.1 # via ipython @@ -236,7 +240,7 @@ markupsafe==3.0.2 # jinja2 matplotlib-inline==0.1.7 # via ipython -multidict==6.4.3 +multidict==6.6.3 # via # -c requirements.txt # aiohttp @@ -267,17 +271,19 @@ pendulum==3.1.0 # -r requirements.in pexpect==4.9.0 # via ipython -platformdirs==4.3.7 +platformdirs==4.3.8 # via black -pluggy==1.5.0 - # via pytest +pluggy==1.6.0 + # via + # pytest + # pytest-cov promise==2.3 # via # -c requirements.txt # -r requirements.in prompt-toolkit==3.0.51 # via ipython -propcache==0.3.1 +propcache==0.3.2 # via # -c requirements.txt # aiohttp @@ -286,7 +292,7 @@ proto-plus==1.26.1 # via # -c requirements.txt # google-api-core -protobuf==6.30.2 +protobuf==6.31.1 # via # -c requirements.txt # google-api-core @@ -296,13 +302,13 @@ ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pyasn1==0.4.8 +pyasn1==0.6.1 # via # -c requirements.txt # pyasn1-modules # python-jose # rsa -pyasn1-modules==0.4.1 +pyasn1-modules==0.4.2 # via # -c requirements.txt # google-auth @@ -310,16 +316,20 @@ pycparser==2.22 # via # -c requirements.txt # cffi -pydantic==1.10.22 +pydantic==2.11.7 # via - # -c constraints.in # -c requirements.txt # -r requirements.in # fastapi -pygments==2.19.1 +pydantic-core==2.33.2 + # via + # -c requirements.txt + # pydantic +pygments==2.19.2 # via # ipython # ipython-pygments-lexers + # pytest pyjwt==2.10.1 # via # -c requirements.txt @@ -328,20 +338,20 @@ pymysql==1.1.1 # via # -c requirements.txt # aiomysql -pytest==8.3.5 +pytest==8.4.1 # via # -r dev-requirements.in # pytest-asyncio # pytest-cov # pytest-dotenv # pytest-mock -pytest-asyncio==0.26.0 +pytest-asyncio==1.0.0 # via -r dev-requirements.in -pytest-cov==6.1.1 +pytest-cov==6.2.1 # via -r dev-requirements.in pytest-dotenv==0.5.2 # via -r dev-requirements.in -pytest-mock==3.14.0 +pytest-mock==3.14.1 # via -r dev-requirements.in python-dateutil==2.9.0.post0 # via @@ -349,9 +359,9 @@ python-dateutil==2.9.0.post0 # -r requirements.in # graphene # pendulum -python-dotenv==1.1.0 +python-dotenv==1.1.1 # via pytest-dotenv -python-jose==3.4.0 +python-jose==3.5.0 # via # -c requirements.txt # -r requirements.in @@ -363,7 +373,7 @@ pyyaml==6.0.2 # via # -c requirements.txt # -r requirements.in -requests==2.32.3 +requests==2.32.4 # via # -c requirements.txt # auth0-python @@ -378,7 +388,7 @@ rx==3.2.0 # via # -c requirements.txt # -r requirements.in -setuptools==80.0.1 +setuptools==80.9.0 # via coverage-badge six==1.17.0 # via @@ -399,7 +409,7 @@ starlette==0.46.2 # -r requirements.in # asgi-correlation-id # fastapi -structlog==25.3.0 +structlog==25.4.0 # via # -c requirements.txt # -r requirements.in @@ -407,7 +417,7 @@ timing-asgi==0.3.1 # via # -c requirements.txt # -r requirements.in -tokenize-rt==6.1.0 +tokenize-rt==6.2.0 # via black tomli==2.2.1 # via coverage @@ -415,7 +425,7 @@ traitlets==5.14.3 # via # ipython # matplotlib-inline -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -c requirements.txt # -r requirements.in @@ -424,6 +434,12 @@ typing-extensions==4.13.2 # graphene # ipython # pydantic + # pydantic-core + # typing-inspection +typing-inspection==0.4.1 + # via + # -c requirements.txt + # pydantic tzdata==2025.2 # via # -c requirements.txt @@ -432,13 +448,13 @@ ujson==5.10.0 # via # -c requirements.txt # -r requirements.in -urllib3==2.4.0 +urllib3==2.5.0 # via # -c requirements.txt # -r requirements.in # auth0-python # requests -uvicorn==0.34.2 +uvicorn==0.35.0 # via # -c requirements.txt # -r requirements.in @@ -456,7 +472,7 @@ websockets==15.0.1 # via # -c requirements.txt # -r requirements.in -yarl==1.20.0 +yarl==1.20.1 # via # -c requirements.txt # aiohttp diff --git a/flowkit_ui_backend/db/db.py b/flowkit_ui_backend/db/db.py index 82cd62c..1554f07 100644 --- a/flowkit_ui_backend/db/db.py +++ b/flowkit_ui_backend/db/db.py @@ -15,7 +15,7 @@ from xmlrpc.client import boolean from http import HTTPStatus from aiomysql import Pool -from pydantic import BaseModel +from pydantic.v1 import BaseModel from flowkit_ui_backend.models.extra_models import TokenModel from flowkit_ui_backend.util import util diff --git a/flowkit_ui_backend/impl/accounts_api_impl.py b/flowkit_ui_backend/impl/accounts_api_impl.py index ddc5a8d..edbf603 100644 --- a/flowkit_ui_backend/impl/accounts_api_impl.py +++ b/flowkit_ui_backend/impl/accounts_api_impl.py @@ -11,7 +11,7 @@ from cachetools import TTLCache from fastapi import HTTPException from fastapi.params import Depends -from pydantic import SecretStr +from pydantic.v1 import SecretStr from flowkit_ui_backend.models.extra_models import TokenModel from flowkit_ui_backend.models.user_metadata import UserMetadata diff --git a/flowkit_ui_backend/models/bin.py b/flowkit_ui_backend/models/bin.py index a9f0b4e..2c0b023 100644 --- a/flowkit_ui_backend/models/bin.py +++ b/flowkit_ui_backend/models/bin.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/categories.py b/flowkit_ui_backend/models/categories.py index c9ecd17..10cc40f 100644 --- a/flowkit_ui_backend/models/categories.py +++ b/flowkit_ui_backend/models/categories.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/category.py b/flowkit_ui_backend/models/category.py index 0a80e1b..d7be55c 100644 --- a/flowkit_ui_backend/models/category.py +++ b/flowkit_ui_backend/models/category.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/config.py b/flowkit_ui_backend/models/config.py index 4e46318..16ad6d7 100644 --- a/flowkit_ui_backend/models/config.py +++ b/flowkit_ui_backend/models/config.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/data_input.py b/flowkit_ui_backend/models/data_input.py index 7fb0b52..40d0ba5 100644 --- a/flowkit_ui_backend/models/data_input.py +++ b/flowkit_ui_backend/models/data_input.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/data_provider.py b/flowkit_ui_backend/models/data_provider.py index bfc22f4..0bce7a3 100644 --- a/flowkit_ui_backend/models/data_provider.py +++ b/flowkit_ui_backend/models/data_provider.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/data_providers.py b/flowkit_ui_backend/models/data_providers.py index ae2946a..b7ae427 100644 --- a/flowkit_ui_backend/models/data_providers.py +++ b/flowkit_ui_backend/models/data_providers.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/data_type.py b/flowkit_ui_backend/models/data_type.py index fd60682..dcc656d 100644 --- a/flowkit_ui_backend/models/data_type.py +++ b/flowkit_ui_backend/models/data_type.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/dataset.py b/flowkit_ui_backend/models/dataset.py index 518bc34..7335ceb 100644 --- a/flowkit_ui_backend/models/dataset.py +++ b/flowkit_ui_backend/models/dataset.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/extra_models.py b/flowkit_ui_backend/models/extra_models.py index 2eada8d..ea06a5c 100644 --- a/flowkit_ui_backend/models/extra_models.py +++ b/flowkit_ui_backend/models/extra_models.py @@ -1,7 +1,7 @@ # coding: utf-8 from typing import List -from pydantic import BaseModel +from pydantic.v1 import BaseModel class TokenModel(BaseModel): diff --git a/flowkit_ui_backend/models/flow_data.py b/flowkit_ui_backend/models/flow_data.py index e14239f..c092ded 100644 --- a/flowkit_ui_backend/models/flow_data.py +++ b/flowkit_ui_backend/models/flow_data.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/heartbeat.py b/flowkit_ui_backend/models/heartbeat.py index 4a3d478..4170743 100644 --- a/flowkit_ui_backend/models/heartbeat.py +++ b/flowkit_ui_backend/models/heartbeat.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 from flowkit_ui_backend.util.config import Settings diff --git a/flowkit_ui_backend/models/indicator.py b/flowkit_ui_backend/models/indicator.py index 926017c..bc6eab0 100644 --- a/flowkit_ui_backend/models/indicator.py +++ b/flowkit_ui_backend/models/indicator.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/indicators.py b/flowkit_ui_backend/models/indicators.py index c45469e..3ee1c01 100644 --- a/flowkit_ui_backend/models/indicators.py +++ b/flowkit_ui_backend/models/indicators.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/language.py b/flowkit_ui_backend/models/language.py index 1285747..0c69882 100644 --- a/flowkit_ui_backend/models/language.py +++ b/flowkit_ui_backend/models/language.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/latest_date.py b/flowkit_ui_backend/models/latest_date.py index eee4bcf..a799020 100644 --- a/flowkit_ui_backend/models/latest_date.py +++ b/flowkit_ui_backend/models/latest_date.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic.v1 import BaseModel from datetime import date diff --git a/flowkit_ui_backend/models/metadata.py b/flowkit_ui_backend/models/metadata.py index 72c5b08..e02e170 100644 --- a/flowkit_ui_backend/models/metadata.py +++ b/flowkit_ui_backend/models/metadata.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/query_parameters.py b/flowkit_ui_backend/models/query_parameters.py index d33647c..d2da059 100644 --- a/flowkit_ui_backend/models/query_parameters.py +++ b/flowkit_ui_backend/models/query_parameters.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/query_result.py b/flowkit_ui_backend/models/query_result.py index a5e0b8d..65a6dab 100644 --- a/flowkit_ui_backend/models/query_result.py +++ b/flowkit_ui_backend/models/query_result.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/scope_mapping.py b/flowkit_ui_backend/models/scope_mapping.py index bb88b8d..b45708c 100644 --- a/flowkit_ui_backend/models/scope_mapping.py +++ b/flowkit_ui_backend/models/scope_mapping.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/signed_url.py b/flowkit_ui_backend/models/signed_url.py index 93c9d0c..13d2618 100644 --- a/flowkit_ui_backend/models/signed_url.py +++ b/flowkit_ui_backend/models/signed_url.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic.v1 import BaseModel class SignedUrl(BaseModel): diff --git a/flowkit_ui_backend/models/signup_cache.py b/flowkit_ui_backend/models/signup_cache.py index 3aa7c48..8029bde 100644 --- a/flowkit_ui_backend/models/signup_cache.py +++ b/flowkit_ui_backend/models/signup_cache.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/single_location_data.py b/flowkit_ui_backend/models/single_location_data.py index 354cc56..6a8faab 100644 --- a/flowkit_ui_backend/models/single_location_data.py +++ b/flowkit_ui_backend/models/single_location_data.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/spatial_resolution.py b/flowkit_ui_backend/models/spatial_resolution.py index 8e3283b..d09aaf6 100644 --- a/flowkit_ui_backend/models/spatial_resolution.py +++ b/flowkit_ui_backend/models/spatial_resolution.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/spatial_resolutions.py b/flowkit_ui_backend/models/spatial_resolutions.py index fb07087..42ed60a 100644 --- a/flowkit_ui_backend/models/spatial_resolutions.py +++ b/flowkit_ui_backend/models/spatial_resolutions.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/temporal_resolution.py b/flowkit_ui_backend/models/temporal_resolution.py index f626b02..dbdbc8b 100644 --- a/flowkit_ui_backend/models/temporal_resolution.py +++ b/flowkit_ui_backend/models/temporal_resolution.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/temporal_resolutions.py b/flowkit_ui_backend/models/temporal_resolutions.py index 6ea9555..f6f7c5d 100644 --- a/flowkit_ui_backend/models/temporal_resolutions.py +++ b/flowkit_ui_backend/models/temporal_resolutions.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/time_range.py b/flowkit_ui_backend/models/time_range.py index 1490ab1..f7137ab 100644 --- a/flowkit_ui_backend/models/time_range.py +++ b/flowkit_ui_backend/models/time_range.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/models/user_metadata.py b/flowkit_ui_backend/models/user_metadata.py index d858066..5a9767e 100644 --- a/flowkit_ui_backend/models/user_metadata.py +++ b/flowkit_ui_backend/models/user_metadata.py @@ -9,7 +9,7 @@ import re # noqa: F401 from typing import Any, Dict, List, Optional # noqa: F401 -from pydantic import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 +from pydantic.v1 import AnyUrl, BaseModel, EmailStr, validator, BaseConfig # noqa: F401 # required to make arbitrary datatypes work, see https://github.com/tiangolo/fastapi/issues/2382 BaseConfig.arbitrary_types_allowed = True diff --git a/flowkit_ui_backend/util/config.py b/flowkit_ui_backend/util/config.py index 63a078c..c391c67 100644 --- a/flowkit_ui_backend/util/config.py +++ b/flowkit_ui_backend/util/config.py @@ -4,9 +4,9 @@ from typing import Optional, Annotated from fastapi import Depends -from pydantic import BaseSettings, Field -from pydantic.networks import AnyHttpUrl -from pydantic.types import SecretStr +from pydantic.v1 import BaseSettings, Field +from pydantic.v1.networks import AnyHttpUrl +from pydantic.v1.types import SecretStr from flowkit_ui_backend.util.logging import LogLevel diff --git a/flowkit_ui_backend/util/util.py b/flowkit_ui_backend/util/util.py index 28333ba..6759cc0 100644 --- a/flowkit_ui_backend/util/util.py +++ b/flowkit_ui_backend/util/util.py @@ -11,7 +11,7 @@ import aiofiles from aiocsv import AsyncReader from typing import Union -from pydantic import BaseModel +from pydantic.v1 import BaseModel from aiomysql import Pool from flowkit_ui_backend.db import db from flowkit_ui_backend.models.config import Config diff --git a/requirements.in b/requirements.in index 63f4228..5c9677c 100644 --- a/requirements.in +++ b/requirements.in @@ -1,4 +1,3 @@ --c constraints.in aiocsv aiofiles aiohttp @@ -50,4 +49,4 @@ websockets asgi-correlation-id timing-asgi google-cloud-storage -google-auth \ No newline at end of file +google-auth diff --git a/requirements.txt b/requirements.txt index 772a870..be0b73f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ aiofiles==24.1.0 # via -r requirements.in aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.11.18 +aiohttp==3.12.13 # via # -r requirements.in # auth0-python @@ -16,6 +16,8 @@ aiosignal==1.3.2 # via aiohttp aniso8601==10.0.1 # via -r requirements.in +annotated-types==0.7.0 + # via pydantic anyio==3.7.1 # via # httpx @@ -31,7 +33,7 @@ asyncache==0.3.1 # via -r requirements.in attrs==25.3.0 # via aiohttp -auth0-python==4.9.0 +auth0-python==4.10.0 # via -r requirements.in better-exceptions==0.3.3 # via -r requirements.in @@ -40,7 +42,7 @@ cachetools==5.5.2 # -r requirements.in # asyncache # google-auth -certifi==2025.4.26 +certifi==2025.6.15 # via # -r requirements.in # httpcore @@ -50,13 +52,13 @@ cffi==1.17.1 # via cryptography chardet==5.2.0 # via -r requirements.in -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via requests -click==8.1.8 +click==8.2.1 # via uvicorn colorama==0.4.6 # via -r requirements.in -cryptography==44.0.2 +cryptography==45.0.4 # via auth0-python dnspython==2.7.0 # via @@ -66,17 +68,17 @@ ecdsa==0.19.1 # via python-jose email-validator==2.2.0 # via -r requirements.in -fastapi==0.115.12 +fastapi==0.115.14 # via -r requirements.in -frozenlist==1.6.0 +frozenlist==1.7.0 # via # aiohttp # aiosignal -google-api-core==2.24.2 +google-api-core==2.25.1 # via # google-cloud-core # google-cloud-storage -google-auth==2.39.0 +google-auth==2.40.3 # via # -r requirements.in # google-api-core @@ -84,7 +86,7 @@ google-auth==2.39.0 # google-cloud-storage google-cloud-core==2.4.3 # via google-cloud-storage -google-cloud-storage==3.1.0 +google-cloud-storage==3.1.1 # via -r requirements.in google-crc32c==1.7.1 # via @@ -132,7 +134,7 @@ markupsafe==3.0.2 # via # -r requirements.in # jinja2 -multidict==6.4.3 +multidict==6.6.3 # via # aiohttp # yarl @@ -146,31 +148,32 @@ pendulum==3.1.0 # via -r requirements.in promise==2.3 # via -r requirements.in -propcache==0.3.1 +propcache==0.3.2 # via # aiohttp # yarl proto-plus==1.26.1 # via google-api-core -protobuf==6.30.2 +protobuf==6.31.1 # via # google-api-core # googleapis-common-protos # proto-plus -pyasn1==0.4.8 +pyasn1==0.6.1 # via # pyasn1-modules # python-jose # rsa -pyasn1-modules==0.4.1 +pyasn1-modules==0.4.2 # via google-auth pycparser==2.22 # via cffi -pydantic==1.10.22 +pydantic==2.11.7 # via - # -c constraints.in # -r requirements.in # fastapi +pydantic-core==2.33.2 + # via pydantic pyjwt==2.10.1 # via auth0-python pymysql==1.1.1 @@ -180,13 +183,13 @@ python-dateutil==2.9.0.post0 # -r requirements.in # graphene # pendulum -python-jose==3.4.0 +python-jose==3.5.0 # via -r requirements.in python-multipart==0.0.20 # via -r requirements.in pyyaml==6.0.2 # via -r requirements.in -requests==2.32.3 +requests==2.32.4 # via # auth0-python # google-api-core @@ -210,27 +213,31 @@ starlette==0.46.2 # -r requirements.in # asgi-correlation-id # fastapi -structlog==25.3.0 +structlog==25.4.0 # via -r requirements.in timing-asgi==0.3.1 # via -r requirements.in -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -r requirements.in # aiocsv # fastapi # graphene # pydantic + # pydantic-core + # typing-inspection +typing-inspection==0.4.1 + # via pydantic tzdata==2025.2 # via pendulum ujson==5.10.0 # via -r requirements.in -urllib3==2.4.0 +urllib3==2.5.0 # via # -r requirements.in # auth0-python # requests -uvicorn==0.34.2 +uvicorn==0.35.0 # via -r requirements.in uvloop==0.21.0 # via -r requirements.in @@ -238,5 +245,5 @@ watchgod==0.8.2 # via -r requirements.in websockets==15.0.1 # via -r requirements.in -yarl==1.20.0 +yarl==1.20.1 # via aiohttp From 723e0e4226dcece83cd7a33acb05be0a1e426162 Mon Sep 17 00:00:00 2001 From: Thingus Date: Wed, 2 Jul 2025 13:23:34 +0100 Subject: [PATCH 2/3] Adding this to dev requirements --- dev-requirements.in | 1 + dev-requirements.txt | 54 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/dev-requirements.in b/dev-requirements.in index 515660f..1898266 100644 --- a/dev-requirements.in +++ b/dev-requirements.in @@ -7,3 +7,4 @@ pytest-cov>=3.0.0 pytest-mock>=3.7.0 pytest-asyncio pytest-dotenv +. diff --git a/dev-requirements.txt b/dev-requirements.txt index c95ad4d..db46479 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -39,6 +39,7 @@ anyio==3.7.1 # -c requirements.txt # httpx # starlette + # watchfiles # watchgod asgi-correlation-id==4.3.4 # via @@ -101,6 +102,8 @@ click==8.2.1 # via # -c requirements.txt # black + # rich-toolkit + # typer # uvicorn colorama==0.4.6 # via @@ -131,12 +134,18 @@ email-validator==2.2.0 # via # -c requirements.txt # -r requirements.in + # fastapi executing==2.2.0 # via stack-data fastapi==0.115.14 # via # -c requirements.txt # -r requirements.in + # flowkit-ui-backend +fastapi-cli==0.0.7 + # via fastapi +. + # via -r dev-requirements.in frozenlist==1.7.0 # via # -c requirements.txt @@ -204,10 +213,12 @@ httptools==0.6.4 # via # -c requirements.txt # -r requirements.in + # uvicorn httpx==0.28.1 # via # -c requirements.txt # -r requirements.in + # fastapi idna==3.10 # via # -c requirements.txt @@ -227,12 +238,16 @@ itsdangerous==2.2.0 # via # -c requirements.txt # -r requirements.in + # fastapi jedi==0.19.2 # via ipython jinja2==3.1.6 # via # -c requirements.txt # -r requirements.in + # fastapi +markdown-it-py==3.0.0 + # via rich markupsafe==3.0.2 # via # -c requirements.txt @@ -240,6 +255,8 @@ markupsafe==3.0.2 # jinja2 matplotlib-inline==0.1.7 # via ipython +mdurl==0.1.2 + # via markdown-it-py multidict==6.6.3 # via # -c requirements.txt @@ -255,6 +272,7 @@ orjson==3.10.18 # via # -c requirements.txt # -r requirements.in + # fastapi packaging==25.0 # via # -c requirements.txt @@ -321,15 +339,22 @@ pydantic==2.11.7 # -c requirements.txt # -r requirements.in # fastapi + # pydantic-extra-types + # pydantic-settings pydantic-core==2.33.2 # via # -c requirements.txt # pydantic +pydantic-extra-types==2.10.5 + # via fastapi +pydantic-settings==2.10.1 + # via fastapi pygments==2.19.2 # via # ipython # ipython-pygments-lexers # pytest + # rich pyjwt==2.10.1 # via # -c requirements.txt @@ -360,7 +385,10 @@ python-dateutil==2.9.0.post0 # graphene # pendulum python-dotenv==1.1.1 - # via pytest-dotenv + # via + # pydantic-settings + # pytest-dotenv + # uvicorn python-jose==3.5.0 # via # -c requirements.txt @@ -369,16 +397,25 @@ python-multipart==0.0.20 # via # -c requirements.txt # -r requirements.in + # fastapi pyyaml==6.0.2 # via # -c requirements.txt # -r requirements.in + # fastapi + # uvicorn requests==2.32.4 # via # -c requirements.txt # auth0-python # google-api-core # google-cloud-storage +rich==14.0.0 + # via + # rich-toolkit + # typer +rich-toolkit==0.14.8 + # via fastapi-cli rsa==4.9.1 # via # -c requirements.txt @@ -390,6 +427,8 @@ rx==3.2.0 # -r requirements.in setuptools==80.9.0 # via coverage-badge +shellingham==1.5.4 + # via typer six==1.17.0 # via # -c requirements.txt @@ -425,6 +464,8 @@ traitlets==5.14.3 # via # ipython # matplotlib-inline +typer==0.16.0 + # via fastapi-cli typing-extensions==4.14.0 # via # -c requirements.txt @@ -435,11 +476,15 @@ typing-extensions==4.14.0 # ipython # pydantic # pydantic-core + # pydantic-extra-types + # rich-toolkit + # typer # typing-inspection typing-inspection==0.4.1 # via # -c requirements.txt # pydantic + # pydantic-settings tzdata==2025.2 # via # -c requirements.txt @@ -448,6 +493,7 @@ ujson==5.10.0 # via # -c requirements.txt # -r requirements.in + # fastapi urllib3==2.5.0 # via # -c requirements.txt @@ -458,10 +504,15 @@ uvicorn==0.35.0 # via # -c requirements.txt # -r requirements.in + # fastapi + # fastapi-cli uvloop==0.21.0 # via # -c requirements.txt # -r requirements.in + # uvicorn +watchfiles==1.1.0 + # via uvicorn watchgod==0.8.2 # via # -c requirements.txt @@ -472,6 +523,7 @@ websockets==15.0.1 # via # -c requirements.txt # -r requirements.in + # uvicorn yarl==1.20.1 # via # -c requirements.txt From 86407db57ac7f0cc51777fd1ab66bbaa0d172dc3 Mon Sep 17 00:00:00 2001 From: Thingus Date: Wed, 2 Jul 2025 13:36:36 +0100 Subject: [PATCH 3/3] Pinning pydantic to v2 and above --- constraints.in | 1 + dev-requirements.in | 2 +- dev-requirements.txt | 55 ++------------------------------------------ requirements.in | 1 + requirements.txt | 1 + 5 files changed, 6 insertions(+), 54 deletions(-) create mode 100644 constraints.in diff --git a/constraints.in b/constraints.in new file mode 100644 index 0000000..62ce888 --- /dev/null +++ b/constraints.in @@ -0,0 +1 @@ +pydantic >= 2 diff --git a/dev-requirements.in b/dev-requirements.in index 1898266..80160fc 100644 --- a/dev-requirements.in +++ b/dev-requirements.in @@ -7,4 +7,4 @@ pytest-cov>=3.0.0 pytest-mock>=3.7.0 pytest-asyncio pytest-dotenv -. + diff --git a/dev-requirements.txt b/dev-requirements.txt index db46479..6ee58ea 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -39,7 +39,6 @@ anyio==3.7.1 # -c requirements.txt # httpx # starlette - # watchfiles # watchgod asgi-correlation-id==4.3.4 # via @@ -102,8 +101,6 @@ click==8.2.1 # via # -c requirements.txt # black - # rich-toolkit - # typer # uvicorn colorama==0.4.6 # via @@ -134,18 +131,12 @@ email-validator==2.2.0 # via # -c requirements.txt # -r requirements.in - # fastapi executing==2.2.0 # via stack-data fastapi==0.115.14 # via # -c requirements.txt # -r requirements.in - # flowkit-ui-backend -fastapi-cli==0.0.7 - # via fastapi -. - # via -r dev-requirements.in frozenlist==1.7.0 # via # -c requirements.txt @@ -213,12 +204,10 @@ httptools==0.6.4 # via # -c requirements.txt # -r requirements.in - # uvicorn httpx==0.28.1 # via # -c requirements.txt # -r requirements.in - # fastapi idna==3.10 # via # -c requirements.txt @@ -238,16 +227,12 @@ itsdangerous==2.2.0 # via # -c requirements.txt # -r requirements.in - # fastapi jedi==0.19.2 # via ipython jinja2==3.1.6 # via # -c requirements.txt # -r requirements.in - # fastapi -markdown-it-py==3.0.0 - # via rich markupsafe==3.0.2 # via # -c requirements.txt @@ -255,8 +240,6 @@ markupsafe==3.0.2 # jinja2 matplotlib-inline==0.1.7 # via ipython -mdurl==0.1.2 - # via markdown-it-py multidict==6.6.3 # via # -c requirements.txt @@ -272,7 +255,6 @@ orjson==3.10.18 # via # -c requirements.txt # -r requirements.in - # fastapi packaging==25.0 # via # -c requirements.txt @@ -336,25 +318,19 @@ pycparser==2.22 # cffi pydantic==2.11.7 # via + # -c constraints.in # -c requirements.txt # -r requirements.in # fastapi - # pydantic-extra-types - # pydantic-settings pydantic-core==2.33.2 # via # -c requirements.txt # pydantic -pydantic-extra-types==2.10.5 - # via fastapi -pydantic-settings==2.10.1 - # via fastapi pygments==2.19.2 # via # ipython # ipython-pygments-lexers # pytest - # rich pyjwt==2.10.1 # via # -c requirements.txt @@ -385,10 +361,7 @@ python-dateutil==2.9.0.post0 # graphene # pendulum python-dotenv==1.1.1 - # via - # pydantic-settings - # pytest-dotenv - # uvicorn + # via pytest-dotenv python-jose==3.5.0 # via # -c requirements.txt @@ -397,25 +370,16 @@ python-multipart==0.0.20 # via # -c requirements.txt # -r requirements.in - # fastapi pyyaml==6.0.2 # via # -c requirements.txt # -r requirements.in - # fastapi - # uvicorn requests==2.32.4 # via # -c requirements.txt # auth0-python # google-api-core # google-cloud-storage -rich==14.0.0 - # via - # rich-toolkit - # typer -rich-toolkit==0.14.8 - # via fastapi-cli rsa==4.9.1 # via # -c requirements.txt @@ -427,8 +391,6 @@ rx==3.2.0 # -r requirements.in setuptools==80.9.0 # via coverage-badge -shellingham==1.5.4 - # via typer six==1.17.0 # via # -c requirements.txt @@ -464,8 +426,6 @@ traitlets==5.14.3 # via # ipython # matplotlib-inline -typer==0.16.0 - # via fastapi-cli typing-extensions==4.14.0 # via # -c requirements.txt @@ -476,15 +436,11 @@ typing-extensions==4.14.0 # ipython # pydantic # pydantic-core - # pydantic-extra-types - # rich-toolkit - # typer # typing-inspection typing-inspection==0.4.1 # via # -c requirements.txt # pydantic - # pydantic-settings tzdata==2025.2 # via # -c requirements.txt @@ -493,7 +449,6 @@ ujson==5.10.0 # via # -c requirements.txt # -r requirements.in - # fastapi urllib3==2.5.0 # via # -c requirements.txt @@ -504,15 +459,10 @@ uvicorn==0.35.0 # via # -c requirements.txt # -r requirements.in - # fastapi - # fastapi-cli uvloop==0.21.0 # via # -c requirements.txt # -r requirements.in - # uvicorn -watchfiles==1.1.0 - # via uvicorn watchgod==0.8.2 # via # -c requirements.txt @@ -523,7 +473,6 @@ websockets==15.0.1 # via # -c requirements.txt # -r requirements.in - # uvicorn yarl==1.20.1 # via # -c requirements.txt diff --git a/requirements.in b/requirements.in index 5c9677c..b511218 100644 --- a/requirements.in +++ b/requirements.in @@ -1,3 +1,4 @@ +-c constraints.in aiocsv aiofiles aiohttp diff --git a/requirements.txt b/requirements.txt index be0b73f..4d4b208 100644 --- a/requirements.txt +++ b/requirements.txt @@ -170,6 +170,7 @@ pycparser==2.22 # via cffi pydantic==2.11.7 # via + # -c constraints.in # -r requirements.in # fastapi pydantic-core==2.33.2