From d2cb235884276dcf9692481dbdc0fda8b91446d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 07:55:41 +0700 Subject: [PATCH 1/9] nixos-rebuild-ng: enable upgrade lints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py | 6 +++--- .../ni/nixos-rebuild-ng/src/nixos_rebuild/process.py | 3 ++- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py index 66f561ac4fef..f14d3d0a09a9 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py @@ -433,14 +433,14 @@ def list_generations(profile: Profile) -> list[GenerationJson]: ) try: nixos_version = (generation_path / "nixos-version").read_text().strip() - except IOError as ex: + except OSError as ex: logger.debug("could not get nixos-version: %s", ex) nixos_version = "Unknown" try: kernel_version = next( (generation_path / "kernel-modules/lib/modules").iterdir() ).name - except IOError as ex: + except OSError as ex: logger.debug("could not get kernel version: %s", ex) kernel_version = "Unknown" specialisations = [ @@ -451,7 +451,7 @@ def list_generations(profile: Profile) -> list[GenerationJson]: [generation_path / "sw/bin/nixos-version", "--configuration-revision"], capture_output=True, ).stdout.strip() - except (CalledProcessError, IOError) as ex: + except (OSError, CalledProcessError) as ex: logger.debug("could not get configuration revision: %s", ex) configuration_revision = "Unknown" diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py index 8905ab274508..dacedeba406c 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py @@ -3,9 +3,10 @@ import logging import os import shlex import subprocess +from collections.abc import Sequence from dataclasses import dataclass from getpass import getpass -from typing import Final, Self, Sequence, TypedDict, Unpack +from typing import Final, Self, TypedDict, Unpack from . import tmpdir diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 018d156fd381..9aac3bfb5a08 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -41,6 +41,8 @@ ignore_missing_imports = true extend-select = [ # ensure imports are sorted "I", + # Automatically upgrade syntax for newer versions + "UP", # require `check` argument for `subprocess.run` "PLW1510", # check for needless exception names in raise statements From 5d7b80c7dd33fc2932d69d63933ed8c2f07a3322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 07:57:41 +0700 Subject: [PATCH 2/9] nixos-rebuild-ng: enable bugbear lints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py | 2 +- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py index 5a53d2d7ef37..b3c01036a2ff 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py @@ -37,7 +37,7 @@ def dict_to_flags(d: Args | None) -> list[str]: case int() if len(key) == 1: flags.append(f"-{key * value}") case int(): - for i in range(value): + for _ in range(value): flags.append(flag) case str(): flags.append(flag) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 9aac3bfb5a08..d8a92bd4d858 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -43,6 +43,8 @@ extend-select = [ "I", # Automatically upgrade syntax for newer versions "UP", + # detect common sources of bugs + "B", # require `check` argument for `subprocess.run` "PLW1510", # check for needless exception names in raise statements From 40da1474cac50771e85fe344a2b1afd1c626e8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 07:59:04 +0700 Subject: [PATCH 3/9] nixos-rebuild-ng: enable RUF lints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- .../ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py | 4 ++-- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py index b3c01036a2ff..b5057e0cc255 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/utils.py @@ -1,13 +1,13 @@ import logging from collections.abc import Mapping, Sequence -from typing import Any, assert_never, override +from typing import Any, ClassVar, assert_never, override type Arg = bool | str | list[str] | list[list[str]] | int | None type Args = dict[str, Arg] class LogFormatter(logging.Formatter): - formatters = { + formatters: ClassVar = { logging.INFO: logging.Formatter("%(message)s"), logging.DEBUG: logging.Formatter("%(levelname)s: %(name)s: %(message)s"), "DEFAULT": logging.Formatter("%(levelname)s: %(message)s"), diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index d8a92bd4d858..9fc89eb07567 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -45,6 +45,8 @@ extend-select = [ "UP", # detect common sources of bugs "B", + # Ruff specific rules + "RUF", # require `check` argument for `subprocess.run` "PLW1510", # check for needless exception names in raise statements diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py index bfd8dba0a58c..a2bf189ad716 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py @@ -132,7 +132,7 @@ def test_build_remote(mock_uuid4: Any, mock_run: Any, monkeypatch: MonkeyPatch) Path("/path/to/file"), ], extra_env={ - "NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh opts"]) + "NIX_SSHOPTS": " ".join([*p.SSH_DEFAULT_OPTS, "--ssh opts"]) }, ), call( @@ -206,7 +206,7 @@ def test_build_remote_flake( Path("/path/to/file"), ], extra_env={ - "NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh opts"]) + "NIX_SSHOPTS": " ".join([*p.SSH_DEFAULT_OPTS, "--ssh opts"]) }, ), call( @@ -247,14 +247,14 @@ def test_copy_closure(monkeypatch: MonkeyPatch) -> None: mock_run.assert_called_with( ["nix-copy-closure", "--copy-flag", "--from", "user@build.host", closure], extra_env={ - "NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh build-opt"]) + "NIX_SSHOPTS": " ".join([*p.SSH_DEFAULT_OPTS, "--ssh build-opt"]) }, ) monkeypatch.setenv("NIX_SSHOPTS", "--ssh build-target-opt") monkeypatch.setattr(n, "WITH_NIX_2_18", True) extra_env = { - "NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh build-target-opt"]) + "NIX_SSHOPTS": " ".join([*p.SSH_DEFAULT_OPTS, "--ssh build-target-opt"]) } with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run: n.copy_closure(closure, target_host, build_host, {"copy_flag": True}) From 51bbfaa71063c4cb5550bdf7413895e5b22689d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 08:04:50 +0700 Subject: [PATCH 4/9] nixos-rebuild-ng: don't shadow builtins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py | 4 ++-- .../ni/nixos-rebuild-ng/src/nixos_rebuild/process.py | 6 +++--- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py index f14d3d0a09a9..79048f83e7fd 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py @@ -583,7 +583,7 @@ def switch_to_configuration( ) -def upgrade_channels(all: bool = False) -> None: +def upgrade_channels(all_channels: bool = False) -> None: """Upgrade channels for classic Nix. It will either upgrade just the `nixos` channel (including any channel @@ -591,7 +591,7 @@ def upgrade_channels(all: bool = False) -> None: """ for channel_path in Path("/nix/var/nix/profiles/per-user/root/channels/").glob("*"): if channel_path.is_dir() and ( - all + all_channels or channel_path.name == "nixos" or (channel_path / ".update-on-nixos-rebuild").exists() ): diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py index dacedeba406c..de37bd615512 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/process.py @@ -92,7 +92,7 @@ def run_wrapper( ) -> subprocess.CompletedProcess[str]: "Wrapper around `subprocess.run` that supports extra functionality." env = None - input = None + process_input = None if remote: if extra_env: extra_env_args = [f"{env}={value}" for env, value in extra_env.items()] @@ -100,7 +100,7 @@ def run_wrapper( if sudo: if remote.sudo_password: args = ["sudo", "--prompt=", "--stdin", *args] - input = remote.sudo_password + "\n" + process_input = remote.sudo_password + "\n" else: args = ["sudo", *args] args = [ @@ -133,7 +133,7 @@ def run_wrapper( args, check=check, env=env, - input=input, + input=process_input, # Hope nobody is using NixOS with non-UTF8 encodings, but "surrogateescape" # should still work in those systems. text=True, diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 9fc89eb07567..863830562e6f 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -39,6 +39,8 @@ ignore_missing_imports = true [tool.ruff.lint] extend-select = [ + # don't shadow built-in names + "A", # ensure imports are sorted "I", # Automatically upgrade syntax for newer versions From 254d7f7cf0bbc57f77a304b7fef41d7616ce975d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 08:05:44 +0700 Subject: [PATCH 5/9] nixos-rebuild-ng: enable c3 lints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 863830562e6f..459f7d63efc7 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -41,6 +41,8 @@ ignore_missing_imports = true extend-select = [ # don't shadow built-in names "A", + # Better list/set/dict comprehensions + "C4", # ensure imports are sorted "I", # Automatically upgrade syntax for newer versions From cca8865fa63550ab91ff0de2c54b361ba41880f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 08:06:38 +0700 Subject: [PATCH 6/9] nixos-rebuild-ng: check for debugger statements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 459f7d63efc7..ce82542ad0ce 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -43,6 +43,8 @@ extend-select = [ "A", # Better list/set/dict comprehensions "C4", + # Check for debugger statements + "T10", # ensure imports are sorted "I", # Automatically upgrade syntax for newer versions From 34976988fae193de3735d7217455930c23b2574a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 08:09:14 +0700 Subject: [PATCH 7/9] nixos-rebuild-ng: require type annotations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- .../by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py | 2 +- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py index 90ab6d27f41b..7f0183d7c381 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/models.py @@ -14,7 +14,7 @@ type ImageVariants = dict[str, str] class NRError(Exception): "nixos-rebuild general error." - def __init__(self, message: str): + def __init__(self, message: str) -> None: self.message = message @override diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index ce82542ad0ce..5b7751519b37 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -39,6 +39,8 @@ ignore_missing_imports = true [tool.ruff.lint] extend-select = [ + # Enforce type annotations + "ANN", # don't shadow built-in names "A", # Better list/set/dict comprehensions @@ -58,6 +60,10 @@ extend-select = [ # check for needless exception names in raise statements "TRY201", ] +ignore = [ + # allow Any type + "ANN401" +] [tool.ruff.lint.per-file-ignores] "tests/" = ["FA102"] From 2db32dd18955295ee3b6bec458522d9d6c2be88e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 08:17:11 +0700 Subject: [PATCH 8/9] nixos-rebuild-ng: lint names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml index 5b7751519b37..7874c217468d 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/pyproject.toml @@ -59,6 +59,8 @@ extend-select = [ "PLW1510", # check for needless exception names in raise statements "TRY201", + # Pythonic naming conventions + "N", ] ignore = [ # allow Any type From 24f5c3a5ca5ba48c74b9e39f20e835589b3ed514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 7 Feb 2025 09:08:36 +0700 Subject: [PATCH 9/9] nixos-rebuild-ng: fix typos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Thalheim --- pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py | 2 +- pkgs/by-name/ni/nixos-rebuild-ng/tests/repl.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py index b02d918ab3b4..f879130f0336 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py @@ -2,7 +2,7 @@ # Use strings to avoid breaking standalone (e.g.: `python -m nixos_rebuild`) # usage EXECUTABLE = "@executable@" -# Use either `== "true"` if the default (e.g.: `python -m nixos_rebuld`) is +# Use either `== "true"` if the default (e.g.: `python -m nixos_rebuild`) is # `False` or `!= "false"` if the default is `True` WITH_NIX_2_18 = "@withNix218@" != "false" # type: ignore WITH_REEXEC = "@withReexec@" == "true" # type: ignore diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/tests/repl.nix b/pkgs/by-name/ni/nixos-rebuild-ng/tests/repl.nix index c92b7c6fff7f..1853a65bab86 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/tests/repl.nix +++ b/pkgs/by-name/ni/nixos-rebuild-ng/tests/repl.nix @@ -28,7 +28,7 @@ let # In case we want/need to evaluate packages or the assertions or whatever, # we want to have a linux system. - # TODO: make the non-flake test use thise. + # TODO: make the non-flake test use this. linuxSystem = lib.replaceStrings [ "darwin" ] [ "linux" ] stdenv.hostPlatform.system; in