diff --git a/ahriman-core/src/ahriman/application/ahriman.py b/ahriman-core/src/ahriman/application/ahriman.py index 11cd1383..af9dc039 100644 --- a/ahriman-core/src/ahriman/application/ahriman.py +++ b/ahriman-core/src/ahriman/application/ahriman.py @@ -28,7 +28,6 @@ from ahriman import __version__ from ahriman.application.handlers.handler import Handler from ahriman.application.help_formatter import _HelpFormatter from ahriman.core.module_loader import implementations -from ahriman.core.utils import enum_values from ahriman.models.log_handler import LogHandler @@ -75,7 +74,7 @@ Start web service (requires additional configuration): parser.add_argument("-l", "--lock", help="lock file", type=Path, default=Path("ahriman.pid")) parser.add_argument("--log-handler", help="explicit log handler specification. If none set, the handler will be " "guessed from environment", - type=LogHandler, choices=enum_values(LogHandler)) + type=LogHandler, choices=tuple(LogHandler)) parser.add_argument("-q", "--quiet", help="force disable any logging", action="store_true") parser.add_argument("--report", help="force enable or disable reporting to web service", action=argparse.BooleanOptionalAction, default=True) diff --git a/ahriman-core/src/ahriman/application/handlers/add.py b/ahriman-core/src/ahriman/application/handlers/add.py index 172cec88..74e23d9c 100644 --- a/ahriman-core/src/ahriman/application/handlers/add.py +++ b/ahriman-core/src/ahriman/application/handlers/add.py @@ -23,7 +23,7 @@ from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.application.handlers.update import Update from ahriman.core.configuration import Configuration -from ahriman.core.utils import enum_values, extract_user +from ahriman.core.utils import extract_user from ahriman.models.package_source import PackageSource from ahriman.models.pkgbuild_patch import PkgbuildPatch from ahriman.models.repository_id import RepositoryId @@ -85,7 +85,7 @@ class Add(Handler): action=argparse.BooleanOptionalAction, default=True) parser.add_argument("-n", "--now", help="run update function after", action="store_true") parser.add_argument("-s", "--source", help="explicitly specify the package source for this command", - type=PackageSource, choices=enum_values(PackageSource), default=PackageSource.Auto) + type=PackageSource, choices=tuple(PackageSource), default=PackageSource.Auto) parser.add_argument("-u", "--username", help="build as user", default=extract_user()) parser.add_argument("-v", "--variable", help="apply specified makepkg variables to the next build", action="append") diff --git a/ahriman-core/src/ahriman/application/handlers/rebuild.py b/ahriman-core/src/ahriman/application/handlers/rebuild.py index 0ca70b47..c325550e 100644 --- a/ahriman-core/src/ahriman/application/handlers/rebuild.py +++ b/ahriman-core/src/ahriman/application/handlers/rebuild.py @@ -22,7 +22,7 @@ import argparse from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration -from ahriman.core.utils import enum_values, extract_user +from ahriman.core.utils import extract_user from ahriman.models.build_status import BuildStatusEnum from ahriman.models.package import Package from ahriman.models.packagers import Packagers @@ -88,7 +88,7 @@ class Rebuild(Handler): parser.add_argument("-e", "--exit-code", help="return non-zero exit status if result is empty", action="store_true") parser.add_argument("-s", "--status", help="filter packages by status. Requires --from-database to be set", - type=BuildStatusEnum, choices=enum_values(BuildStatusEnum)) + type=BuildStatusEnum, choices=tuple(BuildStatusEnum)) parser.add_argument("-u", "--username", help="build as user", default=extract_user()) return parser diff --git a/ahriman-core/src/ahriman/application/handlers/setup.py b/ahriman-core/src/ahriman/application/handlers/setup.py index 773dad92..91e23962 100644 --- a/ahriman-core/src/ahriman/application/handlers/setup.py +++ b/ahriman-core/src/ahriman/application/handlers/setup.py @@ -29,7 +29,6 @@ from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration from ahriman.core.exceptions import InitializeError, MissingArchitectureError -from ahriman.core.utils import enum_values from ahriman.models.repository_id import RepositoryId from ahriman.models.sign_settings import SignSettings from ahriman.models.user import User @@ -112,7 +111,7 @@ class Setup(Handler): parser.add_argument("--server", help="server to be used for devtools. If none set, local files will be used") parser.add_argument("--sign-key", help="sign key id") parser.add_argument("--sign-target", help="sign options", action="append", - type=SignSettings.from_option, choices=enum_values(SignSettings)) + type=SignSettings.from_option, choices=tuple(SignSettings)) parser.add_argument("--web-port", help="port of the web service", type=int) parser.add_argument("--web-unix-socket", help="path to unix socket used for interprocess communications", type=Path) diff --git a/ahriman-core/src/ahriman/application/handlers/statistics.py b/ahriman-core/src/ahriman/application/handlers/statistics.py index 75b96bff..996b741a 100644 --- a/ahriman-core/src/ahriman/application/handlers/statistics.py +++ b/ahriman-core/src/ahriman/application/handlers/statistics.py @@ -28,7 +28,7 @@ from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration from ahriman.core.formatters import EventStatsPrinter, PackageStatsPrinter, RepositoryStatsPrinter -from ahriman.core.utils import enum_values, pretty_datetime +from ahriman.core.utils import pretty_datetime from ahriman.models.event import Event, EventType from ahriman.models.repository_id import RepositoryId @@ -85,7 +85,7 @@ class Statistics(Handler): parser.add_argument("package", help="fetch only events for the specified package", nargs="?") parser.add_argument("--chart", help="create updates chart and save it to the specified path", type=Path) parser.add_argument("-e", "--event", help="event type filter", - type=EventType, choices=enum_values(EventType), default=EventType.PackageUpdated) + type=EventType, choices=tuple(EventType), default=EventType.PackageUpdated) parser.add_argument("--from-date", help="only fetch events which are newer than the date") parser.add_argument("--limit", help="limit response by specified amount of events", type=int, default=-1) parser.add_argument("--offset", help="skip specified amount of events", type=int, default=0) diff --git a/ahriman-core/src/ahriman/application/handlers/status.py b/ahriman-core/src/ahriman/application/handlers/status.py index 25151833..d272c13e 100644 --- a/ahriman-core/src/ahriman/application/handlers/status.py +++ b/ahriman-core/src/ahriman/application/handlers/status.py @@ -26,7 +26,6 @@ from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration from ahriman.core.formatters import PackagePrinter, StatusPrinter from ahriman.core.types import Comparable -from ahriman.core.utils import enum_values from ahriman.models.build_status import BuildStatus, BuildStatusEnum from ahriman.models.package import Package from ahriman.models.repository_id import RepositoryId @@ -93,7 +92,7 @@ class Status(Handler): parser.add_argument("--info", help="show additional package information", action=argparse.BooleanOptionalAction, default=False) parser.add_argument("-s", "--status", help="filter packages by status", - type=BuildStatusEnum, choices=enum_values(BuildStatusEnum)) + type=BuildStatusEnum, choices=tuple(BuildStatusEnum)) parser.set_defaults(lock=None, quiet=True, report=False, unsafe=True) return parser diff --git a/ahriman-core/src/ahriman/application/handlers/status_update.py b/ahriman-core/src/ahriman/application/handlers/status_update.py index a06eb5d3..b77b0876 100644 --- a/ahriman-core/src/ahriman/application/handlers/status_update.py +++ b/ahriman-core/src/ahriman/application/handlers/status_update.py @@ -22,7 +22,6 @@ import argparse from ahriman.application.application import Application from ahriman.application.handlers.handler import Handler, SubParserAction from ahriman.core.configuration import Configuration -from ahriman.core.utils import enum_values from ahriman.models.action import Action from ahriman.models.build_status import BuildStatusEnum from ahriman.models.repository_id import RepositoryId @@ -97,7 +96,7 @@ class StatusUpdate(Handler): "If no packages supplied, service status will be updated", nargs="*") parser.add_argument("-s", "--status", help="new package build status", - type=BuildStatusEnum, choices=enum_values(BuildStatusEnum), default=BuildStatusEnum.Success) + type=BuildStatusEnum, choices=tuple(BuildStatusEnum), default=BuildStatusEnum.Success) parser.set_defaults(action=Action.Update, lock=None, quiet=True, report=False, unsafe=True) return parser @@ -115,7 +114,7 @@ class StatusUpdate(Handler): parser = root.add_parser("repo-status-update", help="update repository status", description="update repository status on the status page") parser.add_argument("-s", "--status", help="new status", - type=BuildStatusEnum, choices=enum_values(BuildStatusEnum), default=BuildStatusEnum.Success) + type=BuildStatusEnum, choices=tuple(BuildStatusEnum), default=BuildStatusEnum.Success) parser.set_defaults(action=Action.Update, lock=None, package=[], quiet=True, report=False, unsafe=True) return parser diff --git a/ahriman-core/src/ahriman/application/handlers/users.py b/ahriman-core/src/ahriman/application/handlers/users.py index ff138f9e..1ad9c9ce 100644 --- a/ahriman-core/src/ahriman/application/handlers/users.py +++ b/ahriman-core/src/ahriman/application/handlers/users.py @@ -25,7 +25,6 @@ from ahriman.core.configuration import Configuration from ahriman.core.database import SQLite from ahriman.core.exceptions import PasswordError from ahriman.core.formatters import UserPrinter -from ahriman.core.utils import enum_values from ahriman.models.action import Action from ahriman.models.repository_id import RepositoryId from ahriman.models.user import User @@ -89,7 +88,7 @@ class Users(Handler): "-p", "--password", help="user password. Blank password will be treated as empty password, " "which is in particular must be used for OAuth2 authorization type.") parser.add_argument("-R", "--role", help="user access level", - type=UserAccess, choices=enum_values(UserAccess), default=UserAccess.Read) + type=UserAccess, choices=tuple(UserAccess), default=UserAccess.Read) parser.set_defaults(action=Action.Update, architecture="", exit_code=False, lock=None, quiet=True, report=False, repository="") return parser @@ -110,8 +109,7 @@ class Users(Handler): parser.add_argument("username", help="filter users by username", nargs="?") parser.add_argument("-e", "--exit-code", help="return non-zero exit status if result is empty", action="store_true") - parser.add_argument("-R", "--role", help="filter users by role", type=UserAccess, - choices=enum_values(UserAccess)) + parser.add_argument("-R", "--role", help="filter users by role", type=UserAccess, choices=tuple(UserAccess)) parser.set_defaults(action=Action.List, architecture="", lock=None, quiet=True, report=False, repository="", unsafe=True) return parser diff --git a/ahriman-core/src/ahriman/core/utils.py b/ahriman-core/src/ahriman/core/utils.py index 48db2cf7..cd782ea6 100644 --- a/ahriman-core/src/ahriman/core/utils.py +++ b/ahriman-core/src/ahriman/core/utils.py @@ -31,7 +31,6 @@ import subprocess from collections.abc import Callable, Iterable, Iterator, Mapping from dataclasses import asdict -from enum import Enum from filelock import FileLock from pathlib import Path from pwd import getpwuid @@ -46,7 +45,6 @@ __all__ = [ "check_output", "check_user", "dataclass_view", - "enum_values", "extract_user", "filelock", "filter_json", @@ -242,19 +240,6 @@ def dataclass_view(instance: Any) -> dict[str, Any]: return asdict(instance, dict_factory=lambda fields: {key: value for key, value in fields if value is not None}) -def enum_values(enum: type[Enum]) -> list[str]: - """ - generate list of enumeration values from the source - - Args: - enum(type[Enum]): source enumeration class - - Returns: - list[str]: available enumeration values as string - """ - return [str(key.value) for key in enum] # explicit str conversion for typing - - def extract_user() -> str | None: """ extract user from system environment diff --git a/ahriman-core/tests/ahriman/core/test_utils.py b/ahriman-core/tests/ahriman/core/test_utils.py index 2e75ba0d..22923975 100644 --- a/ahriman-core/tests/ahriman/core/test_utils.py +++ b/ahriman-core/tests/ahriman/core/test_utils.py @@ -221,15 +221,6 @@ def test_dataclass_view_without_none(package_ahriman: Package) -> None: assert Package.from_json(result) == package_ahriman -def test_enum_values() -> None: - """ - must correctly generate choices from enumeration classes - """ - values = enum_values(PackageSource) - for value in values: - assert PackageSource(value).value == value - - def test_extract_user() -> None: """ must extract user from system environment