Skip to content

Commit 610a8ef

Browse files
continue upgrading
1 parent 5571be2 commit 610a8ef

File tree

6 files changed

+57
-57
lines changed

6 files changed

+57
-57
lines changed

services/payments/src/simcore_service_payments/core/settings.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
from models_library.basic_types import NonNegativeDecimal
44
from pydantic import (
5+
AliasChoices,
56
EmailStr,
67
Field,
78
HttpUrl,
89
PositiveFloat,
910
SecretStr,
10-
parse_obj_as,
11-
validator,
11+
TypeAdapter,
12+
field_validator,
1213
)
1314
from settings_library.application import BaseApplicationSettings
1415
from settings_library.basic_types import LogLevel, VersionTag
@@ -27,27 +28,32 @@ class _BaseApplicationSettings(BaseApplicationSettings, MixinLoggingSettings):
2728
# CODE STATICS ---------------------------------------------------------
2829
API_VERSION: str = API_VERSION
2930
APP_NAME: str = PROJECT_NAME
30-
API_VTAG: VersionTag = parse_obj_as(VersionTag, API_VTAG)
31+
API_VTAG: VersionTag = TypeAdapter(VersionTag).validate_python(API_VTAG)
3132

3233
# RUNTIME -----------------------------------------------------------
3334

3435
PAYMENTS_LOGLEVEL: LogLevel = Field(
35-
default=LogLevel.INFO, env=["PAYMENTS_LOGLEVEL", "LOG_LEVEL", "LOGLEVEL"]
36+
default=LogLevel.INFO,
37+
validation_alias=AliasChoices(
38+
"PAYMENTS_LOGLEVEL",
39+
"LOG_LEVEL",
40+
"LOGLEVEL",
41+
),
3642
)
3743
PAYMENTS_LOG_FORMAT_LOCAL_DEV_ENABLED: bool = Field(
3844
default=False,
39-
env=[
45+
validation_alias=AliasChoices(
4046
"PAYMENTS_LOG_FORMAT_LOCAL_DEV_ENABLED",
4147
"LOG_FORMAT_LOCAL_DEV_ENABLED",
42-
],
48+
),
4349
description="Enables local development log format. WARNING: make sure it is disabled if you want to have structured logs!",
4450
)
4551

4652
@cached_property
4753
def LOG_LEVEL(self): # noqa: N802
4854
return self.PAYMENTS_LOGLEVEL
4955

50-
@validator("PAYMENTS_LOGLEVEL")
56+
@field_validator("PAYMENTS_LOGLEVEL")
5157
@classmethod
5258
def valid_log_level(cls, value: str) -> str:
5359
return cls.validate_log_level(value)
@@ -110,11 +116,13 @@ class ApplicationSettings(_BaseApplicationSettings):
110116
)
111117

112118
PAYMENTS_RABBITMQ: RabbitSettings = Field(
113-
auto_default_from_env=True, description="settings for service/rabbitmq"
119+
description="settings for service/rabbitmq",
120+
json_schema_extra={"auto_default_from_env": True},
114121
)
115122

116123
PAYMENTS_POSTGRES: PostgresSettings = Field(
117-
auto_default_from_env=True, description="settings for postgres service"
124+
description="settings for postgres service",
125+
json_schema_extra={"auto_default_from_env": True},
118126
)
119127

120128
PAYMENTS_STRIPE_URL: HttpUrl = Field(
@@ -129,12 +137,13 @@ class ApplicationSettings(_BaseApplicationSettings):
129137
)
130138

131139
PAYMENTS_RESOURCE_USAGE_TRACKER: ResourceUsageTrackerSettings = Field(
132-
auto_default_from_env=True, description="settings for RUT service"
140+
description="settings for RUT service",
141+
json_schema_extra={"auto_default_from_env": True},
133142
)
134143

135144
PAYMENTS_PROMETHEUS_INSTRUMENTATION_ENABLED: bool = True
136145

