Skip to content

Commit ef70a5c

Browse files
GitHKAndrei Neagu
andauthored
Maintenance: mypy on dynamic-scheduler (#6122)
Co-authored-by: Andrei Neagu <[email protected]>
1 parent 534139a commit ef70a5c

File tree

8 files changed

+36
-24
lines changed

8 files changed

+36
-24
lines changed

.github/workflows/ci-testing-deploy.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,6 @@ jobs:
11191119
run: ./ci/github/unit-testing/dynamic-scheduler.bash install
11201120
- name: typecheck
11211121
run: ./ci/github/unit-testing/dynamic-scheduler.bash typecheck
1122-
continue-on-error: true
11231122
- name: test
11241123
if: always()
11251124
run: ./ci/github/unit-testing/dynamic-scheduler.bash test

services/dynamic-scheduler/setup.cfg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ commit_args = --no-verify
1111
asyncio_mode = auto
1212
markers =
1313
testit: "marks test to run during development"
14+
15+
[mypy]
16+
plugins =
17+
pydantic.mypy

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/api/rest/_dependencies.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# mypy: disable-error-code=truthy-function
12
from fastapi import Request
23
from servicelib.fastapi.dependencies import get_app, get_reverse_url_mapper
34
from servicelib.rabbitmq import RabbitMQClient, RabbitMQRPCClient
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import logging
21
from collections.abc import Callable
32
from typing import Annotated
43

54
from fastapi import APIRouter, Depends
5+
from models_library.basic_types import VersionStr
66

77
from ..._meta import API_VERSION, PROJECT_NAME
88
from ...models.schemas.meta import Meta
99
from ._dependencies import get_reverse_url_mapper
1010

11-
_logger = logging.getLogger(__name__)
12-
13-
1411
router = APIRouter()
1512

1613

@@ -20,6 +17,6 @@ async def get_service_metadata(
2017
):
2118
return Meta(
2219
name=PROJECT_NAME,
23-
version=API_VERSION,
20+
version=VersionStr(API_VERSION),
2421
docs_url=url_for("swagger_ui_html"),
2522
)

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/api/rpc/_services.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,21 @@ async def get_service_status(
2323
app: FastAPI, *, node_id: NodeID
2424
) -> NodeGet | DynamicServiceGet | NodeGetIdle:
2525
director_v2_client = DirectorV2Client.get_from_app_state(app)
26-
return await director_v2_client.get_status(node_id)
26+
response: NodeGet | DynamicServiceGet | NodeGetIdle = (
27+
await director_v2_client.get_status(node_id)
28+
)
29+
return response
2730

2831

2932
@router.expose()
3033
async def run_dynamic_service(
3134
app: FastAPI, *, dynamic_service_start: DynamicServiceStart
3235
) -> NodeGet | DynamicServiceGet:
3336
director_v2_client = DirectorV2Client.get_from_app_state(app)
34-
return await director_v2_client.run_dynamic_service(dynamic_service_start)
37+
response: NodeGet | DynamicServiceGet = (
38+
await director_v2_client.run_dynamic_service(dynamic_service_start)
39+
)
40+
return response
3541

3642

3743
@router.expose(
@@ -45,9 +51,12 @@ async def stop_dynamic_service(
4551
) -> NodeGet | DynamicServiceGet:
4652
director_v2_client = DirectorV2Client.get_from_app_state(app)
4753
settings: ApplicationSettings = app.state.settings
48-
return await director_v2_client.stop_dynamic_service(
49-
node_id=dynamic_service_stop.node_id,
50-
simcore_user_agent=dynamic_service_stop.simcore_user_agent,
51-
save_state=dynamic_service_stop.save_state,
52-
timeout=settings.DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT,
54+
response: NodeGet | DynamicServiceGet = (
55+
await director_v2_client.stop_dynamic_service(
56+
node_id=dynamic_service_stop.node_id,
57+
simcore_user_agent=dynamic_service_stop.simcore_user_agent,
58+
save_state=dynamic_service_stop.save_state,
59+
timeout=settings.DYNAMIC_SCHEDULER_STOP_SERVICE_TIMEOUT,
60+
)
5361
)
62+
return response

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/core/settings.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import datetime
22
from functools import cached_property
3-
from typing import cast
43

54
from pydantic import Field, parse_obj_as, validator
65
from settings_library.application import BaseApplicationSettings
@@ -51,8 +50,7 @@ def LOG_LEVEL(self): # noqa: N802
5150
@validator("DYNAMIC_SCHEDULER__LOGLEVEL")
5251
@classmethod
5352
def valid_log_level(cls, value: str) -> str:
54-
# NOTE: mypy is not happy without the cast
55-
return cast(str, cls.validate_log_level(value))
53+
return cls.validate_log_level(value)
5654

5755

5856
class ApplicationSettings(_BaseApplicationSettings):

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_public_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ async def get_status(
4848
return DynamicServiceGet.parse_obj(dict_response)
4949
except UnexpectedStatusError as e:
5050
if (
51-
e.response.status_code # pylint:disable=no-member # type: ignore
51+
e.response.status_code # type: ignore[attr-defined] # pylint:disable=no-member
5252
== status.HTTP_404_NOT_FOUND
5353
):
5454
return NodeGetIdle.from_node_id(node_id)
@@ -83,14 +83,14 @@ async def stop_dynamic_service(
8383
)
8484
except UnexpectedStatusError as e:
8585
if (
86-
e.response.status_code # pylint:disable=no-member # type: ignore
86+
e.response.status_code # type: ignore[attr-defined] # pylint:disable=no-member
8787
== status.HTTP_409_CONFLICT
8888
):
8989
raise ServiceWaitingForManualInterventionError(
9090
node_id=node_id
9191
) from None
9292
if (
93-
e.response.status_code # pylint:disable=no-member # type: ignore
93+
e.response.status_code # type: ignore[attr-defined] # pylint:disable=no-member
9494
== status.HTTP_404_NOT_FOUND
9595
):
9696
raise ServiceWasNotFoundError(node_id=node_id) from None

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
from typing import cast
23

34
from fastapi import FastAPI, status
45
from httpx import Response, Timeout
@@ -95,11 +96,14 @@ async def _(
9596
) -> Response:
9697
headers = {X_SIMCORE_USER_AGENT: simcore_user_agent}
9798

98-
return await self.client.delete(
99-
f"dynamic_services/{node_id}?can_save={f'{save_state}'.lower()}",
100-
headers=headers,
101-
timeout=timeout.total_seconds(),
102-
follow_redirects=True,
99+
return cast(
100+
Response,
101+
await self.client.delete(
102+
f"dynamic_services/{node_id}?can_save={f'{save_state}'.lower()}",
103+
headers=headers,
104+
timeout=timeout.total_seconds(),
105+
follow_redirects=True,
106+
),
103107
)
104108

105109
return await _(self)

0 commit comments

Comments
 (0)