This is an automated email from the ASF dual-hosted git repository.

sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git


The following commit(s) were added to refs/heads/main by this push:
     new 3e755ed  Fix imports to conform to project style
3e755ed is described below

commit 3e755ed9654db3ef7e1083269997baa3ae3f8800
Author: Sean B. Palmer <[email protected]>
AuthorDate: Tue Mar 25 17:19:37 2025 +0200

    Fix imports to conform to project style
---
 atr/blueprints/admin/admin.py  | 14 ++++++--------
 atr/blueprints/api/__init__.py |  4 ++--
 atr/db/__init__.py             | 26 ++++++++++++--------------
 atr/metadata.py                |  8 ++++----
 atr/routes/__init__.py         |  6 +++---
 atr/routes/candidate.py        |  1 +
 atr/routes/projects.py         |  5 ++---
 atr/server.py                  | 10 +++++-----
 atr/tasks/archive.py           |  2 +-
 atr/tasks/bulk.py              |  6 ++----
 atr/tasks/hashing.py           |  2 +-
 atr/tasks/license.py           |  2 +-
 atr/tasks/mailtest.py          | 14 +++++++-------
 atr/tasks/rat.py               |  2 +-
 atr/tasks/sbom.py              |  2 +-
 atr/tasks/task.py              |  2 +-
 atr/tasks/vote.py              |  2 +-
 atr/util.py                    |  4 ++--
 atr/worker.py                  |  2 +-
 19 files changed, 54 insertions(+), 60 deletions(-)

diff --git a/atr/blueprints/admin/admin.py b/atr/blueprints/admin/admin.py
index b9c4078..f6c501e 100644
--- a/atr/blueprints/admin/admin.py
+++ b/atr/blueprints/admin/admin.py
@@ -20,9 +20,10 @@ import logging
 import pathlib
 import statistics
 from collections.abc import Callable, Mapping
-from typing import TYPE_CHECKING, Any
+from typing import Any
 
 import aiofiles.os
+import asfquart
 import asfquart.base as base
 import asfquart.session as session
 import httpx
@@ -35,18 +36,15 @@ import atr.db as db
 import atr.db.models as models
 import atr.util as util
 
-if TYPE_CHECKING:
-    from atr.datasources.apache import LDAPProject
-
 _LOGGER = logging.getLogger(__name__)
 
 
 @admin.BLUEPRINT.route("/performance")
 async def admin_performance() -> str:
     """Display performance statistics for all routes."""
-    from asfquart import APP
+    app = asfquart.APP
 
-    if APP is ...:
+    if app is ...:
         raise base.ASFQuartException("APP is not set", errorcode=500)
 
     # Read and parse the performance log file
@@ -78,7 +76,7 @@ async def admin_performance() -> str:
                     }
                 )
             except (ValueError, IndexError):
-                APP.logger.error("Error parsing line: %s", line)
+                app.logger.error("Error parsing line: %s", line)
                 continue
 
     # Calculate summary statistics for each route
@@ -199,7 +197,7 @@ async def _update_committees() -> tuple[int, int]:  # noqa: 
C901
     podlings_data = await apache.get_current_podlings_data()
     committees = await apache.get_active_committee_data()
 
-    ldap_projects_by_name: Mapping[str, LDAPProject] = {p.name: p for p in 
ldap_projects.projects}
+    ldap_projects_by_name: Mapping[str, apache.LDAPProject] = {p.name: p for p 
in ldap_projects.projects}
     committees_by_name: Mapping[str, apache.Committee] = {c.name: c for c in 
committees.committees}
 
     added_count = 0
diff --git a/atr/blueprints/api/__init__.py b/atr/blueprints/api/__init__.py
index 13ba001..c3228fa 100644
--- a/atr/blueprints/api/__init__.py
+++ b/atr/blueprints/api/__init__.py
@@ -15,6 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-from quart import Blueprint
+import quart
 
-BLUEPRINT = Blueprint("api_blueprint", __name__, url_prefix="/api")
+BLUEPRINT = quart.Blueprint("api_blueprint", __name__, url_prefix="/api")
diff --git a/atr/db/__init__.py b/atr/db/__init__.py
index 3a220d3..150c771 100644
--- a/atr/db/__init__.py
+++ b/atr/db/__init__.py
@@ -34,13 +34,11 @@ import atr.db.models as models
 import atr.util as util
 
 if TYPE_CHECKING:
