You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by sb...@apache.org on 2026/05/20 13:58:42 UTC

(tooling-trusted-releases) 01/01: Use a label property for every task type

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

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

commit 466f387f37e1b5d6dd4e8908a8c57374ac3566f2
Author: Sean B. Palmer <se...@miscoranda.com>
AuthorDate: Wed May 20 14:58:13 2026 +0100

    Use a label property for every task type
---
 atr/models/sql.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 atr/worker.py     | 16 +-------------
 2 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/atr/models/sql.py b/atr/models/sql.py
index 4ac0eb49..8734f7c8 100644
--- a/atr/models/sql.py
+++ b/atr/models/sql.py
@@ -24,7 +24,7 @@
 import dataclasses
 import datetime
 import enum
-from typing import TYPE_CHECKING, Any, Final, Literal, Optional, TypeVar, overload
+from typing import TYPE_CHECKING, Any, Final, Literal, Optional, TypeVar, assert_never, overload
 
 import pydantic
 import sqlalchemy
@@ -237,6 +237,70 @@ class TaskType(enum.StrEnum):
     ZIPFORMAT_INTEGRITY = "zipformat_integrity"
     ZIPFORMAT_STRUCTURE = "zipformat_structure"
 
+    @property
+    def label(self) -> str:  # noqa: C901
+        match self:
+            case TaskType.COMPARE_SOURCE_TREES:
+                return "Compare source trees"
+            case TaskType.DISTRIBUTION_STATUS:
+                return "Distribution status"
+            case TaskType.DISTRIBUTION_WORKFLOW:
+                return "Distribution workflow"
+            case TaskType.HASHING_CHECK:
+                return "Hashing check"
+            case TaskType.KEYS_IMPORT_FILE:
+                return "Key import"
+            case TaskType.LICENSE_FILES:
+                return "License files"
+            case TaskType.LICENSE_HEADERS:
+                return "License headers"
+            case TaskType.MAINTENANCE:
+                return "Maintenance"
+            case TaskType.MESSAGE_SEND:
+                return "Email send"
+            case TaskType.METADATA_UPDATE:
+                return "Metadata update"
+            case TaskType.PATHS_CHECK:
+                return "Paths check"
+            case TaskType.QUARANTINE_VALIDATE:
+                return "Quarantine validation"
+            case TaskType.RAT_CHECK:
+                return "Rat check"
+            case TaskType.SBOM_AUGMENT:
+                return "SBOM augmentation"
+            case TaskType.SBOM_CONVERT:
+                return "SBOM conversion"
+            case TaskType.SBOM_GENERATE_CYCLONEDX:
+                return "SBOM generation"
+            case TaskType.SBOM_OSV_SCAN:
+                return "SBOM vulnerability scan"
+            case TaskType.SBOM_QS_SCORE:
+                return "SBOM QS score"
+            case TaskType.SBOM_TOOL_SCORE:
+                return "SBOM tool score"
+            case TaskType.SIGNATURE_CHECK:
+                return "Signature check"
+            case TaskType.SVN_IMPORT_FILES:
+                return "SVN import"
+            case TaskType.TARGZ_INTEGRITY:
+                return "Targz integrity"
+            case TaskType.TARGZ_STRUCTURE:
+                return "Targz structure"
+            case TaskType.VOTE_AUTO_RESOLVE:
+                return "Vote auto-resolution"
+            case TaskType.VOTE_END_NOTIFY:
+                return "Vote end notification"
+            case TaskType.VOTE_INITIATE:
+                return "Vote initiation"
+            case TaskType.WORKFLOW_STATUS:
+                return "Workflow status"
+            case TaskType.ZIPFORMAT_INTEGRITY:
+                return "Zipformat integrity"
+            case TaskType.ZIPFORMAT_STRUCTURE:
+                return "Zipformat structure"
+            case _:
+                assert_never(self)
+
 
 class UserRole(enum.StrEnum):
     COMMITTEE_MEMBER = "committee_member"
diff --git a/atr/worker.py b/atr/worker.py
index 9d909db3..de9ec27a 100644
--- a/atr/worker.py
+++ b/atr/worker.py
@@ -48,19 +48,6 @@ import atr.tasks.task as task
 # Resource limits, 5 minutes and 3GB
 _CPU_LIMIT_SECONDS: Final = 300
 _MEMORY_LIMIT_BYTES: Final = 3 * 1024 * 1024 * 1024
-_TASK_TYPE_LABELS: Final[dict[sql.TaskType, str]] = {
-    sql.TaskType.KEYS_IMPORT_FILE: "Key import",
-    sql.TaskType.MESSAGE_SEND: "Email send",
-    sql.TaskType.QUARANTINE_VALIDATE: "Quarantine validation",
-    sql.TaskType.SBOM_AUGMENT: "SBOM augmentation",
-    sql.TaskType.SBOM_CONVERT: "SBOM conversion",
-    sql.TaskType.SBOM_GENERATE_CYCLONEDX: "SBOM generation",
-    sql.TaskType.SBOM_OSV_SCAN: "SBOM vulnerability scan",
-    sql.TaskType.SVN_IMPORT_FILES: "SVN import",
-    sql.TaskType.VOTE_AUTO_RESOLVE: "Vote auto-resolution",
-    sql.TaskType.VOTE_END_NOTIFY: "Vote end notification",
-    sql.TaskType.VOTE_INITIATE: "Vote initiation",
-}
 
 # # Create tables if they don't exist
 # SQLModel.metadata.create_all(engine)
@@ -215,7 +202,6 @@ def _task_failure_message(
     primary_rel_path: str | None,
     error: str,
 ) -> str:
-    label = (_TASK_TYPE_LABELS.get(task_type)) or (task_type.value.replace("_", " ").capitalize())
     location_parts = []
     if project_key:
         location_parts.append(project_key)
@@ -224,7 +210,7 @@ def _task_failure_message(
     if revision_number:
         location_parts.append(f"r{revision_number}")
     path_text = _truncate_single_line(primary_rel_path, 180)
-    parts = [f"{label} failed"]
+    parts = [f"{task_type.label} failed"]
     if location_parts:
         parts.append(f"for {' '.join(location_parts)}")
     if path_text:


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org