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