+    import datetime
     from collections.abc import Sequence
-    from datetime import datetime
 
     import asfquart.base as base
 
-    from atr.db.models import ReleasePhase, ReleaseStage, TaskStatus, VoteEntry
-
 _LOGGER: Final = logging.getLogger(__name__)
 
 _global_async_sessionmaker: sqlalchemy.ext.asyncio.async_sessionmaker | None = 
None
@@ -168,7 +166,7 @@ class Session(sqlalchemy.ext.asyncio.AsyncSession):
         filename: Opt[str] = NotSet,
         sha512: Opt[str] = NotSet,
         signature_sha3: Opt[str | None] = NotSet,
-        uploaded: Opt[datetime] = NotSet,
+        uploaded: Opt[datetime.datetime] = NotSet,
         bytes_size: Opt[int] = NotSet,
         release_name: Opt[str] = NotSet,
         _release: bool = False,
@@ -252,8 +250,8 @@ class Session(sqlalchemy.ext.asyncio.AsyncSession):
         fingerprint: Opt[str] = NotSet,
         algorithm: Opt[str] = NotSet,
         length: Opt[int] = NotSet,
-        created: Opt[datetime] = NotSet,
-        expires: Opt[datetime | None] = NotSet,
+        created: Opt[datetime.datetime] = NotSet,
+        expires: Opt[datetime.datetime | None] = NotSet,
         declared_uid: Opt[str | None] = NotSet,
         apache_uid: Opt[str] = NotSet,
         ascii_armored_key: Opt[str] = NotSet,