137146
PAYMENTS_EMAIL: SMTPSettings | None = Field(
138-
auto_default_from_env=True,
139147
description="optional email (see notifier_email service)",
148+
json_schema_extra={"auto_default_from_env": True},
140149
)

services/payments/src/simcore_service_payments/db/auto_recharge_repo.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from models_library.basic_types import NonNegativeDecimal
66
from models_library.users import UserID
77
from models_library.wallets import WalletID
8-
from pydantic import BaseModel, PositiveInt
8+
from pydantic import BaseModel, ConfigDict, PositiveInt
99
from simcore_postgres_database.utils_payments_autorecharge import AutoRechargeStmts
1010

1111
from .base import BaseRepository
@@ -19,9 +19,7 @@ class PaymentsAutorechargeDB(BaseModel):
1919
primary_payment_method_id: PaymentMethodID
2020
top_up_amount_in_usd: NonNegativeDecimal
2121
monthly_limit_in_usd: NonNegativeDecimal | None
22-
23-
class Config:
24-
orm_mode = True
22+
model_config = ConfigDict(from_attributes=True)
2523

2624

2725
class AutoRechargeRepo(BaseRepository):

services/payments/src/simcore_service_payments/models/db.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import datetime
22
from decimal import Decimal
3-
from typing import Any, ClassVar
43

54
from models_library.api_schemas_webserver.wallets import PaymentID, PaymentMethodID
65
from models_library.emails import LowerCaseEmailStr
76
from models_library.payments import StripeInvoiceID
87
from models_library.products import ProductName
98
from models_library.users import UserID
109
from models_library.wallets import WalletID
11-
from pydantic import BaseModel, HttpUrl
10+
from pydantic import BaseModel, ConfigDict, HttpUrl
1211
from simcore_postgres_database.models.payments_methods import InitPromptAckFlowState
1312
from simcore_postgres_database.models.payments_transactions import (
1413
PaymentTransactionState,
@@ -39,18 +38,17 @@ class PaymentsTransactionsDB(BaseModel):
3938
user_id: UserID
4039
user_email: LowerCaseEmailStr
4140
wallet_id: WalletID
42-
comment: str | None
43-
invoice_url: HttpUrl | None
44-
stripe_invoice_id: StripeInvoiceID | None
45-
invoice_pdf_url: HttpUrl | None
41+
comment: str | None = None
42+
invoice_url: HttpUrl | None = None
43+
stripe_invoice_id: StripeInvoiceID | None = None
44+
invoice_pdf_url: HttpUrl | None = None
4645
initiated_at: datetime.datetime
47-
completed_at: datetime.datetime | None
46+
completed_at: datetime.datetime | None = None
4847
state: PaymentTransactionState
49-
state_message: str | None
50-
51-
class Config:
52-
orm_mode = True
53-
schema_extra: ClassVar[dict[str, Any]] = {
48+
state_message: str | None = None
49+
model_config = ConfigDict(
50+
from_attributes=True,
51+
json_schema_extra={
5452
"examples": [
5553
_EXAMPLE_AFTER_INIT,
5654
# successful completion
@@ -64,7 +62,8 @@ class Config:
6462
"state_message": "Payment completed successfully",
6563
},
6664
]
67-
}
65+
},
66+
)
6867

6968

7069
_EXAMPLE_AFTER_INIT_PAYMENT_METHOD = {
@@ -83,13 +82,12 @@ class PaymentsMethodsDB(BaseModel):
8382
wallet_id: WalletID
8483
# State in Flow
8584
initiated_at: datetime.datetime
86-
completed_at: datetime.datetime | None
85+
completed_at: datetime.datetime | None = None
8786
state: InitPromptAckFlowState
88-
state_message: str | None
89-
90-
class Config:
91-
orm_mode = True
92-
schema_extra: ClassVar[dict[str, Any]] = {
87+
state_message: str | None = None
88+
model_config = ConfigDict(
89+
from_attributes=True,
90+
json_schema_extra={
9391
"examples": [
9492
_EXAMPLE_AFTER_INIT_PAYMENT_METHOD,
9593
# successful completion
@@ -100,4 +98,5 @@ class Config:
10098
"state_message": "Payment method completed successfully",
10199
},
102100
]
103-
}
101+
},
102+
)

