diff --git a/diracx-client/src/diracx/client/patches/__init__.py b/diracx-client/src/diracx/client/patches/__init__.py index 0c7e71ee8..84cf23fca 100644 --- a/diracx-client/src/diracx/client/patches/__init__.py +++ b/diracx-client/src/diracx/client/patches/__init__.py @@ -1,19 +1,25 @@ from __future__ import annotations -from typing import List +from typing import TYPE_CHECKING -from .utils import DiracClientMixin +from diracx.core.extensions import select_from_extension +from .utils import DiracClientMixin -from diracx.core.extensions import select_from_extension -real_client = select_from_extension(group="diracx", name="client_class")[0].load() -DiracGenerated = real_client +# If we're doing static analysis assume that the client class is the one from +# the current Python module. +if TYPE_CHECKING: + from diracx.client.generated._client import Dirac as DiracGenerated +else: + DiracGenerated = select_from_extension(group="diracx", name="client_class")[ + 0 + ].load() -__all__: List[str] = [ +__all__: list[str] = [ "DiracClient", ] # Add all objects you want publicly available to users at this package level -class DiracClient(DiracClientMixin, DiracGenerated): ... # type: ignore +class DiracClient(DiracClientMixin, DiracGenerated): ... diff --git a/diracx-client/src/diracx/client/patches/aio/__init__.py b/diracx-client/src/diracx/client/patches/aio/__init__.py index 952e30c99..9b5284ed1 100644 --- a/diracx-client/src/diracx/client/patches/aio/__init__.py +++ b/diracx-client/src/diracx/client/patches/aio/__init__.py @@ -1,18 +1,24 @@ from __future__ import annotations -from typing import List +from typing import TYPE_CHECKING +from diracx.core.extensions import select_from_extension from .utils import DiracClientMixin -from diracx.core.extensions import select_from_extension +# If we're doing static analysis assume that the client class is the one from +# the current Python module. +if TYPE_CHECKING: + from diracx.client.generated.aio._client import Dirac as DiracGenerated +else: + DiracGenerated = select_from_extension(group="diracx", name="aio_client_class")[ + 0 + ].load() -real_client = select_from_extension(group="diracx", name="aio_client_class")[0].load() -DiracGenerated = real_client -__all__: List[str] = [ +__all__: list[str] = [ "DiracClient", ] # Add all objects you want publicly available to users at this package level -class DiracClient(DiracClientMixin, DiracGenerated): ... # type: ignore +class DiracClient(DiracClientMixin, DiracGenerated): ... diff --git a/diracx-logic/src/diracx/logic/jobs/status.py b/diracx-logic/src/diracx/logic/jobs/status.py index c56be12b2..0be30727a 100644 --- a/diracx-logic/src/diracx/logic/jobs/status.py +++ b/diracx-logic/src/diracx/logic/jobs/status.py @@ -263,7 +263,7 @@ async def reschedule_jobs( failed = {} reschedule_max = config.Operations[ "Defaults" - ].Services.JobScheduling.MaxRescheduling # type: ignore + ].Services.JobScheduling.MaxRescheduling status_changes = {} attribute_changes: dict[int, dict[str, str]] = defaultdict(dict) diff --git a/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py b/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py index ccc383966..12c40a134 100644 --- a/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py +++ b/extensions/gubbins/gubbins-core/src/gubbins/core/config/schema.py @@ -1,5 +1,6 @@ from __future__ import annotations +# mypy: disable-error-code="assignment" from typing import MutableMapping from diracx.core.config.schema import ( @@ -23,8 +24,8 @@ class UserConfig(_UserConfig): class RegistryConfig(_RegistryConfig): - Users: MutableMapping[str, UserConfig] # type: ignore[assignment] + Users: MutableMapping[str, UserConfig] class Config(_Config): - Registry: MutableMapping[str, RegistryConfig] # type: ignore[assignment] + Registry: MutableMapping[str, RegistryConfig] diff --git a/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py b/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py index cfdd6d9b9..0f139ed42 100644 --- a/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py +++ b/extensions/gubbins/gubbins-db/src/gubbins/db/sql/jobs/db.py @@ -22,7 +22,7 @@ async def insert_gubbins_info(self, job_id: int, info: str): async def get_job_jdls( # type: ignore[override] self, job_ids, original: bool = False, with_info=False - ) -> dict: + ) -> dict[int, str] | dict[int, dict[str, str]]: """ This method modifes the one in the parent class: * adds an extra argument diff --git a/extensions/gubbins/pyproject.toml b/extensions/gubbins/pyproject.toml index a57b5b6ae..f979b5ec4 100644 --- a/extensions/gubbins/pyproject.toml +++ b/extensions/gubbins/pyproject.toml @@ -14,9 +14,9 @@ classifiers = [ ] dependencies = [ # "gubbins-api", - # "gubbins-cli", - # "gubbins-client", - # "gubbins-core", + "gubbins-cli", + "gubbins-client", + "gubbins-core", ] dynamic = ["version"] @@ -63,7 +63,6 @@ ignore = [ ] - [tool.ruff.lint.flake8-bugbear] # Allow default arguments like, e.g., `data: List[str] = fastapi.Query(None)`. extend-immutable-calls = [ @@ -76,20 +75,20 @@ extend-immutable-calls = [ [tool.mypy] files = [ -# "gubbins-api/src/**/*.py", + # "gubbins-api/src/**/*.py", "gubbins-cli/src/**/*.py", "gubbins-client/src/**/_patch.py", "gubbins-client/src/gubbins/client/patches/**/*.py", -# "gubbins-core/src/**/*.py", + # "gubbins-core/src/**/*.py", "gubbins-db/src/**/*.py", "gubbins-logic/src/**/*.py", "gubbins-routers/src/**/*.py", ] mypy_path = [ -# "$MYPY_CONFIG_FILE_DIR/gubbins-api/src", + # "$MYPY_CONFIG_FILE_DIR/gubbins-api/src", "$MYPY_CONFIG_FILE_DIR/gubbins-cli/src", "$MYPY_CONFIG_FILE_DIR/gubbins-client/src", -# "$MYPY_CONFIG_FILE_DIR/gubbins-core/src", + # "$MYPY_CONFIG_FILE_DIR/gubbins-core/src", "$MYPY_CONFIG_FILE_DIR/gubbins-db/src", "$MYPY_CONFIG_FILE_DIR/gubbins-logic/src", "$MYPY_CONFIG_FILE_DIR/gubbins-routers/src", diff --git a/requirements-dev.txt b/requirements-dev.txt index 79d8ae6a6..7256f1639 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,9 +1,9 @@ --e ./[testing] --e ./diracx-core/[testing] --e ./diracx-api/[testing] --e ./diracx-cli/[testing] --e ./diracx-client/[testing] --e ./diracx-routers/[testing] --e ./diracx-db/[testing] --e ./diracx-testing/[testing] --e ./diracx-logic/[testing] +-e ./[testing,types] +-e ./diracx-core/[testing,types] +-e ./diracx-api/[testing,types] +-e ./diracx-cli/[testing,types] +-e ./diracx-client/[testing,types] +-e ./diracx-routers/[testing,types] +-e ./diracx-db/[testing,types] +-e ./diracx-testing/[testing,types] +-e ./diracx-logic/[testing,types]