Skip to content

Commit 6786b92

Browse files
Upgrade EFS guardian service (Pydantic v2) (#6516)
1 parent 329b00d commit 6786b92

File tree

6 files changed

+60
-66
lines changed

6 files changed

+60
-66
lines changed

services/efs-guardian/requirements/_base.txt

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ aiormq==6.8.0
4343
# via aio-pika
4444
aiosignal==1.3.1
4545
# via aiohttp
46+
annotated-types==0.7.0
47+
# via pydantic
4648
anyio==4.4.0
4749
# via
4850
# fast-depends
@@ -54,13 +56,10 @@ arrow==1.3.0
5456
# -r requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/_base.in
5557
# -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
5658
# -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in
59+
# -r requirements/../../../packages/aws-library/requirements/_base.in
5760
# -r requirements/../../../packages/models-library/requirements/_base.in
5861
# -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
5962
# -r requirements/../../../packages/service-library/requirements/_base.in
60-
async-timeout==4.0.3
61-
# via
62-
# aiohttp
63-
# redis
6463
attrs==23.2.0
6564
# via
6665
# aiohttp
@@ -99,24 +98,10 @@ dnspython==2.6.1
9998
# via email-validator
10099
email-validator==2.1.1
101100
# via pydantic
102-
exceptiongroup==1.2.1
103-
# via anyio
104101
fast-depends==2.4.3
105102
# via faststream
106-
fastapi==0.99.1
103+
fastapi==0.115.0
107104
# via
108-
# -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
109-
# -c requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
110-
# -c requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
111-
# -c requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
112-
# -c requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
113-
# -c requirements/../../../packages/aws-library/requirements/../../../requirements/constraints.txt
114-
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
115-
# -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
116-
# -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
117-
# -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
118-
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
119-
# -c requirements/../../../requirements/constraints.txt
120105
# -r requirements/../../../packages/service-library/requirements/_fastapi.in
121106
# -r requirements/_base.in
122107
# prometheus-fastapi-instrumentator
@@ -203,7 +188,7 @@ prometheus-client==0.20.0
203188
# prometheus-fastapi-instrumentator
204189
prometheus-fastapi-instrumentator==6.1.0
205190
# via -r requirements/../../../packages/service-library/requirements/_fastapi.in
206-
pydantic==1.10.15
191+
pydantic==2.9.2
207192
# via
208193
# -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
209194
# -c requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
@@ -214,7 +199,6 @@ pydantic==1.10.15
214199
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
215200
# -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
216201
# -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
217-
# -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in
218202
# -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt
219203
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
220204
# -c requirements/../../../requirements/constraints.txt
@@ -231,6 +215,26 @@ pydantic==1.10.15
231215
# -r requirements/../../../packages/settings-library/requirements/_base.in
232216
# fast-depends
233217
# fastapi
218+
# pydantic-extra-types
219+
# pydantic-settings
220+
pydantic-core==2.23.4
221+
# via pydantic
222+
pydantic-extra-types==2.9.0
223+
# via
224+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/_base.in
225+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
226+
# -r requirements/../../../packages/models-library/requirements/_base.in
227+
# -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
228+
pydantic-settings==2.5.2
229+
# via
230+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/_base.in
231+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
232+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in
233+
# -r requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/_base.in
234+
# -r requirements/../../../packages/models-library/requirements/_base.in
235+
# -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
236+
# -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in
237+
# -r requirements/../../../packages/settings-library/requirements/_base.in
234238
pygments==2.18.0
235239
# via rich
236240
pyinstrument==4.6.2
@@ -241,6 +245,8 @@ python-dateutil==2.9.0.post0
241245
# via
242246
# arrow
243247
# botocore
248+
python-dotenv==1.0.1
249+
# via pydantic-settings
244250
pyyaml==6.0.1
245251
# via
246252
# -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
@@ -302,7 +308,7 @@ sniffio==1.3.1
302308
# via
303309
# anyio
304310
# httpx
305-
starlette==0.27.0
311+
starlette==0.38.6
306312
# via
307313
# -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
308314
# -c requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
@@ -352,16 +358,15 @@ typing-extensions==4.11.0
352358
# via
353359
# aiodebug
354360
# aiodocker
355-
# anyio
356361
# fastapi
357362
# faststream
358363
# pydantic
364+
# pydantic-core
359365
# typer
360366
# types-aiobotocore
361367
# types-aiobotocore-ec2
362368
# types-aiobotocore-s3
363369
# types-aiobotocore-ssm
364-
# uvicorn
365370
urllib3==2.2.1
366371
# via
367372
# -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt

services/efs-guardian/requirements/_test.txt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ aiosignal==1.3.1
1111
# via
1212
# -c requirements/_base.txt
1313
# aiohttp
14+
annotated-types==0.7.0
15+
# via
16+
# -c requirements/_base.txt
17+
# pydantic
1418
antlr4-python3-runtime==4.13.2
1519
# via moto
1620
anyio==4.4.0
@@ -19,11 +23,6 @@ anyio==4.4.0
1923
# httpx
2024
asgi-lifespan==2.1.0
2125
# via -r requirements/_test.in
22-
async-timeout==4.0.3
23-
# via
24-
# -c requirements/_base.txt
25-
# aiohttp
26-
# redis
2726
attrs==23.2.0
2827
# via
2928
# -c requirements/_base.txt
@@ -82,11 +81,6 @@ docker==7.1.0
8281
# via
8382
# -r requirements/_test.in
8483
# moto
85-
exceptiongroup==1.2.1
86-
# via
87-
# -c requirements/_base.txt
88-
# anyio
89-
# pytest
9084
faker==27.0.0
9185
# via -r requirements/_test.in
9286
fakeredis==2.23.5
@@ -205,11 +199,15 @@ py-partiql-parser==0.5.5
205199
# via moto
206200
pycparser==2.22
207201
# via cffi
208-
pydantic==1.10.15
202+
pydantic==2.9.2
209203
# via
210204
# -c requirements/../../../requirements/constraints.txt
211205
# -c requirements/_base.txt
212206
# aws-sam-translator
207+
pydantic-core==2.23.4
208+
# via
209+
# -c requirements/_base.txt
210+
# pydantic
213211
pyparsing==3.1.2
214212
# via moto
215213
pytest==8.3.2
@@ -235,7 +233,9 @@ python-dateutil==2.9.0.post0
235233
# faker
236234
# moto
237235
python-dotenv==1.0.1
238-
# via -r requirements/_test.in
236+
# via
237+
# -c requirements/_base.txt
238+
# -r requirements/_test.in
239239
pyyaml==6.0.1
240240
# via
241241
# -c requirements/../../../requirements/constraints.txt
@@ -296,19 +296,14 @@ sortedcontainers==2.4.0
296296
# via fakeredis
297297
sympy==1.13.2
298298
# via cfn-lint
299-
tomli==2.0.1
300-
# via
301-
# coverage
302-
# pytest
303299
typing-extensions==4.11.0
304300
# via
305301
# -c requirements/_base.txt
306302
# aiodocker
307-
# anyio
308303
# aws-sam-translator
309304
# cfn-lint
310-
# fakeredis
311305
# pydantic
306+
# pydantic-core
312307
urllib3==2.2.1
313308
# via
314309
# -c requirements/../../../requirements/constraints.txt

services/efs-guardian/requirements/_tools.txt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,22 +74,12 @@ setuptools==73.0.1
7474
# via
7575
# -c requirements/_test.txt
7676
# pip-tools
77-
tomli==2.0.1
78-
# via
79-
# -c requirements/_test.txt
80-
# black
81-
# build
82-
# mypy
83-
# pip-tools
84-
# pylint
8577
tomlkit==0.13.2
8678
# via pylint
8779
typing-extensions==4.11.0
8880
# via
8981
# -c requirements/_base.txt
9082
# -c requirements/_test.txt
91-
# astroid
92-
# black
9383
# mypy
9484
virtualenv==20.26.3
9585
# via pre-commit

services/efs-guardian/src/simcore_service_efs_guardian/core/application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121

2222
def create_app(settings: ApplicationSettings) -> FastAPI:
23-
logger.info("app settings: %s", settings.json(indent=1))
23+
logger.info("app settings: %s", settings.model_dump_json(indent=1))
2424

2525
app = FastAPI(
2626
debug=settings.EFS_GUARDIAN_DEBUG,

services/efs-guardian/src/simcore_service_efs_guardian/core/settings.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
LogLevel,
99
VersionTag,
1010
)
11-
from pydantic import Field, PositiveInt, validator
11+
from pydantic import AliasChoices, Field, PositiveInt, field_validator
1212
from settings_library.base import BaseCustomSettings
1313
from settings_library.efs import AwsEfsSettings
1414
from settings_library.rabbit import RabbitSettings
@@ -59,28 +59,35 @@ class ApplicationSettings(BaseCustomSettings, MixinLoggingSettings):
5959

6060
# RUNTIME -----------------------------------------------------------
6161
EFS_GUARDIAN_DEBUG: bool = Field(
62-
default=False, description="Debug mode", env=["EFS_GUARDIAN_DEBUG", "DEBUG"]
62+
default=False,
63+
description="Debug mode",
64+
validation_alias=AliasChoices("EFS_GUARDIAN_DEBUG", "DEBUG"),
6365
)
6466
EFS_GUARDIAN_LOGLEVEL: LogLevel = Field(
65-
LogLevel.INFO, env=["EFS_GUARDIAN_LOGLEVEL", "LOG_LEVEL", "LOGLEVEL"]
67+
LogLevel.INFO,
68+
validation_alias=AliasChoices("EFS_GUARDIAN_LOGLEVEL", "LOG_LEVEL", "LOGLEVEL"),
6669
)
6770
EFS_GUARDIAN_LOG_FORMAT_LOCAL_DEV_ENABLED: bool = Field(
6871
default=False,
69-
env=[
72+
validation_alias=AliasChoices(
7073
"EFS_GUARDIAN_LOG_FORMAT_LOCAL_DEV_ENABLED",
7174
"LOG_FORMAT_LOCAL_DEV_ENABLED",
72-
],
75+
),
7376
description="Enables local development log format. WARNING: make sure it is disabled if you want to have structured logs!",
7477
)
7578

76-
EFS_GUARDIAN_AWS_EFS_SETTINGS: AwsEfsSettings = Field(auto_default_from_env=True)
77-
EFS_GUARDIAN_RABBITMQ: RabbitSettings = Field(auto_default_from_env=True)
79+
EFS_GUARDIAN_AWS_EFS_SETTINGS: AwsEfsSettings = Field(
80+
json_schema_extra={"auto_default_from_env": True}
81+
)
82+
EFS_GUARDIAN_RABBITMQ: RabbitSettings = Field(
83+
json_schema_extra={"auto_default_from_env": True}
84+
)
7885

7986
@cached_property
8087
def LOG_LEVEL(self) -> LogLevel: # noqa: N802
8188
return self.EFS_GUARDIAN_LOGLEVEL
8289

83-
@validator("EFS_GUARDIAN_LOGLEVEL")
90+
@field_validator("EFS_GUARDIAN_LOGLEVEL")
8491
@classmethod
8592
def valid_log_level(cls, value: str) -> str:
8693
return cls.validate_log_level(value)
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
from typing import Any
2-
3-
from models_library.errors_classes import OsparcErrorMixin
1+
from common_library.errors_classes import OsparcErrorMixin
42

53

64
class EfsGuardianBaseError(OsparcErrorMixin, Exception):
7-
def __init__(self, **ctx: Any) -> None:
8-
super().__init__(**ctx)
5+
"""EFS guardian base error class."""

0 commit comments

Comments
 (0)