Skip to content

Commit 7c5a00e

Browse files
committed
mypy happy
1 parent 27a80ab commit 7c5a00e

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

services/director/src/simcore_service_director/producer.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from enum import Enum
88
from http import HTTPStatus
99
from pprint import pformat
10-
from typing import Any, Final
10+
from typing import Any, Final, cast
1111

1212
import aiodocker
1313
import aiodocker.networks
@@ -136,9 +136,9 @@ def _parse_env_settings(settings: list[str]) -> dict:
136136

137137
async def _read_service_settings(
138138
app: FastAPI, key: str, tag: str, settings_name: str
139-
) -> dict:
139+
) -> dict[str, Any] | list[Any]:
140140
image_labels, _ = await registry_proxy.get_image_labels(app, key, tag)
141-
settings = (
141+
settings: dict[str, Any] | list[Any] = (
142142
json.loads(image_labels[settings_name]) if settings_name in image_labels else {}
143143
)
144144

@@ -317,6 +317,7 @@ async def _create_docker_service_params(
317317
]
318318

319319
# some services define strip_path:true if they need the path to be stripped away
320+
assert isinstance(reverse_proxy_settings, dict) # nosec
320321
if reverse_proxy_settings and reverse_proxy_settings.get("strip_path"):
321322
docker_params["labels"][
322323
f"traefik.http.middlewares.{service_name}_stripprefixregex.stripprefixregex.regex"
@@ -329,7 +330,7 @@ async def _create_docker_service_params(
329330
placement_substitutions: dict[
330331
str, str
331332
] = app_settings.DIRECTOR_GENERIC_RESOURCE_PLACEMENT_CONSTRAINTS_SUBSTITUTIONS
332-
333+
assert isinstance(service_parameters_labels, list) # nosec
333334
for param in service_parameters_labels:
334335
_check_setting_correctness(param)
335336
# replace %service_uuid% by the given uuid
@@ -488,12 +489,15 @@ async def _create_docker_service_params(
488489
return docker_params
489490

490491

491-
def _get_service_entrypoint(service_boot_parameters_labels: dict) -> str:
492+
def _get_service_entrypoint(
493+
service_boot_parameters_labels: list[dict[str, Any]]
494+
) -> str:
492495
log.debug("Getting service entrypoint")
493496
for param in service_boot_parameters_labels:
494497
_check_setting_correctness(param)
495498
if param["name"] == "entry_point":
496499
log.debug("Service entrypoint is %s", param["value"])
500+
assert isinstance(param["value"], str) # nosec
497501
return param["value"]
498502
return ""
499503

@@ -558,7 +562,7 @@ async def _get_docker_image_port_mapping(
558562
async def _pass_port_to_service(
559563
service_name: str,
560564
port: str,
561-
service_boot_parameters_labels: dict,
565+
service_boot_parameters_labels: list[Any],
562566
session: ClientSession,
563567
app_settings: ApplicationSettings,
564568
) -> None:
@@ -608,7 +612,7 @@ async def _create_overlay_network_in_swarm(
608612
service_name,
609613
node_uuid,
610614
)
611-
return docker_network.id
615+
return cast(str, docker_network.id)
612616
except aiodocker.exceptions.DockerError as err:
613617
log.exception("Error while creating network for service %s", service_name)
614618
msg = "Error while creating network"
@@ -872,6 +876,7 @@ async def _start_docker_service(
872876
service_boot_parameters_labels = await _read_service_settings(
873877
app, service_key, service_tag, SERVICE_RUNTIME_BOOTSETTINGS
874878
)
879+
assert isinstance(service_boot_parameters_labels, list) # nosec
875880
service_entrypoint = _get_service_entrypoint(service_boot_parameters_labels)
876881
if published_port:
877882
session = get_client_session(app)
@@ -983,8 +988,8 @@ async def _get_service_key_version_from_docker_service(
983988
return service_key, service_tag
984989

985990

986-
async def _get_service_basepath_from_docker_service(service: dict) -> str:
987-
envs_list = service["Spec"]["TaskTemplate"]["ContainerSpec"]["Env"]
991+
async def _get_service_basepath_from_docker_service(service: dict[str, Any]) -> str:
992+
envs_list: list[str] = service["Spec"]["TaskTemplate"]["ContainerSpec"]["Env"]
988993
envs_dict = dict(x.split("=") for x in envs_list)
989994
return envs_dict["SIMCORE_NODE_BASEPATH"]
990995

services/director/src/simcore_service_director/registry_proxy.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,20 +297,20 @@ async def get_image_digest(app: FastAPI, image: str, tag: str) -> str | None:
297297

298298
async def get_image_labels(
299299
app: FastAPI, image: str, tag: str
300-
) -> tuple[dict, str | None]:
300+
) -> tuple[dict[str, str], str | None]:
301301
"""Returns image labels and the image manifest digest"""
302302

303303
logger.debug("getting image labels of %s:%s", image, tag)
304304
path = f"/v2/{image}/manifests/{tag}"
305305
request_result, headers = await registry_request(app, path)
306306
v1_compatibility_key = json.loads(request_result["history"][0]["v1Compatibility"])
307-
container_config = v1_compatibility_key.get(
307+
container_config: dict[str, Any] = v1_compatibility_key.get(
308308
"container_config", v1_compatibility_key["config"]
309309
)
310-
labels = container_config["Labels"]
310+
labels: dict[str, str] = container_config["Labels"]
311311

312312
headers = headers or {}
313-
manifest_digest = headers.get(_DOCKER_CONTENT_DIGEST_HEADER, None)
313+
manifest_digest: str | None = headers.get(_DOCKER_CONTENT_DIGEST_HEADER, None)
314314

315315
logger.debug("retrieved labels of image %s:%s", image, tag)
316316

@@ -460,7 +460,7 @@ async def get_service_extras(
460460
# check physical node requirements
461461
# all nodes require "CPU"
462462
app_settings = get_application_settings(app)
463-
result = {
463+
result: dict[str, Any] = {
464464
"node_requirements": {
465465
"CPU": app_settings.DIRECTOR_DEFAULT_MAX_NANO_CPUS / 1.0e09,
466466
"RAM": app_settings.DIRECTOR_DEFAULT_MAX_MEMORY,
@@ -471,7 +471,9 @@ async def get_service_extras(
471471
logger.debug("Compiling service extras from labels %s", pformat(labels))
472472

473473
if SERVICE_RUNTIME_SETTINGS in labels:
474-
service_settings = json.loads(labels[SERVICE_RUNTIME_SETTINGS])
474+
service_settings: list[dict[str, Any]] = json.loads(
475+
labels[SERVICE_RUNTIME_SETTINGS]
476+
)
475477
for entry in service_settings:
476478
entry_name = entry.get("name", "").lower()
477479
entry_value = entry.get("value")

0 commit comments

Comments
 (0)