@@ -286,15 +284,15 @@ class Session(sqlalchemy.ext.asyncio.AsyncSession):
     def release(
         self,
         name: Opt[str] = NotSet,
-        stage: Opt[ReleaseStage] = NotSet,
-        phase: Opt[ReleasePhase] = NotSet,
-        created: Opt[datetime] = NotSet,
+        stage: Opt[models.ReleaseStage] = NotSet,
+        phase: Opt[models.ReleasePhase] = NotSet,
+        created: Opt[datetime.datetime] = NotSet,
         project_id: Opt[int] = NotSet,
         package_managers: Opt[list[str]] = NotSet,
         version: Opt[str] = NotSet,
         sboms: Opt[list[str]] = NotSet,
         vote_policy_id: Opt[int] = NotSet,
-        votes: Opt[list[VoteEntry]] = NotSet,
+        votes: Opt[list[models.VoteEntry]] = NotSet,
         _project: bool = False,
         _packages: bool = False,
         _vote_policy: bool = False,
@@ -357,13 +355,13 @@ class Session(sqlalchemy.ext.asyncio.AsyncSession):
     def task(
         self,
         id: Opt[int] = NotSet,
-        status: Opt[TaskStatus] = NotSet,
+        status: Opt[models.TaskStatus] = NotSet,
         task_type: Opt[str] = NotSet,
         task_args: Opt[Any] = NotSet,
-        added: Opt[datetime] = NotSet,
-        started: Opt[datetime | None] = NotSet,
+        added: Opt[datetime.datetime] = NotSet,
+        started: Opt[datetime.datetime | None] = NotSet,
         pid: Opt[int | None] = NotSet,
-        completed: Opt[datetime | None] = NotSet,
+        completed: Opt[datetime.datetime | None] = NotSet,
         result: Opt[Any | None] = NotSet,
         error: Opt[str | None] = NotSet,
         release_name: Opt[str | None] = NotSet,
diff --git a/atr/metadata.py b/atr/metadata.py
index 9c66303..a262ebf 100644
--- a/atr/metadata.py
+++ b/atr/metadata.py
@@ -20,7 +20,7 @@ def _get_version_from_git() -> tuple[str, str] | None:
     """Returns the version when within a development environment."""
 
     try:
-        from dunamai import Version
+        import dunamai
     except ImportError:
         # dunamai is not installed, so probably we are not in
         # a development environment.
@@ -28,7 +28,7 @@ def _get_version_from_git() -> tuple[str, str] | None:
 
     try:
         # We start in state/, so we need to go up one level
-        version = Version.from_git()
+        version = dunamai.Version.from_git()
         if version.distance > 0:
             dirty = "+dirty" if version.dirty else ""
             # The development version number should reflect the next release 
that is going to be cut,
@@ -55,9 +55,9 @@ def _get_version_from_version_module() -> tuple[str, str] | 
None:
     """Returns the version from _version module if it exists."""
 
     try:
-        from atr._version import ATR_COMMIT, ATR_VERSION  # pyright: ignore 
[reportMissingImports]
+        import atr._version  # pyright: ignore [reportMissingImports]
 
-        return ATR_VERSION, ATR_COMMIT
+        return atr._version.ATR_VERSION, atr._version.ATR_COMMIT
     except ImportError:
         return None
 
diff --git a/atr/routes/__init__.py b/atr/routes/__init__.py
index d3f82ff..9872888 100644
--- a/atr/routes/__init__.py
+++ b/atr/routes/__init__.py
@@ -278,13 +278,13 @@ async def get_form(request: quart.Request) -> 
datastructures.MultiDict:
     # Which calls _write which calls tempfile, which is synchronous
     # It's getting a tempfile back from some prior call
     # We can't just make blockbuster ignore the call because then it ignores 
it everywhere
-    from asfquart import APP
+    app = asfquart.APP
 
-    if APP is ...:
+    if app is ...:
         raise RuntimeError("APP is not set")
 
     # Or quart.current_app?
-    blockbuster = APP.extensions.get("blockbuster")
+    blockbuster = app.extensions.get("blockbuster")
 
     # Turn blockbuster off
     if blockbuster is not None:
diff --git a/atr/routes/candidate.py b/atr/routes/candidate.py
index 63e810d..7637512 100644
--- a/atr/routes/candidate.py
+++ b/atr/routes/candidate.py
@@ -185,6 +185,7 @@ async def root_candidate_review() -> str:
         releases = await data.release(
             stage=models.ReleaseStage.CANDIDATE,
             _committee=True,
+            _packages=True,
         ).all()
 
         # Filter to only show releases for PMCs or PPMCs where the user is a 
member or committer
diff --git a/atr/routes/projects.py b/atr/routes/projects.py
index 93f4b5a..6d89060 100644
--- a/atr/routes/projects.py
+++ b/atr/routes/projects.py
@@ -30,7 +30,6 @@ import atr.db.models as models
 import atr.db.service as service
 import atr.routes as routes
 import atr.util as util
-from atr.util import get_asf_id_or_die
 
 
 @routes.app_route("/projects")
@@ -81,7 +80,7 @@ class VotePolicyForm(util.QuartFormTyped):
 
 @routes.app_route("/projects/<project_name>/voting-policy/add", 
methods=["GET", "POST"])
 async def root_projects_vote_policy_add(project_name: str) -> 
response.Response | str:
-    uid = await get_asf_id_or_die()
+    uid = await util.get_asf_id_or_die()
 
     async with db.session() as data:
         project = await data.project(name=project_name, _committee=True, 
_vote_policy=True).demand(
@@ -115,7 +114,7 @@ async def root_projects_vote_policy_add(project_name: str) 
-> response.Response
 @routes.app_route("/projects/<project_name>/vote-policy/edit", methods=["GET", 
"POST"])
 @auth.require(auth.Requirements.committer)
 async def root_projects_vote_policy_edit(project_name: str) -> 
response.Response | str:
-    uid = await get_asf_id_or_die()
+    uid = await util.get_asf_id_or_die()
 
     async with db.session() as data:
         project = await data.project(name=project_name, _committee=True, 
_vote_policy=True).demand(
diff --git a/atr/server.py b/atr/server.py
index 6604c8d..c9e7b0a 100644
--- a/atr/server.py
+++ b/atr/server.py
@@ -153,15 +153,15 @@ def app_setup_context(app: base.QuartApp) -> None:
     @app.context_processor
     async def app_wide() -> dict[str, Any]:
         import atr.db.service as service
-        from atr.metadata import commit, version
-        from atr.util import is_admin
+        import atr.metadata as metadata
+        import atr.util as util
 
         return {
             "current_user": await asfquart.session.read(),
-            "is_admin_fn": is_admin,
+            "is_admin_fn": util.is_admin,
             "is_project_lead_fn": service.is_project_lead,
-            "commit": commit,
-            "version": version,
+            "commit": metadata.commit,
+            "version": metadata.version,
         }
 
 
diff --git a/atr/tasks/archive.py b/atr/tasks/archive.py
index 7628234..493d367 100644
--- a/atr/tasks/archive.py
+++ b/atr/tasks/archive.py
@@ -23,8 +23,8 @@ from typing import Any, Final
 
 import pydantic
 
+import atr.db.models as models
 import atr.tasks.task as task
-from atr.db import models
 
 _LOGGER: Final = logging.getLogger(__name__)
 
diff --git a/atr/tasks/bulk.py b/atr/tasks/bulk.py
index c49d0f7..d2f9993 100644
--- a/atr/tasks/bulk.py
+++ b/atr/tasks/bulk.py
@@ -29,8 +29,8 @@ import aiohttp
 import sqlalchemy
 import sqlalchemy.ext.asyncio
 
+import atr.db.models as models
 import atr.tasks.task as task
-from atr.db import models
 
 # Configure detailed logging
 _LOGGER: Final = logging.getLogger(__name__)
@@ -177,9 +177,7 @@ async def database_task_id_get() -> int | None:
         return global_task_id
 
     try:
-        from os import getpid
-
-        process_id = getpid()
+        process_id = os.getpid()
         _LOGGER.debug(f"Current process ID: {process_id}")
         task_id = await database_task_pid_lookup(process_id)
 
diff --git a/atr/tasks/hashing.py b/atr/tasks/hashing.py
index f445f33..2335111 100644
--- a/atr/tasks/hashing.py
+++ b/atr/tasks/hashing.py
@@ -23,8 +23,8 @@ from typing import Any, Final
 import aiofiles
 import pydantic
 
+import atr.db.models as models
 import atr.tasks.task as task
-from atr.db import models
 
 _LOGGER: Final = logging.getLogger(__name__)
 
diff --git a/atr/tasks/license.py b/atr/tasks/license.py
index 22ff67f..4699a10 100644
--- a/atr/tasks/license.py
+++ b/atr/tasks/license.py
@@ -21,9 +21,9 @@ import re
 import tarfile
 from typing import Any, Final
 
+import atr.db.models as models
 import atr.tasks.archive as archive
 import atr.tasks.task as task
-from atr.db import models
 
 _LOGGER = logging.getLogger(__name__)
 
diff --git a/atr/tasks/mailtest.py b/atr/tasks/mailtest.py
index 65773e3..7394fee 100644
--- a/atr/tasks/mailtest.py
+++ b/atr/tasks/mailtest.py
@@ -20,8 +20,8 @@ import logging
 import os
 from typing import Any, Final
 
+import atr.db.models as models
 import atr.tasks.task as task
-from atr.db import models
 
 # Configure detailed logging
 _LOGGER: Final = logging.getLogger(__name__)
@@ -103,8 +103,8 @@ def send_core(args_list: list[str]) -> 
tuple[models.TaskStatus, str | None, tupl
     """Send a test email."""
     import asyncio
 
-    import atr.mail
-    from atr.db.service import get_committee_by_name
+    import atr.db.service as service
+    import atr.mail as mail
 
     _LOGGER.info("Starting send_core")
     try:
@@ -137,7 +137,7 @@ def send_core(args_list: list[str]) -> 
tuple[models.TaskStatus, str | None, tupl
             # Must be a PMC member of tooling
             # Since get_pmc_by_name is async, we need to run it in an event 
loop
             # TODO: We could make a sync version
-            tooling_committee = asyncio.run(get_committee_by_name("tooling"))
+            tooling_committee = 
asyncio.run(service.get_committee_by_name("tooling"))
 
             if not tooling_committee:
                 error_msg = "Tooling committee not found in database"
@@ -163,19 +163,19 @@ def send_core(args_list: list[str]) -> 
tuple[models.TaskStatus, str | None, tupl
 
             with open(dkim_path) as f:
                 dkim_key = f.read()
-                atr.mail.set_secret_key(dkim_key.strip())
+                mail.set_secret_key(dkim_key.strip())
                 _LOGGER.info("DKIM key loaded and set successfully")
         except Exception as e:
             error_msg = f"Failed to load DKIM key: {e}"
             _LOGGER.error(error_msg)
             return task.FAILED, error_msg, tuple()
 
-        event = atr.mail.ArtifactEvent(
+        event = mail.ArtifactEvent(
             artifact_name=args.artifact_name,
             email_recipient=args.email_recipient,
             token=args.token,
         )
-        atr.mail.send(event)
+        mail.send(event)
         _LOGGER.info(f"Email sent successfully to {args.email_recipient}")
 
         return task.COMPLETED, None, tuple()
diff --git a/atr/tasks/rat.py b/atr/tasks/rat.py
index 42c6ab4..87b73bd 100644
--- a/atr/tasks/rat.py
+++ b/atr/tasks/rat.py
@@ -23,10 +23,10 @@ import xml.etree.ElementTree as ElementTree
 from typing import Any, Final
 
 import atr.config as config
+import atr.db.models as models
 import atr.tasks.archive as archive
 import atr.tasks.sbom as sbom
 import atr.tasks.task as task
-from atr.db import models
 
 _CONFIG: Final = config.get()
 _JAVA_MEMORY_ARGS: Final[list[str]] = []
diff --git a/atr/tasks/sbom.py b/atr/tasks/sbom.py
index a13504d..18a7d72 100644
--- a/atr/tasks/sbom.py
+++ b/atr/tasks/sbom.py
@@ -21,9 +21,9 @@ import tarfile
 from typing import Any, Final
 
 import atr.config as config
+import atr.db.models as models
 import atr.tasks.archive as archive
 import atr.tasks.task as task
-from atr.db import models
 
 _CONFIG: Final = config.get()
 _LOGGER: Final = logging.getLogger(__name__)
diff --git a/atr/tasks/task.py b/atr/tasks/task.py
index 0c2368a..78dbb74 100644
--- a/atr/tasks/task.py
+++ b/atr/tasks/task.py
@@ -17,7 +17,7 @@
 
 from typing import Any, Final
 
-from atr.db import models
+import atr.db.models as models
 
 QUEUED: Final = models.TaskStatus.QUEUED
 ACTIVE: Final = models.TaskStatus.ACTIVE
diff --git a/atr/tasks/vote.py b/atr/tasks/vote.py
index 992f7fb..cc8578a 100644
--- a/atr/tasks/vote.py
+++ b/atr/tasks/vote.py
@@ -21,8 +21,8 @@ import logging
 import os
 from typing import Any, Final
 
+import atr.db.models as models
 import atr.tasks.task as task
-from atr.db import models
 
 # Configure detailed logging
 _LOGGER: Final = logging.getLogger(__name__)
diff --git a/atr/util.py b/atr/util.py
index 24b3c68..5dbd6a6 100644
--- a/atr/util.py
+++ b/atr/util.py
@@ -217,14 +217,14 @@ def _get_dict_to_list_inner_type_adapter(source_type: 
Any, key: str) -> pydantic
 
 def _get_dict_to_list_validator(inner_adapter: pydantic.TypeAdapter[dict[Any, 
Any]], key: str) -> Any:
     def validator(val: Any) -> Any:
-        from pydantic.fields import FieldInfo
+        import pydantic.fields as fields
 
         if isinstance(val, dict):
             validated = inner_adapter.validate_python(val)
 
             # need to get the alias of the field in the nested model
             # as this will be fed into the actual model class
-            def get_alias(field_name: str, field_infos: Mapping[str, 
FieldInfo]) -> Any:
+            def get_alias(field_name: str, field_infos: Mapping[str, 
fields.FieldInfo]) -> Any:
                 field = field_infos[field_name]
                 return field.alias if field.alias else field_name
 
diff --git a/atr/worker.py b/atr/worker.py
index a1d9911..929ce9f 100644
--- a/atr/worker.py
+++ b/atr/worker.py
@@ -36,6 +36,7 @@ from typing import Any, Final
 import sqlmodel
 
 import atr.db as db
+import atr.db.models as models
 import atr.tasks.archive as archive
 import atr.tasks.bulk as bulk
 import atr.tasks.hashing as hashing
@@ -47,7 +48,6 @@ import atr.tasks.sbom as sbom
 import atr.tasks.signature as signature
 import atr.tasks.task as task
 import atr.tasks.vote as vote
-from atr.db import models
 
 _LOGGER: Final = logging.getLogger(__name__)
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to