services/payments/src/simcore_service_payments/models/payments_gateway.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from models_library.basic_types import AmountDecimal, IDStr
88
from models_library.payments import UserInvoiceAddress
99
from models_library.products import StripePriceID, StripeTaxRateID
10-
from pydantic import BaseModel, EmailStr, Extra, Field
10+
from pydantic import BaseModel, ConfigDict, EmailStr, Field
1111

1212
COUNTRIES_WITH_VAT = ["CH", "LI"]
1313

@@ -39,9 +39,7 @@ class InitPayment(BaseModel):
3939
stripe_price_id: StripePriceID
4040
stripe_tax_rate_id: StripeTaxRateID
4141
stripe_tax_exempt_value: StripeTaxExempt
42-
43-
class Config:
44-
extra = Extra.forbid
42+
model_config = ConfigDict(extra="forbid")
4543

4644

4745
class PaymentInitiated(BaseModel):
@@ -58,9 +56,7 @@ class InitPaymentMethod(BaseModel):
5856
user_name: IDStr
5957
user_email: EmailStr
6058
wallet_name: IDStr
61-
62-
class Config:
63-
extra = Extra.forbid
59+
model_config = ConfigDict(extra="forbid")
6460

6561

6662
class PaymentMethodInitiated(BaseModel):

services/payments/src/simcore_service_payments/models/schemas/acknowledgements.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# mypy: disable-error-code=truthy-function
2-
from typing import Any, ClassVar
2+
from typing import Any
33

44
from models_library.api_schemas_webserver.wallets import PaymentID, PaymentMethodID
55
from models_library.basic_types import IDStr
6-
from pydantic import BaseModel, Field, HttpUrl, validator
6+
from pydantic import BaseModel, ConfigDict, Field, HttpUrl, field_validator
77

88

99
class _BaseAck(BaseModel):
@@ -87,14 +87,14 @@ class AckPayment(_BaseAckPayment):
8787
description="Gets the payment-method if user opted to save it during payment."
8888
"If used did not opt to save of payment-method was already saved, then it defaults to None",
8989
)
90-
91-
class Config:
92-
schema_extra: ClassVar[dict[str, Any]] = {
90+
model_config = ConfigDict(
91+
json_schema_extra={
9392
"example": _EXAMPLES[1].copy(), # shown in openapi.json
9493
"examples": _EXAMPLES,
9594
}
95+
)
9696

97-
@validator("invoice_url")
97+
@field_validator("invoice_url")
9898
@classmethod
9999
def success_requires_invoice(cls, v, values):
100100
success = values.get("success")
@@ -112,14 +112,14 @@ class AckPaymentWithPaymentMethod(_BaseAckPayment):
112112
payment_id: PaymentID = Field(
113113
default=None, description="Payment ID from the gateway"
114114
)
115-
116-
class Config:
117-
schema_extra: ClassVar[dict[str, Any]] = {
115+
model_config = ConfigDict(
116+
json_schema_extra={
118117
"example": {
119118
**_ONE_TIME_SUCCESS,
120119
"payment_id": "D19EE68B-B007-4B61-A8BC-32B7115FB244",
121120
}, # shown in openapi.json
122121
}
122+
)
123123

124124

125125
assert PaymentID # nosec
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
from typing import Any, ClassVar
2-
31
from models_library.api_schemas__common.meta import BaseMeta
4-
from pydantic import HttpUrl
2+
from pydantic import ConfigDict, HttpUrl
53

64

75
class Meta(BaseMeta):
86
docs_url: HttpUrl
9-
10-
class Config:
11-
schema_extra: ClassVar[dict[str, Any]] = {
7+
model_config = ConfigDict(
8+
json_schema_extra={
129
"example": {
1310
"name": "simcore_service_payments",
1411
"version": "2.4.45",
1512
"docs_url": "https://foo.io/doc",
1613
}
1714
}
15+
)

0 commit comments

Comments
 (0)