From 02f2b3700ed3f5d0c10b9f6ae92530e478404005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 6 Dec 2023 17:10:15 +0100 Subject: [PATCH 1/3] re-add 'U' ruff type category This should have been not removed --- pkgs/clan-cli/pyproject.toml | 2 +- pkgs/clan-vm-manager/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/clan-cli/pyproject.toml b/pkgs/clan-cli/pyproject.toml index 2d5033065..05ce0a0a6 100644 --- a/pkgs/clan-cli/pyproject.toml +++ b/pkgs/clan-cli/pyproject.toml @@ -55,5 +55,5 @@ ignore_missing_imports = true [tool.ruff] target-version = "py311" line-length = 88 -select = [ "E", "F", "I", "N", "RUF", "ANN", "A" ] +select = [ "E", "F", "I", "U", "N", "RUF", "ANN", "A" ] ignore = ["E501", "E402", "ANN101", "ANN401", "A003"] diff --git a/pkgs/clan-vm-manager/pyproject.toml b/pkgs/clan-vm-manager/pyproject.toml index ab773a44e..b2116366f 100644 --- a/pkgs/clan-vm-manager/pyproject.toml +++ b/pkgs/clan-vm-manager/pyproject.toml @@ -30,5 +30,5 @@ ignore_missing_imports = true [tool.ruff] target-version = "py311" line-length = 88 -select = [ "E", "F", "I", "N", "RUF", "ANN", "A" ] +select = [ "E", "F", "I", "U", "N", "RUF", "ANN", "A" ] ignore = ["E501", "E402", "N802", "ANN101", "ANN401", "A003"] From 5e34e55fff1f41a3535b3b77cec567fa624fd96c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 6 Dec 2023 17:13:32 +0100 Subject: [PATCH 2/3] modernize code with ruff --- pkgs/clan-cli/clan_cli/backups/create.py | 3 +-- pkgs/clan-cli/clan_cli/backups/list.py | 3 +-- pkgs/clan-cli/clan_cli/backups/restore.py | 3 +-- pkgs/clan-cli/clan_cli/clan_uri.py | 16 ++++++---------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/backups/create.py b/pkgs/clan-cli/clan_cli/backups/create.py index 5bbe5e8a8..a1bfdaf33 100644 --- a/pkgs/clan-cli/clan_cli/backups/create.py +++ b/pkgs/clan-cli/clan_cli/backups/create.py @@ -1,13 +1,12 @@ import argparse import json import subprocess -from typing import Optional from ..errors import ClanError from ..machines.machines import Machine -def create_backup(machine: Machine, provider: Optional[str] = None) -> None: +def create_backup(machine: Machine, provider: str | None = None) -> None: backup_scripts = json.loads( machine.eval_nix(f"nixosConfigurations.{machine.name}.config.clanCore.backups") ) diff --git a/pkgs/clan-cli/clan_cli/backups/list.py b/pkgs/clan-cli/clan_cli/backups/list.py index c7fe84579..471d38069 100644 --- a/pkgs/clan-cli/clan_cli/backups/list.py +++ b/pkgs/clan-cli/clan_cli/backups/list.py @@ -1,13 +1,12 @@ import argparse import pprint from pathlib import Path -from typing import Optional from ..errors import ClanError def list_backups( - flake_dir: Path, machine: str, provider: Optional[str] = None + flake_dir: Path, machine: str, provider: str | None = None ) -> dict[str, dict[str, list[dict[str, str]]]]: dummy_data = { "testhostname": { diff --git a/pkgs/clan-cli/clan_cli/backups/restore.py b/pkgs/clan-cli/clan_cli/backups/restore.py index 64102fc0a..6769a01ff 100644 --- a/pkgs/clan-cli/clan_cli/backups/restore.py +++ b/pkgs/clan-cli/clan_cli/backups/restore.py @@ -1,6 +1,5 @@ import argparse from pathlib import Path -from typing import Optional from ..errors import ClanError @@ -10,7 +9,7 @@ def restore_backup( machine: str, provider: str, backup_id: str, - service: Optional[str] = None, + service: str | None = None, ) -> None: if service is None: print("would restore backup", machine, provider, backup_id) diff --git a/pkgs/clan-cli/clan_cli/clan_uri.py b/pkgs/clan-cli/clan_cli/clan_uri.py index cca37d77f..25a3ab2ca 100644 --- a/pkgs/clan-cli/clan_cli/clan_uri.py +++ b/pkgs/clan-cli/clan_cli/clan_uri.py @@ -4,7 +4,7 @@ import urllib.parse from dataclasses import dataclass from enum import Enum, member from pathlib import Path -from typing import Dict, Self +from typing import Self from .errors import ClanError @@ -52,7 +52,7 @@ class ClanURI: if uri.startswith("clan://"): self._nested_uri = uri[7:] else: - raise ClanError("Invalid scheme: expected clan://, got {}".format(uri)) + raise ClanError(f"Invalid scheme: expected clan://, got {uri}") # Parse the URI into components # scheme://netloc/path;parameters?query#fragment @@ -61,14 +61,12 @@ class ClanURI: # Parse the query string into a dictionary query = urllib.parse.parse_qs(self._components.query) - params: Dict[str, str] = {} + params: dict[str, str] = {} for field in dataclasses.fields(ClanParameters): if field.name in query: values = query[field.name] if len(values) > 1: - raise ClanError( - "Multiple values for parameter: {}".format(field.name) - ) + raise ClanError(f"Multiple values for parameter: {field.name}") params[field.name] = values[0] # Remove the field from the query dictionary @@ -89,12 +87,10 @@ class ClanURI: case "file": self.scheme = ClanScheme.FILE.value(Path(self._components.path)) # type: ignore case _: - raise ClanError( - "Unsupported scheme: {}".format(self._components.scheme) - ) + raise ClanError(f"Unsupported scheme: {self._components.scheme}") @classmethod def from_path(cls, path: Path, params: ClanParameters) -> Self: # noqa urlparams = urllib.parse.urlencode(params.__dict__) - return cls("clan://file://{}?{}".format(path, urlparams)) + return cls(f"clan://file://{path}?{urlparams}") From b6cb13bcdee896e514a27d46504ac1ccba947d74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 6 Dec 2023 17:16:03 +0100 Subject: [PATCH 3/3] move mypy/ipdb to devshell --- pkgs/clan-vm-manager/default.nix | 3 +-- pkgs/clan-vm-manager/shell.nix | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/clan-vm-manager/default.nix b/pkgs/clan-vm-manager/default.nix index 72a3f5de7..dbd74ba15 100644 --- a/pkgs/clan-vm-manager/default.nix +++ b/pkgs/clan-vm-manager/default.nix @@ -10,7 +10,6 @@ , gobject-introspection , clan-cli , makeDesktopItem -, mypy , ipdb }: let @@ -35,7 +34,7 @@ python3.pkgs.buildPythonApplication { ]; buildInputs = [ spice-gtk gtk3 gnome.adwaita-icon-theme ]; - propagatedBuildInputs = [ mypy ipdb pygobject3 clan-cli ]; + propagatedBuildInputs = [ pygobject3 clan-cli ]; # also re-expose dependencies so we test them in CI passthru.tests = { diff --git a/pkgs/clan-vm-manager/shell.nix b/pkgs/clan-vm-manager/shell.nix index d949f45d8..884e0ee3f 100644 --- a/pkgs/clan-vm-manager/shell.nix +++ b/pkgs/clan-vm-manager/shell.nix @@ -1,10 +1,12 @@ -{ clan-vm-manager, clan-cli, mkShell, ruff, desktop-file-utils, xdg-utils }: +{ clan-vm-manager, clan-cli, mkShell, ruff, desktop-file-utils, xdg-utils, mypy, python3Packages }: mkShell { inherit (clan-vm-manager) propagatedBuildInputs buildInputs; nativeBuildInputs = [ ruff desktop-file-utils xdg-utils + mypy + python3Packages.ipdb ] ++ clan-vm-manager.nativeBuildInputs; PYTHONBREAKPOINT = "ipdb.set_trace";