From: Daan De Meyer Date: Thu, 5 Sep 2024 11:34:46 +0000 (+0200) Subject: Drop listify() X-Git-Tag: v25~314^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f66212e9c213a79cbcc9eb48a6613c214e32f72f;p=thirdparty%2Fmkosi.git Drop listify() Causes issues with mypyc and wrapping the callsites in list() isn't really any worse when it comes to readability. --- diff --git a/mkosi/distributions/arch.py b/mkosi/distributions/arch.py index 95f771f29..aaab71fc7 100644 --- a/mkosi/distributions/arch.py +++ b/mkosi/distributions/arch.py @@ -8,7 +8,7 @@ from mkosi.distributions import DistributionInstaller, PackageType from mkosi.installer import PackageManager from mkosi.installer.pacman import Pacman, PacmanRepository from mkosi.log import die -from mkosi.util import listify, sort_packages +from mkosi.util import sort_packages class Installer(DistributionInstaller): @@ -34,7 +34,7 @@ class Installer(DistributionInstaller): @classmethod def setup(cls, context: Context) -> None: - Pacman.setup(context, cls.repositories(context)) + Pacman.setup(context, list(cls.repositories(context))) @classmethod def install(cls, context: Context) -> None: @@ -54,7 +54,6 @@ class Installer(DistributionInstaller): Pacman.invoke(context, "--remove", ["--nosave", "--recursive", *packages], apivfs=True) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[PacmanRepository]: if context.config.local_mirror: yield PacmanRepository("core", context.config.local_mirror) diff --git a/mkosi/distributions/azure.py b/mkosi/distributions/azure.py index 83e8d2bb0..2cc9f2ea1 100644 --- a/mkosi/distributions/azure.py +++ b/mkosi/distributions/azure.py @@ -11,7 +11,6 @@ from mkosi.distributions import ( from mkosi.installer.dnf import Dnf from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm from mkosi.log import die -from mkosi.util import listify class Installer(fedora.Installer): @@ -29,7 +28,7 @@ class Installer(fedora.Installer): @classmethod def setup(cls, context: Context) -> None: - Dnf.setup(context, cls.repositories(context), filelists=False) + Dnf.setup(context, list(cls.repositories(context)), filelists=False) setup_rpm(context, dbpath="/var/lib/rpm") @classmethod @@ -37,7 +36,6 @@ class Installer(fedora.Installer): cls.install_packages(context, ["filesystem", "azurelinux-release"], apivfs=False) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: gpgurls = ( find_rpm_gpgkey( diff --git a/mkosi/distributions/centos.py b/mkosi/distributions/centos.py index c8afadeff..e6278e31c 100644 --- a/mkosi/distributions/centos.py +++ b/mkosi/distributions/centos.py @@ -14,7 +14,6 @@ from mkosi.installer import PackageManager from mkosi.installer.dnf import Dnf from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm from mkosi.log import die -from mkosi.util import listify from mkosi.versioncomp import GenericVersion CENTOS_SIG_REPO_PRIORITY = 50 @@ -66,7 +65,7 @@ class Installer(DistributionInstaller): if GenericVersion(context.config.release) <= 8: die(f"{cls.pretty_name()} Stream 8 or earlier variants are not supported") - Dnf.setup(context, cls.repositories(context)) + Dnf.setup(context, list(cls.repositories(context))) (context.sandbox_tree / "etc/dnf/vars/stream").write_text(f"{context.config.release}-stream\n") setup_rpm(context, dbpath=cls.dbpath(context)) @@ -176,7 +175,6 @@ class Installer(DistributionInstaller): ) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: if context.config.local_mirror: yield from cls.repository_variants(context, "AppStream") diff --git a/mkosi/distributions/debian.py b/mkosi/distributions/debian.py index d386da6ae..a90455e2d 100644 --- a/mkosi/distributions/debian.py +++ b/mkosi/distributions/debian.py @@ -13,7 +13,6 @@ from mkosi.installer.apt import Apt, AptRepository from mkosi.log import die from mkosi.run import run from mkosi.sandbox import umask -from mkosi.util import listify class Installer(DistributionInstaller): @@ -37,9 +36,8 @@ class Installer(DistributionInstaller): def package_manager(cls, config: Config) -> type[PackageManager]: return Apt - @staticmethod - @listify - def repositories(context: Context, local: bool = True) -> Iterable[AptRepository]: + @classmethod + def repositories(cls, context: Context, local: bool = True) -> Iterable[AptRepository]: types = ("deb", "deb-src") components = ("main", *context.config.repositories) @@ -97,7 +95,7 @@ class Installer(DistributionInstaller): @classmethod def setup(cls, context: Context) -> None: - Apt.setup(context, cls.repositories(context)) + Apt.setup(context, list(cls.repositories(context))) @classmethod def install(cls, context: Context) -> None: diff --git a/mkosi/distributions/fedora.py b/mkosi/distributions/fedora.py index 356e8b4bd..ddd2abd94 100644 --- a/mkosi/distributions/fedora.py +++ b/mkosi/distributions/fedora.py @@ -17,7 +17,7 @@ from mkosi.installer import PackageManager from mkosi.installer.dnf import Dnf from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey, setup_rpm from mkosi.log import die -from mkosi.util import listify, startswith, tuplify +from mkosi.util import startswith, tuplify @tuplify @@ -94,7 +94,7 @@ class Installer(DistributionInstaller): @classmethod def setup(cls, context: Context) -> None: - Dnf.setup(context, cls.repositories(context), filelists=False) + Dnf.setup(context, list(cls.repositories(context)), filelists=False) setup_rpm(context) @classmethod @@ -110,7 +110,6 @@ class Installer(DistributionInstaller): Dnf.invoke(context, "remove", packages, apivfs=True) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: gpgurls = find_fedora_rpm_gpgkeys(context) diff --git a/mkosi/distributions/kali.py b/mkosi/distributions/kali.py index 90df33e5a..d0ccbb089 100644 --- a/mkosi/distributions/kali.py +++ b/mkosi/distributions/kali.py @@ -8,7 +8,6 @@ from mkosi.context import Context from mkosi.distributions import Distribution, debian from mkosi.installer.apt import AptRepository from mkosi.log import die -from mkosi.util import listify class Installer(debian.Installer): @@ -24,9 +23,8 @@ class Installer(debian.Installer): def default_tools_tree_distribution(cls) -> Distribution: return Distribution.kali - @staticmethod - @listify - def repositories(context: Context, local: bool = True) -> Iterable[AptRepository]: + @classmethod + def repositories(cls, context: Context, local: bool = True) -> Iterable[AptRepository]: if context.config.local_mirror and local: yield AptRepository( types=("deb",), diff --git a/mkosi/distributions/mageia.py b/mkosi/distributions/mageia.py index 4b817fb51..6e91853a8 100644 --- a/mkosi/distributions/mageia.py +++ b/mkosi/distributions/mageia.py @@ -7,7 +7,6 @@ from mkosi.context import Context from mkosi.distributions import fedora, join_mirror from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey from mkosi.log import die -from mkosi.util import listify class Installer(fedora.Installer): @@ -28,7 +27,6 @@ class Installer(fedora.Installer): cls.install_packages(context, ["filesystem"], apivfs=False) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: gpgurls = ( find_rpm_gpgkey( diff --git a/mkosi/distributions/openmandriva.py b/mkosi/distributions/openmandriva.py index 5238864a3..a153d68de 100644 --- a/mkosi/distributions/openmandriva.py +++ b/mkosi/distributions/openmandriva.py @@ -7,7 +7,6 @@ from mkosi.context import Context from mkosi.distributions import fedora, join_mirror from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey from mkosi.log import die -from mkosi.util import listify class Installer(fedora.Installer): @@ -28,7 +27,6 @@ class Installer(fedora.Installer): cls.install_packages(context, ["filesystem"], apivfs=False) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: mirror = context.config.mirror or "http://mirror.openmandriva.org" diff --git a/mkosi/distributions/opensuse.py b/mkosi/distributions/opensuse.py index 98539d38a..30a91be2c 100644 --- a/mkosi/distributions/opensuse.py +++ b/mkosi/distributions/opensuse.py @@ -16,7 +16,7 @@ from mkosi.installer.zypper import Zypper from mkosi.log import die from mkosi.mounts import finalize_crypto_mounts from mkosi.run import run -from mkosi.util import listify, sort_packages +from mkosi.util import sort_packages class Installer(DistributionInstaller): @@ -51,9 +51,9 @@ class Installer(DistributionInstaller): def setup(cls, context: Context) -> None: zypper = context.config.find_binary("zypper") if zypper: - Zypper.setup(context, cls.repositories(context)) + Zypper.setup(context, list(cls.repositories(context))) else: - Dnf.setup(context, cls.repositories(context)) + Dnf.setup(context, list(cls.repositories(context))) setup_rpm(context) @@ -84,7 +84,6 @@ class Installer(DistributionInstaller): Dnf.invoke(context, "remove", packages, apivfs=True) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: if context.config.local_mirror: yield RpmRepository(id="local-mirror", url=f"baseurl={context.config.local_mirror}", gpgurls=()) diff --git a/mkosi/distributions/rhel.py b/mkosi/distributions/rhel.py index 653a42c15..81e45892a 100644 --- a/mkosi/distributions/rhel.py +++ b/mkosi/distributions/rhel.py @@ -8,7 +8,6 @@ from mkosi.context import Context from mkosi.distributions import centos, join_mirror from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey from mkosi.log import die -from mkosi.util import listify class Installer(centos.Installer): @@ -109,7 +108,6 @@ class Installer(centos.Installer): ) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: yield from cls.repository_variants(context, "baseos") yield from cls.repository_variants(context, "appstream") diff --git a/mkosi/distributions/rhel_ubi.py b/mkosi/distributions/rhel_ubi.py index c921ecd1f..34cbc72a6 100644 --- a/mkosi/distributions/rhel_ubi.py +++ b/mkosi/distributions/rhel_ubi.py @@ -5,7 +5,6 @@ from collections.abc import Iterable from mkosi.context import Context from mkosi.distributions import centos, join_mirror from mkosi.installer.rpm import RpmRepository, find_rpm_gpgkey -from mkosi.util import listify class Installer(centos.Installer): @@ -52,7 +51,6 @@ class Installer(centos.Installer): ) @classmethod - @listify def repositories(cls, context: Context) -> Iterable[RpmRepository]: yield from cls.repository_variants(context, "baseos") yield from cls.repository_variants(context, "appstream") diff --git a/mkosi/distributions/ubuntu.py b/mkosi/distributions/ubuntu.py index a7c00d50d..803a91f69 100644 --- a/mkosi/distributions/ubuntu.py +++ b/mkosi/distributions/ubuntu.py @@ -6,7 +6,6 @@ from pathlib import Path from mkosi.context import Context from mkosi.distributions import Distribution, debian from mkosi.installer.apt import AptRepository -from mkosi.util import listify class Installer(debian.Installer): @@ -22,9 +21,8 @@ class Installer(debian.Installer): def default_tools_tree_distribution(cls) -> Distribution: return Distribution.debian - @staticmethod - @listify - def repositories(context: Context, local: bool = True) -> Iterable[AptRepository]: + @classmethod + def repositories(cls, context: Context, local: bool = True) -> Iterable[AptRepository]: types = ("deb", "deb-src") # From kinetic onwards, the usr-is-merged package is available in universe and is required by diff --git a/mkosi/installer/apt.py b/mkosi/installer/apt.py index 01117d968..c576a67f4 100644 --- a/mkosi/installer/apt.py +++ b/mkosi/installer/apt.py @@ -2,7 +2,7 @@ import dataclasses import textwrap -from collections.abc import Iterable, Sequence +from collections.abc import Sequence from pathlib import Path from typing import Optional @@ -96,7 +96,7 @@ class Apt(PackageManager): } @classmethod - def setup(cls, context: Context, repos: Iterable[AptRepository]) -> None: + def setup(cls, context: Context, repositories: Sequence[AptRepository]) -> None: (context.sandbox_tree / "etc/apt").mkdir(exist_ok=True, parents=True) (context.sandbox_tree / "etc/apt/apt.conf.d").mkdir(exist_ok=True, parents=True) (context.sandbox_tree / "etc/apt/preferences.d").mkdir(exist_ok=True, parents=True) @@ -125,7 +125,7 @@ class Apt(PackageManager): sources = context.sandbox_tree / "etc/apt/sources.list.d/mkosi.sources" if not sources.exists(): - for repo in repos: + for repo in repositories: if repo.signedby and not repo.signedby.exists(): die( f"Keyring for repo {repo.url} not found at {repo.signedby}", @@ -134,7 +134,7 @@ class Apt(PackageManager): ) with sources.open("w") as f: - for repo in repos: + for repo in repositories: f.write(str(repo)) @classmethod diff --git a/mkosi/installer/dnf.py b/mkosi/installer/dnf.py index 0160914b3..39bbbe800 100644 --- a/mkosi/installer/dnf.py +++ b/mkosi/installer/dnf.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: LGPL-2.1-or-later import textwrap -from collections.abc import Iterable, Sequence +from collections.abc import Sequence from pathlib import Path from mkosi.config import Cacheonly, Config @@ -43,7 +43,7 @@ class Dnf(PackageManager): } @classmethod - def setup(cls, context: Context, repositories: Iterable[RpmRepository], filelists: bool = True) -> None: + def setup(cls, context: Context, repositories: Sequence[RpmRepository], filelists: bool = True) -> None: (context.sandbox_tree / "etc/dnf/vars").mkdir(parents=True, exist_ok=True) (context.sandbox_tree / "etc/yum.repos.d").mkdir(parents=True, exist_ok=True) diff --git a/mkosi/installer/pacman.py b/mkosi/installer/pacman.py index 38175cd14..f8ba927c1 100644 --- a/mkosi/installer/pacman.py +++ b/mkosi/installer/pacman.py @@ -3,7 +3,7 @@ import dataclasses import shutil import textwrap -from collections.abc import Iterable, Sequence +from collections.abc import Sequence from pathlib import Path from mkosi.config import Config @@ -66,7 +66,7 @@ class Pacman(PackageManager): return mounts @classmethod - def setup(cls, context: Context, repositories: Iterable[PacmanRepository]) -> None: + def setup(cls, context: Context, repositories: Sequence[PacmanRepository]) -> None: if context.config.repository_key_check: sig_level = "Required DatabaseOptional" else: diff --git a/mkosi/installer/zypper.py b/mkosi/installer/zypper.py index 5ef0bf916..98de90fb0 100644 --- a/mkosi/installer/zypper.py +++ b/mkosi/installer/zypper.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later import hashlib import textwrap -from collections.abc import Iterable, Sequence +from collections.abc import Sequence from pathlib import Path from mkosi.config import Config, yes_no @@ -44,7 +44,7 @@ class Zypper(PackageManager): } @classmethod - def setup(cls, context: Context, repos: Iterable[RpmRepository]) -> None: + def setup(cls, context: Context, repositories: Sequence[RpmRepository]) -> None: config = context.sandbox_tree / "etc/zypp/zypp.conf" config.parent.mkdir(exist_ok=True, parents=True) @@ -66,7 +66,7 @@ class Zypper(PackageManager): if not repofile.exists(): repofile.parent.mkdir(exist_ok=True, parents=True) with repofile.open("w") as f: - for repo in repos: + for repo in repositories: # zypper uses the repo ID as its cache key which is unsafe so add a hash of the url used to it to # make sure a unique cache is used for each repository. We use roughly the same algorithm here that # dnf uses as well. diff --git a/mkosi/util.py b/mkosi/util.py index 9d16f9d22..b66b7b842 100644 --- a/mkosi/util.py +++ b/mkosi/util.py @@ -37,13 +37,6 @@ def dictify(f: Callable[..., Iterator[tuple[T, V]]]) -> Callable[..., dict[T, V] return functools.update_wrapper(wrapper, f) -def listify(f: Callable[..., Iterable[T]]) -> Callable[..., list[T]]: - def wrapper(*args: Any, **kwargs: Any) -> list[T]: - return list(f(*args, **kwargs)) - - return functools.update_wrapper(wrapper, f) - - def tuplify(f: Callable[..., Iterable[T]]) -> Callable[..., tuple[T, ...]]: def wrapper(*args: Any, **kwargs: Any) -> tuple[T, ...]: return tuple(f(*args, **kwargs))