diff --git a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/agent/errors.py b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/agent/errors.py index ae21b8f09a7..b297004e283 100644 --- a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/agent/errors.py +++ b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/agent/errors.py @@ -1,7 +1,7 @@ -from pydantic.errors import PydanticErrorMixin +from common_library.errors_classes import OsparcErrorMixin -class BaseAgentRPCError(PydanticErrorMixin, Exception): +class BaseAgentRPCError(OsparcErrorMixin, Exception): ... diff --git a/services/agent/requirements/_base.txt b/services/agent/requirements/_base.txt index d73f7540578..a6db5134bfb 100644 --- a/services/agent/requirements/_base.txt +++ b/services/agent/requirements/_base.txt @@ -10,14 +10,20 @@ aiodocker==0.23.0 # -r requirements/_base.in aiofiles==24.1.0 # via -r requirements/../../../packages/service-library/requirements/_base.in -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via aiohttp -aiohttp==3.10.6 +aiohttp==3.10.10 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # aiodocker @@ -27,7 +33,7 @@ aiosignal==1.3.1 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.6.0 +anyio==4.6.2.post1 # via # fast-depends # faststream @@ -47,16 +53,22 @@ attrs==24.2.0 # referencing certifi==2024.8.30 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # httpcore # httpx # requests -charset-normalizer==3.3.2 +charset-normalizer==3.4.0 # via requests click==8.1.7 # via @@ -68,18 +80,17 @@ deprecated==1.2.14 # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-semantic-conventions -dnspython==2.6.1 +dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via pydantic fast-depends==2.4.11 # via faststream -fastapi==0.115.0 +fastapi==0.115.2 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # -r requirements/_base.in - # prometheus-fastapi-instrumentator -faststream==0.5.25 +faststream==0.5.27 # via -r requirements/../../../packages/service-library/requirements/_base.in frozenlist==1.4.1 # via @@ -89,20 +100,26 @@ googleapis-common-protos==1.65.0 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -grpcio==1.66.1 +grpcio==1.67.0 # via opentelemetry-exporter-otlp-proto-grpc h11==0.14.0 # via # httpcore # uvicorn -httpcore==1.0.5 +httpcore==1.0.6 # via httpx httpx==0.27.2 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # -r requirements/../../../packages/service-library/requirements/_fastapi.in @@ -184,10 +201,16 @@ opentelemetry-util-http==0.48b0 # opentelemetry-instrumentation-requests orjson==3.10.7 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # -r requirements/../../../packages/models-library/requirements/_base.in @@ -200,8 +223,10 @@ prometheus-client==0.21.0 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # prometheus-fastapi-instrumentator -prometheus-fastapi-instrumentator==6.1.0 +prometheus-fastapi-instrumentator==7.0.0 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in +propcache==0.2.0 + # via yarl protobuf==4.25.5 # via # googleapis-common-protos @@ -210,16 +235,28 @@ psutil==6.0.0 # via -r requirements/../../../packages/service-library/requirements/_base.in pydantic==2.9.2 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt + # -r requirements/../../../packages/common-library/requirements/_base.in + # -r requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in + # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/_base.in # fast-depends @@ -229,37 +266,50 @@ pydantic==2.9.2 pydantic-core==2.23.4 # via pydantic pydantic-extra-types==2.9.0 - # via -r requirements/../../../packages/models-library/requirements/_base.in + # via + # -r requirements/../../../packages/models-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in pydantic-settings==2.5.2 # via # -r requirements/../../../packages/models-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in + # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in pygments==2.18.0 # via rich -pyinstrument==4.7.3 +pyinstrument==5.0.0 # via -r requirements/../../../packages/service-library/requirements/_base.in python-dateutil==2.9.0.post0 # via arrow -python-dotenv==1.0.0 - # via - # -r requirements/_base.in - # pydantic-settings -rich==13.4.2 +python-dotenv==1.0.1 + # via pydantic-settings pyyaml==6.0.2 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # -r requirements/../../../packages/service-library/requirements/_base.in -redis==5.0.8 +redis==5.1.1 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # -r requirements/../../../packages/service-library/requirements/_base.in @@ -272,7 +322,7 @@ repro-zipfile==0.3.1 # via -r requirements/../../../packages/service-library/requirements/_base.in requests==2.32.3 # via opentelemetry-exporter-otlp-proto-http -rich==13.8.1 +rich==13.9.2 # via # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in @@ -281,7 +331,7 @@ rpds-py==0.20.0 # via # jsonschema # referencing -setuptools==75.1.0 +setuptools==75.2.0 # via opentelemetry-instrumentation shellingham==1.5.4 # via typer @@ -291,18 +341,25 @@ sniffio==1.3.1 # via # anyio # httpx -starlette==0.38.6 +starlette==0.40.0 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # fastapi + # prometheus-fastapi-instrumentator tenacity==9.0.0 # via -r requirements/../../../packages/service-library/requirements/_base.in -toolz==0.12.1 +toolz==1.0.0 # via -r requirements/../../../packages/service-library/requirements/_base.in tqdm==4.66.5 # via -r requirements/../../../packages/service-library/requirements/_base.in @@ -310,7 +367,7 @@ typer==0.12.5 # via # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -types-python-dateutil==2.9.0.20240906 +types-python-dateutil==2.9.0.20241003 # via arrow typing-extensions==4.12.2 # via @@ -323,14 +380,20 @@ typing-extensions==4.12.2 # typer urllib3==2.2.3 # via + # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt + # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # requests -uvicorn==0.30.6 +uvicorn==0.32.0 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # -r requirements/_base.in @@ -338,7 +401,7 @@ wrapt==1.16.0 # via # deprecated # opentelemetry-instrumentation -yarl==1.12.1 +yarl==1.15.3 # via # aio-pika # aiohttp diff --git a/services/agent/requirements/_test.txt b/services/agent/requirements/_test.txt index 01b05ccb4d8..b58735a4be8 100644 --- a/services/agent/requirements/_test.txt +++ b/services/agent/requirements/_test.txt @@ -1,16 +1,16 @@ -aioboto3==13.1.1 +aioboto3==13.2.0 # via -r requirements/_test.in -aiobotocore==2.13.1 +aiobotocore==2.15.2 # via aioboto3 aiofiles==24.1.0 # via # -c requirements/_base.txt # aioboto3 -aiohappyeyeballs==2.4.0 +aiohappyeyeballs==2.4.3 # via # -c requirements/_base.txt # aiohttp -aiohttp==3.10.6 +aiohttp==3.10.10 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -27,7 +27,7 @@ annotated-types==0.7.0 # pydantic antlr4-python3-runtime==4.13.2 # via moto -anyio==4.6.0 +anyio==4.6.2.post1 # via # -c requirements/_base.txt # httpx @@ -45,12 +45,12 @@ aws-xray-sdk==2.14.0 # via moto blinker==1.8.2 # via flask -boto3==1.34.131 +boto3==1.35.36 # via # aiobotocore # aws-sam-translator # moto -botocore==1.34.131 +botocore==1.35.36 # via # aiobotocore # aws-xray-sdk @@ -66,9 +66,9 @@ certifi==2024.8.30 # requests cffi==1.17.1 # via cryptography -cfn-lint==1.15.1 +cfn-lint==1.16.1 # via moto -charset-normalizer==3.3.2 +charset-normalizer==3.4.0 # via # -c requirements/_base.txt # requests @@ -76,7 +76,7 @@ click==8.1.7 # via # -c requirements/_base.txt # flask -coverage==7.6.1 +coverage==7.6.3 # via # -r requirements/_test.in # pytest-cov @@ -87,12 +87,7 @@ cryptography==43.0.1 # moto docker==7.1.0 # via moto -ecdsa==0.19.0 - # via - # moto - # python-jose - # sshpubkeys -faker==30.0.0 +faker==30.4.0 # via -r requirements/_test.in flask==3.0.3 # via @@ -105,13 +100,13 @@ frozenlist==1.4.1 # -c requirements/_base.txt # aiohttp # aiosignal -graphql-core==3.2.4 +graphql-core==3.2.5 # via moto h11==0.14.0 # via # -c requirements/_base.txt # httpcore -httpcore==1.0.5 +httpcore==1.0.6 # via # -c requirements/_base.txt # httpx @@ -146,7 +141,7 @@ jsondiff==2.2.1 # via moto jsonpatch==1.33 # via cfn-lint -jsonpath-ng==1.6.1 +jsonpath-ng==1.7.0 # via moto jsonpointer==3.0.0 # via jsonpatch @@ -165,11 +160,11 @@ jsonschema-specifications==2023.7.1 # openapi-schema-validator lazy-object-proxy==1.10.0 # via openapi-spec-validator -markupsafe==2.1.5 +markupsafe==3.0.1 # via # jinja2 # werkzeug -moto==5.0.15 +moto==5.0.17 # via -r requirements/_test.in mpmath==1.3.0 # via sympy @@ -178,7 +173,7 @@ multidict==6.1.0 # -c requirements/_base.txt # aiohttp # yarl -networkx==3.3 +networkx==3.4.1 # via cfn-lint openapi-schema-validator==0.6.2 # via openapi-spec-validator @@ -194,6 +189,10 @@ pluggy==1.5.0 # via pytest ply==3.11 # via jsonpath-ng +propcache==0.2.0 + # via + # -c requirements/_base.txt + # yarl py-partiql-parser==0.5.6 # via moto pycparser==2.22 @@ -207,7 +206,7 @@ pydantic-core==2.23.4 # via # -c requirements/_base.txt # pydantic -pyparsing==3.1.4 +pyparsing==3.2.0 # via moto pytest==8.3.3 # via @@ -232,7 +231,9 @@ python-dateutil==2.9.0.post0 # faker # moto python-dotenv==1.0.1 - # via -r requirements/_test.in + # via + # -c requirements/_base.txt + # -r requirements/_test.in pyyaml==6.0.2 # via # -c requirements/../../../requirements/constraints.txt @@ -266,9 +267,9 @@ rpds-py==0.20.0 # -c requirements/_base.txt # jsonschema # referencing -s3transfer==0.10.2 +s3transfer==0.10.3 # via boto3 -setuptools==75.1.0 +setuptools==75.2.0 # via # -c requirements/_base.txt # moto @@ -290,7 +291,9 @@ typing-extensions==4.12.2 # -c requirements/_base.txt # aws-sam-translator # cfn-lint + # faker # pydantic + # pydantic-core urllib3==2.2.3 # via # -c requirements/../../../requirements/constraints.txt @@ -308,9 +311,9 @@ wrapt==1.16.0 # -c requirements/_base.txt # aiobotocore # aws-xray-sdk -xmltodict==0.13.0 +xmltodict==0.14.2 # via moto -yarl==1.12.1 +yarl==1.15.3 # via # -c requirements/_base.txt # aiohttp diff --git a/services/agent/requirements/_tools.txt b/services/agent/requirements/_tools.txt index 23facad9ab3..7b16cb6547b 100644 --- a/services/agent/requirements/_tools.txt +++ b/services/agent/requirements/_tools.txt @@ -1,8 +1,8 @@ -astroid==3.3.4 +astroid==3.3.5 # via pylint -black==24.8.0 +black==24.10.0 # via -r requirements/../../../requirements/devenv.txt -build==1.2.2 +build==1.2.2.post1 # via pip-tools bump2version==1.0.1 # via -r requirements/../../../requirements/devenv.txt @@ -14,9 +14,9 @@ click==8.1.7 # -c requirements/_test.txt # black # pip-tools -dill==0.3.8 +dill==0.3.9 # via pylint -distlib==0.3.8 +distlib==0.3.9 # via virtualenv filelock==3.16.1 # via virtualenv @@ -53,11 +53,11 @@ platformdirs==4.3.6 # black # pylint # virtualenv -pre-commit==3.8.0 +pre-commit==4.0.1 # via -r requirements/../../../requirements/devenv.txt pylint==3.3.1 # via -r requirements/../../../requirements/devenv.txt -pyproject-hooks==1.1.0 +pyproject-hooks==1.2.0 # via # build # pip-tools @@ -67,9 +67,9 @@ pyyaml==6.0.2 # -c requirements/_base.txt # -c requirements/_test.txt # pre-commit -ruff==0.6.7 +ruff==0.6.9 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.1.0 +setuptools==75.2.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -81,7 +81,7 @@ typing-extensions==4.12.2 # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.26.5 +virtualenv==20.26.6 # via pre-commit wheel==0.44.0 # via pip-tools diff --git a/services/agent/src/simcore_service_agent/core/settings.py b/services/agent/src/simcore_service_agent/core/settings.py index bc713ca3779..1340794096f 100644 --- a/services/agent/src/simcore_service_agent/core/settings.py +++ b/services/agent/src/simcore_service_agent/core/settings.py @@ -1,8 +1,9 @@ from datetime import timedelta +from common_library.pydantic_networks_extension import AnyHttpUrlLegacy from common_library.pydantic_validators import validate_numeric_string_as_timedelta from models_library.basic_types import BootModeEnum, LogLevel -from pydantic import AliasChoices, AnyHttpUrl, Field, field_validator +from pydantic import AliasChoices, Field, field_validator from settings_library.base import BaseCustomSettings from settings_library.r_clone import S3Provider from settings_library.rabbit import RabbitSettings @@ -33,7 +34,7 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): AGENT_VOLUMES_CLEANUP_TARGET_SWARM_STACK_NAME: str = Field( ..., description="Exactly the same as director-v2's `SWARM_STACK_NAME` env var" ) - AGENT_VOLUMES_CLEANUP_S3_ENDPOINT: AnyHttpUrl + AGENT_VOLUMES_CLEANUP_S3_ENDPOINT: AnyHttpUrlLegacy AGENT_VOLUMES_CLEANUP_S3_ACCESS_KEY: str AGENT_VOLUMES_CLEANUP_S3_SECRET_KEY: str AGENT_VOLUMES_CLEANUP_S3_BUCKET: str @@ -73,7 +74,8 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): AGENT_DOCKER_NODE_ID: str = Field(..., description="used by the rabbitmq module") AGENT_RABBITMQ: RabbitSettings = Field( - auto_default_from_env=True, description="settings for service/rabbitmq" + json_schema_extra={"auto_default_from_env": True}, + description="settings for service/rabbitmq", ) _validate_agent_volumes_cleanup_interval = validate_numeric_string_as_timedelta( diff --git a/services/agent/src/simcore_service_agent/models/volumes.py b/services/agent/src/simcore_service_agent/models/volumes.py index ceb31048650..cf227bf69e9 100644 --- a/services/agent/src/simcore_service_agent/models/volumes.py +++ b/services/agent/src/simcore_service_agent/models/volumes.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import Final from models_library.api_schemas_directorv2.services import ( CHARS_IN_VOLUME_NAME_BEFORE_DIR_NAME, @@ -7,7 +8,7 @@ from models_library.projects_nodes_io import NodeID from models_library.services_types import RunID from models_library.users import UserID -from pydantic import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field, TypeAdapter class DynamicServiceVolumeLabels(BaseModel): @@ -22,7 +23,14 @@ class DynamicServiceVolumeLabels(BaseModel): def directory_name(self) -> str: return self.source[CHARS_IN_VOLUME_NAME_BEFORE_DIR_NAME:][::-1].strip("_") + model_config = ConfigDict( + arbitrary_types_allowed=True, + ) + class VolumeDetails(BaseModel): mountpoint: Path = Field(alias="Mountpoint") labels: DynamicServiceVolumeLabels = Field(alias="Labels") + + +VolumeDetailsAdapter: Final[TypeAdapter[VolumeDetails]] = TypeAdapter(VolumeDetails) diff --git a/services/agent/src/simcore_service_agent/services/docker_utils.py b/services/agent/src/simcore_service_agent/services/docker_utils.py index 181fe13a275..83656783b55 100644 --- a/services/agent/src/simcore_service_agent/services/docker_utils.py +++ b/services/agent/src/simcore_service_agent/services/docker_utils.py @@ -15,7 +15,7 @@ from simcore_service_agent.core.settings import ApplicationSettings from starlette import status -from ..models.volumes import VolumeDetails +from ..models.volumes import VolumeDetails, VolumeDetailsAdapter from .backup import backup_volume from .instrumentation import get_instrumentation @@ -60,7 +60,7 @@ async def get_unused_dynamc_sidecar_volumes(docker: Docker) -> set[str]: async def get_volume_details(docker: Docker, *, volume_name: str) -> VolumeDetails: volume_details = await DockerVolume(docker, volume_name).show() - return VolumeDetails.parse_obj(volume_details) + return VolumeDetailsAdapter.validate_python(volume_details) @contextmanager diff --git a/services/autoscaling/tests/unit/test_core_settings.py b/services/autoscaling/tests/unit/test_core_settings.py index 7b99bb6bf5a..86e9280a46a 100644 --- a/services/autoscaling/tests/unit/test_core_settings.py +++ b/services/autoscaling/tests/unit/test_core_settings.py @@ -1,3 +1,4 @@ +# pylint: disable=no-member # pylint: disable=redefined-outer-name # pylint: disable=unused-argument # pylint: disable=unused-variable diff --git a/services/autoscaling/tests/unit/test_utils_docker.py b/services/autoscaling/tests/unit/test_utils_docker.py index a99f6939d1a..3f9677112bb 100644 --- a/services/autoscaling/tests/unit/test_utils_docker.py +++ b/services/autoscaling/tests/unit/test_utils_docker.py @@ -1,3 +1,4 @@ +# pylint: disable=no-member # pylint: disable=redefined-outer-name # pylint: disable=unused-argument # pylint: disable=unused-variable diff --git a/services/clusters-keeper/src/simcore_service_clusters_keeper/constants.py b/services/clusters-keeper/src/simcore_service_clusters_keeper/constants.py index 7f970665f25..a5d4f3636da 100644 --- a/services/clusters-keeper/src/simcore_service_clusters_keeper/constants.py +++ b/services/clusters-keeper/src/simcore_service_clusters_keeper/constants.py @@ -1,15 +1,21 @@ from typing import Final from aws_library.ec2._models import AWSTagKey, AWSTagValue -from pydantic import parse_obj_as +from pydantic import TypeAdapter DOCKER_STACK_DEPLOY_COMMAND_NAME: Final[str] = "private cluster docker deploy" -DOCKER_STACK_DEPLOY_COMMAND_EC2_TAG_KEY: Final[AWSTagKey] = parse_obj_as( - AWSTagKey, "io.simcore.clusters-keeper.private_cluster_docker_deploy" -) +DOCKER_STACK_DEPLOY_COMMAND_EC2_TAG_KEY: Final[AWSTagKey] = TypeAdapter( + AWSTagKey +).validate_python("io.simcore.clusters-keeper.private_cluster_docker_deploy") -USER_ID_TAG_KEY: Final[AWSTagKey] = parse_obj_as(AWSTagKey, "user_id") -WALLET_ID_TAG_KEY: Final[AWSTagKey] = parse_obj_as(AWSTagKey, "wallet_id") -ROLE_TAG_KEY: Final[AWSTagKey] = parse_obj_as(AWSTagKey, "role") -WORKER_ROLE_TAG_VALUE: Final[AWSTagValue] = parse_obj_as(AWSTagValue, "worker") -MANAGER_ROLE_TAG_VALUE: Final[AWSTagValue] = parse_obj_as(AWSTagValue, "manager") +USER_ID_TAG_KEY: Final[AWSTagKey] = TypeAdapter(AWSTagKey).validate_python("user_id") +WALLET_ID_TAG_KEY: Final[AWSTagKey] = TypeAdapter(AWSTagKey).validate_python( + "wallet_id" +) +ROLE_TAG_KEY: Final[AWSTagKey] = TypeAdapter(AWSTagKey).validate_python("role") +WORKER_ROLE_TAG_VALUE: Final[AWSTagValue] = TypeAdapter(AWSTagValue).validate_python( + "worker" +) +MANAGER_ROLE_TAG_VALUE: Final[AWSTagValue] = TypeAdapter(AWSTagValue).validate_python( + "manager" +) diff --git a/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py b/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py index 8b8ff0aa248..27f6eb53c7a 100644 --- a/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py +++ b/services/clusters-keeper/src/simcore_service_clusters_keeper/core/settings.py @@ -54,33 +54,22 @@ class ClustersKeeperEC2Settings(EC2Settings): class ClustersKeeperSSMSettings(SSMSettings): - class Config(SSMSettings.Config): - env_prefix = CLUSTERS_KEEPER_ENV_PREFIX - - schema_extra: ClassVar[dict[str, Any]] = { # type: ignore[misc] - "examples": [ - { - f"{CLUSTERS_KEEPER_ENV_PREFIX}{key}": var - for key, var in example.items() - } - for example in SSMSettings.Config.schema_extra["examples"] - ], - } - - -class ClustersKeeperSSMSettings(SSMSettings): - class Config(SSMSettings.Config): - env_prefix = CLUSTERS_KEEPER_ENV_PREFIX - - schema_extra: ClassVar[dict[str, Any]] = { # type: ignore[misc] + model_config = SettingsConfigDict( + env_prefix=CLUSTERS_KEEPER_ENV_PREFIX, + json_schema_extra={ "examples": [ { f"{CLUSTERS_KEEPER_ENV_PREFIX}{key}": var - for key, var in example.items() + for key, var in example.items() # type:ignore[union-attr] } - for example in SSMSettings.Config.schema_extra["examples"] + for example in SSMSettings.model_config[ # type:ignore[union-attr,index] + "json_schema_extra" + ][ + "examples" + ] ], - } + }, + ) class WorkersEC2InstancesSettings(BaseCustomSettings): @@ -295,11 +284,7 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): ) CLUSTERS_KEEPER_SSM_ACCESS: ClustersKeeperSSMSettings | None = Field( - auto_default_from_env=True - ) - - CLUSTERS_KEEPER_SSM_ACCESS: ClustersKeeperSSMSettings | None = Field( - auto_default_from_env=True + json_schema_extra={"auto_default_from_env": True} ) CLUSTERS_KEEPER_PRIMARY_EC2_INSTANCES: PrimaryEC2InstancesSettings | None = Field( @@ -369,7 +354,8 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings): ", see https://selectfrom.dev/deep-dive-into-dask-distributed-scheduler-9fdb3b36b7c7", ) CLUSTERS_KEEPER_TRACING: TracingSettings | None = Field( - auto_default_from_env=True, description="settings for opentelemetry tracing" + json_schema_extra={"auto_default_from_env": True}, + description="settings for opentelemetry tracing", ) SWARM_STACK_NAME: str = Field( diff --git a/services/clusters-keeper/tests/unit/conftest.py b/services/clusters-keeper/tests/unit/conftest.py index 5c661898cf0..da94a9886f3 100644 --- a/services/clusters-keeper/tests/unit/conftest.py +++ b/services/clusters-keeper/tests/unit/conftest.py @@ -98,22 +98,7 @@ def mocked_ssm_server_envs( f"{CLUSTERS_KEEPER_ENV_PREFIX}{k}": ( v.get_secret_value() if isinstance(v, SecretStr) else v ) - for k, v in mocked_ssm_server_settings.dict().items() - } - return setenvs_from_dict(monkeypatch, changed_envs) - - -@pytest.fixture -def mocked_ssm_server_envs( - mocked_ssm_server_settings: SSMSettings, - monkeypatch: pytest.MonkeyPatch, -) -> EnvVarsDict: - # NOTE: overrides the SSMSettings with what clusters-keeper expects - changed_envs: EnvVarsDict = { - f"{CLUSTERS_KEEPER_ENV_PREFIX}{k}": ( - v.get_secret_value() if isinstance(v, SecretStr) else v - ) - for k, v in mocked_ssm_server_settings.dict().items() + for k, v in mocked_ssm_server_settings.model_dump().items() } return setenvs_from_dict(monkeypatch, changed_envs) diff --git a/services/efs-guardian/src/simcore_service_efs_guardian/services/process_messages.py b/services/efs-guardian/src/simcore_service_efs_guardian/services/process_messages.py index 11c7781bbae..d1e3b67353a 100644 --- a/services/efs-guardian/src/simcore_service_efs_guardian/services/process_messages.py +++ b/services/efs-guardian/src/simcore_service_efs_guardian/services/process_messages.py @@ -2,7 +2,6 @@ from fastapi import FastAPI from models_library.rabbitmq_messages import DynamicServiceRunningMessage -from pydantic import parse_raw_as from servicelib.logging_utils import log_context from simcore_service_efs_guardian.services.modules.redis import get_redis_lock_client @@ -14,8 +13,8 @@ async def process_dynamic_service_running_message(app: FastAPI, data: bytes) -> bool: assert app # nosec - rabbit_message: DynamicServiceRunningMessage = parse_raw_as( - DynamicServiceRunningMessage, data + rabbit_message: DynamicServiceRunningMessage = ( + DynamicServiceRunningMessage.model_validate_json(data) ) _logger.debug( "Process dynamic service running msg, project ID: %s node ID: %s, current user: %s", diff --git a/services/invitations/src/simcore_service_invitations/cli.py b/services/invitations/src/simcore_service_invitations/cli.py index cfb7cf2717a..67838b04615 100644 --- a/services/invitations/src/simcore_service_invitations/cli.py +++ b/services/invitations/src/simcore_service_invitations/cli.py @@ -125,7 +125,7 @@ def invite( invitation_link, _ = create_invitation_link_and_content( invitation_data=invitation_data, - secret_key=settings.INVITATIONS_SECRET_KEY.get_secret_value().encode(), + secret_key=settings.INVITATIONS_SECRET_KEY.get_secret_value().encode(), # pylint:disable=no-member base_url=settings.INVITATIONS_OSPARC_URL, default_product=settings.INVITATIONS_DEFAULT_PRODUCT, ) @@ -144,7 +144,7 @@ def extract(ctx: typer.Context, invitation_url: str): invitation_code=extract_invitation_code_from_query( TypeAdapter(HttpUrl).validate_python(invitation_url) ), - secret_key=settings.INVITATIONS_SECRET_KEY.get_secret_value().encode(), + secret_key=settings.INVITATIONS_SECRET_KEY.get_secret_value().encode(), # pylint:disable=no-member default_product=settings.INVITATIONS_DEFAULT_PRODUCT, ) assert invitation.product is not None # nosec diff --git a/services/invitations/src/simcore_service_invitations/core/settings.py b/services/invitations/src/simcore_service_invitations/core/settings.py index 7658ad86adc..03410072bd8 100644 --- a/services/invitations/src/simcore_service_invitations/core/settings.py +++ b/services/invitations/src/simcore_service_invitations/core/settings.py @@ -112,5 +112,6 @@ class ApplicationSettings(MinimalApplicationSettings): ) INVITATIONS_PROMETHEUS_INSTRUMENTATION_ENABLED: bool = True INVITATIONS_TRACING: TracingSettings | None = Field( - auto_default_from_env=True, description="settings for opentelemetry tracing" + json_schema_extra={"auto_default_from_env": True}, + description="settings for opentelemetry tracing", )