Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from pydantic.errors import PydanticErrorMixin
from common_library.errors_classes import OsparcErrorMixin


class _BaseRpcApiError(PydanticErrorMixin, ValueError):
class _BaseRpcApiError(OsparcErrorMixin, ValueError):
@classmethod
def get_full_class_name(cls) -> str:
# Can be used as unique code identifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@
"""

import json
import sys
from typing import Literal, TypedDict

if sys.version_info >= (3, 12):
from typing import TypedDict
else:
from typing_extensions import TypedDict

import sqlalchemy as sa
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.sql import func
Expand Down
3 changes: 0 additions & 3 deletions packages/settings-library/src/settings_library/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,6 @@ def __pydantic_init_subclass__(cls, **kwargs: Any):
and issubclass(field_type, BaseCustomSettings)
):
if auto_default_from_env:
assert field.default is PydanticUndefined
assert field.default_factory is None

# Transform it into something like `Field(default_factory=create_settings_from_env(field))`
field.default_factory = _create_settings_from_env(name, field)
field.default = None
Expand Down
1 change: 1 addition & 0 deletions services/web/server/requirements/_base.in
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# - Added as constraints instead of requirements in order to avoid polluting base.txt
# - Will be installed when prod.txt or dev.txt
#
--requirement ../../../../packages/common-library/requirements/_base.in
--requirement ../../../../packages/models-library/requirements/_base.in
--requirement ../../../../packages/postgres-database/requirements/_base.in
--requirement ../../../../packages/settings-library/requirements/_base.in
Expand Down
199 changes: 196 additions & 3 deletions services/web/server/requirements/_base.txt

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion services/web/server/requirements/_test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,9 @@ python-dateutil==2.8.2
# -c requirements/_base.txt
# faker
python-dotenv==1.0.1
# via -r requirements/_test.in
# via
# -c requirements/_base.txt
# -r requirements/_test.in
pyyaml==6.0.1
# via
# -c requirements/../../../../requirements/constraints.txt
Expand Down
1 change: 1 addition & 0 deletions services/web/server/requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
--requirement _test.txt

# installs this repo's packages
simcore-common-library @ ../../../packages/common-library
simcore-models-library @ ../../../packages/models-library
simcore-postgres-database @ ../../../packages/postgres-database
simcore-settings-library @ ../../../packages/settings-library
Expand Down
1 change: 1 addition & 0 deletions services/web/server/requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
--requirement _tools.txt

# installs this repo's packages
--editable ../../../packages/common-library/
--editable ../../../packages/models-library/
--editable ../../../packages/postgres-database/
--editable ../../../packages/settings-library/
Expand Down
1 change: 1 addition & 0 deletions services/web/server/requirements/prod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
--requirement _base.txt

# installs this repo's packages
simcore-common-library @ ../../../packages/common-library
simcore-models-library @ ../../../packages/models-library
simcore-postgres-database @ ../../../packages/postgres-database
simcore-settings-library @ ../../../packages/settings-library
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import aiohttp
import aiohttp.web
from models_library.api_schemas_webserver.activity import ActivityStatusDict
from pydantic import parse_obj_as
from pydantic import TypeAdapter
from servicelib.aiohttp.client_session import get_client_session
from servicelib.mimetype_constants import MIMETYPE_APPLICATION_JSON
from servicelib.request_keys import RQT_USERID_KEY
Expand Down Expand Up @@ -73,5 +73,5 @@ async def get_activity_status(request: aiohttp.web.Request):
if not res:
raise aiohttp.web.HTTPNoContent(content_type=MIMETYPE_APPLICATION_JSON)

assert parse_obj_as(ActivityStatusDict, res) is not None # nosec
assert TypeAdapter(ActivityStatusDict).validate_python(res) is not None # nosec
return dict(res)
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from datetime import datetime
from typing import Any, ClassVar, Literal
from typing import Literal

import arrow
from pydantic import BaseModel, validator
from pydantic import BaseModel, ConfigDict, field_validator


# NOTE: this model is used for BOTH
Expand All @@ -18,7 +18,7 @@ class Announcement(BaseModel):
link: str
widgets: list[Literal["login", "ribbon", "user-menu"]]

@validator("end")
@field_validator("end")
@classmethod
def check_start_before_end(cls, v, values):
if start := values.get("start"):
Expand All @@ -31,8 +31,8 @@ def check_start_before_end(cls, v, values):
def expired(self) -> bool:
return self.end <= arrow.utcnow().datetime

class Config:
schema_extra: ClassVar[dict[str, Any]] = {
model_config = ConfigDict(
json_schema_extra={
"examples": [
{
"id": "Student_Competition_2023",
Expand All @@ -56,3 +56,4 @@ class Config:
},
]
}
)
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ async def get_api_key(
) -> ApiKeyGet | None:
repo = ApiKeyRepo.create_from_app(app)
row = await repo.get(display_name=name, user_id=user_id, product_name=product_name)
return ApiKeyGet.parse_obj(row) if row else None
return ApiKeyGet.model_validate(row) if row else None


async def get_or_create_api_key(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class _RequestContext(RequestParams):
@login_required
@permission_required("user.apikey.*")
async def list_api_keys(request: web.Request):
req_ctx = _RequestContext.parse_obj(request)
req_ctx = _RequestContext.model_validate(request)
api_keys_names = await _api.list_api_keys(
request.app,
user_id=req_ctx.user_id,
Expand All @@ -44,7 +44,7 @@ async def list_api_keys(request: web.Request):
@login_required
@permission_required("user.apikey.*")
async def create_api_key(request: web.Request):
req_ctx = _RequestContext.parse_obj(request)
req_ctx = _RequestContext.model_validate(request)
new = await parse_request_body_as(ApiKeyCreate, request)
try:
data = await _api.create_api_key(
Expand All @@ -66,7 +66,7 @@ async def create_api_key(request: web.Request):
@login_required
@permission_required("user.apikey.*")
async def delete_api_key(request: web.Request):
req_ctx = _RequestContext.parse_obj(request)
req_ctx = _RequestContext.model_validate(request)

# NOTE: SEE https://github.com/ITISFoundation/osparc-simcore/issues/4920
body = await request.json()
Expand Down
Loading
Loading