Skip to content

Extensions improvement #427

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
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
20 changes: 13 additions & 7 deletions diracx-client/src/diracx/client/patches/__init__.py
Original file line number Diff line number Diff line change
@@ -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): ...
18 changes: 12 additions & 6 deletions diracx-client/src/diracx/client/patches/aio/__init__.py
Original file line number Diff line number Diff line change
@@ -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): ...
2 changes: 1 addition & 1 deletion diracx-logic/src/diracx/logic/jobs/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import annotations

# mypy: disable-error-code="assignment"
from typing import MutableMapping

from diracx.core.config.schema import (
Expand All @@ -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]
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 7 additions & 8 deletions extensions/gubbins/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ classifiers = [
]
dependencies = [
# "gubbins-api",
# "gubbins-cli",
# "gubbins-client",
# "gubbins-core",
"gubbins-cli",
"gubbins-client",
"gubbins-core",
]
dynamic = ["version"]

Expand Down Expand Up @@ -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 = [
Expand All @@ -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",
Expand Down
18 changes: 9 additions & 9 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -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]
Loading