diff --git a/docs/nix/render_options/__init__.py b/docs/nix/render_options/__init__.py index 1451ef24b..88a313f7e 100644 --- a/docs/nix/render_options/__init__.py +++ b/docs/nix/render_options/__init__.py @@ -29,13 +29,13 @@ from dataclasses import dataclass, field from pathlib import Path from typing import Any -from clan_cli.errors import ClanError from clan_lib.api.modules import ( CategoryInfo, Frontmatter, extract_frontmatter, get_roles, ) +from clan_lib.errors import ClanError # Get environment variables CLAN_CORE_PATH = Path(os.environ["CLAN_CORE_PATH"]) diff --git a/docs/site/contributing/testing.md b/docs/site/contributing/testing.md index d775ed86c..881795b6e 100644 --- a/docs/site/contributing/testing.md +++ b/docs/site/contributing/testing.md @@ -77,9 +77,9 @@ Locate the definition (see above) and add print statements, like, for example `p #### Interactive Shell -- Execute the vm test outside the nix Sandbox via the following command: +- Execute the vm test outside the nix Sandbox via the following command: `nix run .#checks.x86_64-linux.{test-attr-name}.driver -- --interactive` -- Then run the commands in the machines manually, like for example: +- Then run the commands in the machines manually, like for example: ```python3 start_all() machine1.succeed("echo hello") @@ -87,7 +87,7 @@ Locate the definition (see above) and add print statements, like, for example `p #### Breakpoints -To get an interactive shell at a specific line in the VM test script, add a `breakpoint()` call before the line to debug, then run the test outside of the sandbox via: +To get an interactive shell at a specific line in the VM test script, add a `breakpoint()` call before the line to debug, then run the test outside of the sandbox via: `nix run .#checks.x86_64-linux.{test-attr-name}.driver` @@ -115,7 +115,7 @@ rg self.clanLib.test.containerTest Since the clan cli is written in python, the `pytest` framework is used to define unit tests and integration tests via python -Due to superior efficiency, +Due to superior efficiency, ### When to use python tests @@ -141,7 +141,7 @@ rg "import pytest" If any python test fails in the CI pipeline, an error message like this can be found at the end of the log: ``` ... -FAILED tests/test_machines_cli.py::test_machine_delete - clan_cli.errors.ClanError: Template 'new-machine' not in 'inputs.clan-core +FAILED tests/test_machines_cli.py::test_machine_delete - clan_lib.errors.ClanError: Template 'new-machine' not in 'inputs.clan-core ... ``` @@ -244,7 +244,7 @@ Find the attribute via ripgrep: $ rg "lib-values-eval =" lib/values/flake-module.nix 21: lib-values-eval = pkgs.runCommand "tests" { nativeBuildInputs = [ pkgs.nix-unit ]; } '' -grmpf@grmpf-nix ~/p/c/clan-core (test-docs)> +grmpf@grmpf-nix ~/p/c/clan-core (test-docs)> ``` In this case the test is defined in the file `lib/values/flake-module.nix` line 21 @@ -296,9 +296,9 @@ Example: $ nix repl Nix 2.25.5 Type :? for help. -nix-repl> tests = import ./lib/values/test.nix {} +nix-repl> tests = import ./lib/values/test.nix {} -nix-repl> tests +nix-repl> tests { test_attrsOf_attrsOf_submodule = { ... }; test_attrsOf_submodule = { ... }; @@ -309,7 +309,7 @@ nix-repl> tests test_submodule_with_merging = { ... }; } -nix-repl> tests.test_default.expr +nix-repl> tests.test_default.expr { foo = { ... }; } diff --git a/lib/inventory/schemas/render_schema.py b/lib/inventory/schemas/render_schema.py index 8f743fc9f..de544049a 100644 --- a/lib/inventory/schemas/render_schema.py +++ b/lib/inventory/schemas/render_schema.py @@ -9,7 +9,7 @@ import os from pathlib import Path from typing import Any -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError # Get environment variables INVENTORY_SCHEMA_PATH = Path(os.environ["INVENTORY_SCHEMA_PATH"]) diff --git a/pkgs/clan-cli/clan_cli/__init__.py b/pkgs/clan-cli/clan_cli/__init__.py index 5e168a097..e05d26ee6 100644 --- a/pkgs/clan-cli/clan_cli/__init__.py +++ b/pkgs/clan-cli/clan_cli/__init__.py @@ -14,6 +14,7 @@ from .clan import show, update # API endpoints that are not used in the cli. __all__ = ["directory", "disk", "mdns_discovery", "modules", "update"] +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from . import ( @@ -26,7 +27,6 @@ from . import ( ) from .custom_logger import setup_logging from .dirs import get_clan_flake_toplevel_or_env -from .errors import ClanError from .facts import cli as facts from .flash import cli as flash_cli from .hyperlink import help_hyperlink diff --git a/pkgs/clan-cli/clan_cli/async_run.py b/pkgs/clan-cli/clan_cli/async_run.py index e86859d90..d5035fb0f 100644 --- a/pkgs/clan-cli/clan_cli/async_run.py +++ b/pkgs/clan-cli/clan_cli/async_run.py @@ -7,7 +7,7 @@ from collections.abc import Callable from dataclasses import dataclass, field from typing import IO, Any, Generic, ParamSpec, TypeVar -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/backups/create.py b/pkgs/clan-cli/clan_cli/backups/create.py index 48b9ae721..fab7df37d 100644 --- a/pkgs/clan-cli/clan_cli/backups/create.py +++ b/pkgs/clan-cli/clan_cli/backups/create.py @@ -1,12 +1,13 @@ import argparse import logging +from clan_lib.errors import ClanError + from clan_cli.completions import ( add_dynamic_completer, complete_backup_providers_for_machine, complete_machines, ) -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/backups/list.py b/pkgs/clan-cli/clan_cli/backups/list.py index 5d684ab99..9a31cb970 100644 --- a/pkgs/clan-cli/clan_cli/backups/list.py +++ b/pkgs/clan-cli/clan_cli/backups/list.py @@ -2,13 +2,14 @@ import argparse import json from dataclasses import dataclass +from clan_lib.errors import ClanError + from clan_cli.cmd import Log, RunOpts from clan_cli.completions import ( add_dynamic_completer, complete_backup_providers_for_machine, complete_machines, ) -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.ssh.host import Host diff --git a/pkgs/clan-cli/clan_cli/backups/restore.py b/pkgs/clan-cli/clan_cli/backups/restore.py index 32d53f8c2..eabe2c200 100644 --- a/pkgs/clan-cli/clan_cli/backups/restore.py +++ b/pkgs/clan-cli/clan_cli/backups/restore.py @@ -1,12 +1,13 @@ import argparse +from clan_lib.errors import ClanError + from clan_cli.cmd import Log, RunOpts from clan_cli.completions import ( add_dynamic_completer, complete_backup_providers_for_machine, complete_machines, ) -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.ssh.host import Host diff --git a/pkgs/clan-cli/clan_cli/clan/create.py b/pkgs/clan-cli/clan_cli/clan/create.py index 81b242a7b..3e533ecfa 100644 --- a/pkgs/clan-cli/clan_cli/clan/create.py +++ b/pkgs/clan-cli/clan_cli/clan/create.py @@ -5,12 +5,12 @@ from dataclasses import dataclass from pathlib import Path from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Inventory from clan_lib.persist.inventory_store import InventoryStore from clan_cli.cmd import CmdOut, RunOpts, run -from clan_cli.errors import ClanError from clan_cli.nix import nix_command, nix_metadata, nix_shell from clan_cli.templates import ( InputPrio, diff --git a/pkgs/clan-cli/clan_cli/clan/inspect.py b/pkgs/clan-cli/clan_cli/clan/inspect.py index 1e9fab14e..6f3cff1c3 100644 --- a/pkgs/clan-cli/clan_cli/clan/inspect.py +++ b/pkgs/clan-cli/clan_cli/clan/inspect.py @@ -3,11 +3,11 @@ from dataclasses import dataclass from pathlib import Path from typing import Any +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_cli.cmd import run from clan_cli.dirs import machine_gcroot -from clan_cli.errors import ClanError from clan_cli.machines.list import list_machines from clan_cli.machines.machines import Machine from clan_cli.nix import ( diff --git a/pkgs/clan-cli/clan_cli/clan/show.py b/pkgs/clan-cli/clan_cli/clan/show.py index 736218218..5710893da 100644 --- a/pkgs/clan-cli/clan_cli/clan/show.py +++ b/pkgs/clan-cli/clan_cli/clan/show.py @@ -5,11 +5,11 @@ from pathlib import Path from urllib.parse import urlparse from clan_lib.api import API +from clan_lib.errors import ClanCmdError, ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Meta from clan_cli.cmd import run -from clan_cli.errors import ClanCmdError, ClanError from clan_cli.nix import nix_eval log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/cmd.py b/pkgs/clan-cli/clan_cli/cmd.py index 0364bd8e1..45b6b5e89 100644 --- a/pkgs/clan-cli/clan_cli/cmd.py +++ b/pkgs/clan-cli/clan_cli/cmd.py @@ -18,10 +18,11 @@ from enum import Enum from pathlib import Path from typing import IO, Any +from clan_lib.errors import ClanCmdError, ClanError, CmdOut, indent_command + from clan_cli.async_run import get_async_ctx, is_async_cancelled from clan_cli.colors import Color from clan_cli.custom_logger import print_trace -from clan_cli.errors import ClanCmdError, ClanError, CmdOut, indent_command cmdlog = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/dirs.py b/pkgs/clan-cli/clan_cli/dirs.py index 2b4d12b1d..c7d609d50 100644 --- a/pkgs/clan-cli/clan_cli/dirs.py +++ b/pkgs/clan-cli/clan_cli/dirs.py @@ -6,7 +6,7 @@ from enum import Enum from pathlib import Path from typing import TYPE_CHECKING -from .errors import ClanError +from clan_lib.errors import ClanError if TYPE_CHECKING: from clan_lib.flake.flake import Flake diff --git a/pkgs/clan-cli/clan_cli/facts/generate.py b/pkgs/clan-cli/clan_cli/facts/generate.py index ef508b06a..6940b291c 100644 --- a/pkgs/clan-cli/clan_cli/facts/generate.py +++ b/pkgs/clan-cli/clan_cli/facts/generate.py @@ -7,13 +7,14 @@ from collections.abc import Callable from pathlib import Path from tempfile import TemporaryDirectory +from clan_lib.errors import ClanError + from clan_cli.cmd import RunOpts, run from clan_cli.completions import ( add_dynamic_completer, complete_machines, complete_services_for_machine, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_files from clan_cli.machines.list import list_machines from clan_cli.machines.machines import Machine diff --git a/pkgs/clan-cli/clan_cli/facts/public_modules/in_repo.py b/pkgs/clan-cli/clan_cli/facts/public_modules/in_repo.py index 8f4ba71da..8de4faa4c 100644 --- a/pkgs/clan-cli/clan_cli/facts/public_modules/in_repo.py +++ b/pkgs/clan-cli/clan_cli/facts/public_modules/in_repo.py @@ -1,6 +1,7 @@ from pathlib import Path -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.machines.machines import Machine from . import FactStoreBase diff --git a/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py b/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py index 8788a199d..54cac802b 100644 --- a/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py @@ -1,8 +1,9 @@ import logging from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.dirs import vm_state_dir -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from . import FactStoreBase diff --git a/pkgs/clan-cli/clan_cli/flash/automount.py b/pkgs/clan-cli/clan_cli/flash/automount.py index a60f757ed..1d31f2c5e 100644 --- a/pkgs/clan-cli/clan_cli/flash/automount.py +++ b/pkgs/clan-cli/clan_cli/flash/automount.py @@ -4,8 +4,9 @@ from collections.abc import Generator from contextlib import contextmanager from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.cmd import Log, RunOpts, run -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/flash/flash.py b/pkgs/clan-cli/clan_cli/flash/flash.py index f8a9fe7bf..4fef17f69 100644 --- a/pkgs/clan-cli/clan_cli/flash/flash.py +++ b/pkgs/clan-cli/clan_cli/flash/flash.py @@ -7,9 +7,9 @@ from tempfile import TemporaryDirectory from typing import Any from clan_lib.api import API +from clan_lib.errors import ClanError from clan_cli.cmd import Log, RunOpts, cmd_with_root, run -from clan_cli.errors import ClanError from clan_cli.facts.generate import generate_facts from clan_cli.machines.machines import Machine from clan_cli.nix import nix_shell diff --git a/pkgs/clan-cli/clan_cli/flash/list.py b/pkgs/clan-cli/clan_cli/flash/list.py index fb66d696b..835aa2f73 100644 --- a/pkgs/clan-cli/clan_cli/flash/list.py +++ b/pkgs/clan-cli/clan_cli/flash/list.py @@ -4,9 +4,9 @@ import os from pathlib import Path from clan_lib.api import API +from clan_lib.errors import ClanError from clan_cli.cmd import Log, RunOpts, run -from clan_cli.errors import ClanError from clan_cli.nix import nix_build log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/git.py b/pkgs/clan-cli/clan_cli/git.py index 3d599faf8..e87e6f692 100644 --- a/pkgs/clan-cli/clan_cli/git.py +++ b/pkgs/clan-cli/clan_cli/git.py @@ -1,8 +1,9 @@ import os from pathlib import Path +from clan_lib.errors import ClanError + from .cmd import Log, RunOpts, run -from .errors import ClanError from .locked_open import locked_open from .nix import nix_shell diff --git a/pkgs/clan-cli/clan_cli/inventory/__init__.py b/pkgs/clan-cli/clan_cli/inventory/__init__.py index 093ce0bde..cfb4a44e9 100644 --- a/pkgs/clan-cli/clan_cli/inventory/__init__.py +++ b/pkgs/clan-cli/clan_cli/inventory/__init__.py @@ -16,6 +16,7 @@ from pathlib import Path from typing import Any from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Inventory from clan_lib.persist.inventory_store import WriteInfo @@ -26,7 +27,6 @@ from clan_lib.persist.util import ( determine_writeability, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_file diff --git a/pkgs/clan-cli/clan_cli/machines/create.py b/pkgs/clan-cli/clan_cli/machines/create.py index a4b59a548..3ebc21b59 100644 --- a/pkgs/clan-cli/clan_cli/machines/create.py +++ b/pkgs/clan-cli/clan_cli/machines/create.py @@ -5,6 +5,7 @@ from dataclasses import dataclass from pathlib import Path from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import ( Machine as InventoryMachine, @@ -17,7 +18,6 @@ from clan_lib.persist.util import apply_patch from clan_cli.completions import add_dynamic_completer, complete_tags from clan_cli.dirs import get_clan_flake_toplevel_or_env -from clan_cli.errors import ClanError from clan_cli.git import commit_file from clan_cli.machines.list import list_machines from clan_cli.templates import ( diff --git a/pkgs/clan-cli/clan_cli/machines/hardware.py b/pkgs/clan-cli/clan_cli/machines/hardware.py index 0f41bece3..c9eda5ff2 100644 --- a/pkgs/clan-cli/clan_cli/machines/hardware.py +++ b/pkgs/clan-cli/clan_cli/machines/hardware.py @@ -6,11 +6,11 @@ from enum import Enum from pathlib import Path from clan_lib.api import API +from clan_lib.errors import ClanCmdError, ClanError from clan_cli.cmd import RunOpts, run from clan_cli.completions import add_dynamic_completer, complete_machines from clan_cli.dirs import specific_machine_dir -from clan_cli.errors import ClanCmdError, ClanError from clan_cli.git import commit_file from clan_cli.machines.machines import Machine from clan_cli.nix import nix_config, nix_eval diff --git a/pkgs/clan-cli/clan_cli/machines/install.py b/pkgs/clan-cli/clan_cli/machines/install.py index 34d2dbf4a..e558c5907 100644 --- a/pkgs/clan-cli/clan_cli/machines/install.py +++ b/pkgs/clan-cli/clan_cli/machines/install.py @@ -8,6 +8,7 @@ from pathlib import Path from tempfile import TemporaryDirectory from clan_lib.api import API +from clan_lib.errors import ClanError from clan_cli.cmd import Log, RunOpts, run from clan_cli.completions import ( @@ -15,7 +16,6 @@ from clan_cli.completions import ( complete_machines, complete_target_host, ) -from clan_cli.errors import ClanError from clan_cli.facts.generate import generate_facts from clan_cli.machines.hardware import HardwareConfig from clan_cli.machines.machines import Machine diff --git a/pkgs/clan-cli/clan_cli/machines/inventory.py b/pkgs/clan-cli/clan_cli/machines/inventory.py index 1529d71af..e8b15385b 100644 --- a/pkgs/clan-cli/clan_cli/machines/inventory.py +++ b/pkgs/clan-cli/clan_cli/machines/inventory.py @@ -1,11 +1,11 @@ from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.nix_models.inventory import ( Machine as InventoryMachine, ) from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.util import apply_patch -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine diff --git a/pkgs/clan-cli/clan_cli/machines/machines.py b/pkgs/clan-cli/clan_cli/machines/machines.py index 44d3f0701..797b110c1 100644 --- a/pkgs/clan-cli/clan_cli/machines/machines.py +++ b/pkgs/clan-cli/clan_cli/machines/machines.py @@ -9,10 +9,10 @@ from functools import cached_property from pathlib import Path from typing import TYPE_CHECKING, Any +from clan_lib.errors import ClanCmdError, ClanError from clan_lib.flake.flake import Flake from clan_cli.cmd import Log, RunOpts, run -from clan_cli.errors import ClanCmdError, ClanError from clan_cli.facts import public_modules as facts_public_modules from clan_cli.facts import secret_modules as facts_secret_modules from clan_cli.nix import nix_config, nix_eval, nix_test_store diff --git a/pkgs/clan-cli/clan_cli/machines/morph.py b/pkgs/clan-cli/clan_cli/machines/morph.py index 3aa6a02eb..c510523a9 100644 --- a/pkgs/clan-cli/clan_cli/machines/morph.py +++ b/pkgs/clan-cli/clan_cli/machines/morph.py @@ -7,12 +7,12 @@ import re from pathlib import Path from tempfile import TemporaryDirectory +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_cli.cmd import Log, RunOpts, run from clan_cli.dirs import get_clan_flake_toplevel_or_env -from clan_cli.errors import ClanError from clan_cli.machines.create import CreateOptions, create_machine from clan_cli.machines.machines import Machine from clan_cli.nix import nix_build, nix_command diff --git a/pkgs/clan-cli/clan_cli/machines/update.py b/pkgs/clan-cli/clan_cli/machines/update.py index fa8a7f40b..a1daad667 100644 --- a/pkgs/clan-cli/clan_cli/machines/update.py +++ b/pkgs/clan-cli/clan_cli/machines/update.py @@ -8,6 +8,7 @@ import sys from contextlib import ExitStack from clan_lib.api import API +from clan_lib.errors import ClanError from clan_cli.async_run import AsyncContext, AsyncOpts, AsyncRuntime, is_async_cancelled from clan_cli.cmd import Log, MsgColor, RunOpts, run @@ -16,7 +17,6 @@ from clan_cli.completions import ( add_dynamic_completer, complete_machines, ) -from clan_cli.errors import ClanError from clan_cli.facts.generate import generate_facts from clan_cli.facts.upload import upload_secrets from clan_cli.machines.list import list_machines diff --git a/pkgs/clan-cli/clan_cli/nix/__init__.py b/pkgs/clan-cli/clan_cli/nix/__init__.py index 6d19c8a79..7ff247366 100644 --- a/pkgs/clan-cli/clan_cli/nix/__init__.py +++ b/pkgs/clan-cli/clan_cli/nix/__init__.py @@ -7,9 +7,10 @@ from functools import cache from pathlib import Path from typing import Any +from clan_lib.errors import ClanError + from clan_cli.cmd import run from clan_cli.dirs import nixpkgs_flake, nixpkgs_source -from clan_cli.errors import ClanError from clan_cli.locked_open import locked_open log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/qemu/qga.py b/pkgs/clan-cli/clan_cli/qemu/qga.py index 76f3905c6..667d293db 100644 --- a/pkgs/clan-cli/clan_cli/qemu/qga.py +++ b/pkgs/clan-cli/clan_cli/qemu/qga.py @@ -3,7 +3,8 @@ import time import types from dataclasses import dataclass -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.qemu.qmp import QEMUMonitorProtocol diff --git a/pkgs/clan-cli/clan_cli/qemu/qmp.py b/pkgs/clan-cli/clan_cli/qemu/qmp.py index 4d7778814..ef6e0620d 100644 --- a/pkgs/clan-cli/clan_cli/qemu/qmp.py +++ b/pkgs/clan-cli/clan_cli/qemu/qmp.py @@ -16,7 +16,7 @@ import socket import types from typing import Any -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError class QMPError(Exception): diff --git a/pkgs/clan-cli/clan_cli/secrets/folders.py b/pkgs/clan-cli/clan_cli/secrets/folders.py index 5add5bcef..03eca6c16 100644 --- a/pkgs/clan-cli/clan_cli/secrets/folders.py +++ b/pkgs/clan-cli/clan_cli/secrets/folders.py @@ -2,7 +2,7 @@ import shutil from collections.abc import Callable from pathlib import Path -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError def get_sops_folder(flake_dir: Path) -> Path: diff --git a/pkgs/clan-cli/clan_cli/secrets/groups.py b/pkgs/clan-cli/clan_cli/secrets/groups.py index 42d015d0c..b148f84ee 100644 --- a/pkgs/clan-cli/clan_cli/secrets/groups.py +++ b/pkgs/clan-cli/clan_cli/secrets/groups.py @@ -3,6 +3,8 @@ import os from collections.abc import Callable from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.completions import ( add_dynamic_completer, complete_groups, @@ -10,7 +12,6 @@ from clan_cli.completions import ( complete_secrets, complete_users, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_files from clan_cli.machines.types import machine_name_type, validate_hostname diff --git a/pkgs/clan-cli/clan_cli/secrets/import_sops.py b/pkgs/clan-cli/clan_cli/secrets/import_sops.py index 6a9218bc3..5a388403b 100644 --- a/pkgs/clan-cli/clan_cli/secrets/import_sops.py +++ b/pkgs/clan-cli/clan_cli/secrets/import_sops.py @@ -3,6 +3,8 @@ import json import sys from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.cmd import RunOpts, run from clan_cli.completions import ( add_dynamic_completer, @@ -10,7 +12,6 @@ from clan_cli.completions import ( complete_machines, complete_users, ) -from clan_cli.errors import ClanError from clan_cli.nix import nix_shell from .secrets import encrypt_secret, sops_secrets_folder diff --git a/pkgs/clan-cli/clan_cli/secrets/key.py b/pkgs/clan-cli/clan_cli/secrets/key.py index a6a737836..e7e1bc456 100644 --- a/pkgs/clan-cli/clan_cli/secrets/key.py +++ b/pkgs/clan-cli/clan_cli/secrets/key.py @@ -3,7 +3,8 @@ import json import logging import sys -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.git import commit_files from . import sops diff --git a/pkgs/clan-cli/clan_cli/secrets/machines.py b/pkgs/clan-cli/clan_cli/secrets/machines.py index 75bd03078..8b3245f75 100644 --- a/pkgs/clan-cli/clan_cli/secrets/machines.py +++ b/pkgs/clan-cli/clan_cli/secrets/machines.py @@ -1,12 +1,13 @@ import argparse from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.completions import ( add_dynamic_completer, complete_machines, complete_secrets, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_files from clan_cli.machines.types import machine_name_type, validate_hostname diff --git a/pkgs/clan-cli/clan_cli/secrets/secrets.py b/pkgs/clan-cli/clan_cli/secrets/secrets.py index c8e76a52e..40aba78bd 100644 --- a/pkgs/clan-cli/clan_cli/secrets/secrets.py +++ b/pkgs/clan-cli/clan_cli/secrets/secrets.py @@ -9,6 +9,8 @@ from collections.abc import Callable from pathlib import Path from typing import IO +from clan_lib.errors import ClanError + from clan_cli.completions import ( add_dynamic_completer, complete_groups, @@ -16,7 +18,6 @@ from clan_cli.completions import ( complete_secrets, complete_users, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_files from . import sops diff --git a/pkgs/clan-cli/clan_cli/secrets/sops.py b/pkgs/clan-cli/clan_cli/secrets/sops.py index b8b97f79a..898dd877a 100644 --- a/pkgs/clan-cli/clan_cli/secrets/sops.py +++ b/pkgs/clan-cli/clan_cli/secrets/sops.py @@ -14,11 +14,11 @@ from tempfile import NamedTemporaryFile from typing import IO, Any from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_cli.cmd import Log, RunOpts, run from clan_cli.dirs import user_config_dir -from clan_cli.errors import ClanError from clan_cli.nix import nix_shell from .folders import sops_users_folder diff --git a/pkgs/clan-cli/clan_cli/secrets/types.py b/pkgs/clan-cli/clan_cli/secrets/types.py index 1b3d0eb42..8d809a16a 100644 --- a/pkgs/clan-cli/clan_cli/secrets/types.py +++ b/pkgs/clan-cli/clan_cli/secrets/types.py @@ -3,7 +3,7 @@ import re from collections.abc import Callable from pathlib import Path -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError from .sops import get_public_age_keys diff --git a/pkgs/clan-cli/clan_cli/secrets/users.py b/pkgs/clan-cli/clan_cli/secrets/users.py index 6c4c5f8a6..62578a102 100644 --- a/pkgs/clan-cli/clan_cli/secrets/users.py +++ b/pkgs/clan-cli/clan_cli/secrets/users.py @@ -5,8 +5,9 @@ import sys from collections.abc import Iterable from pathlib import Path +from clan_lib.errors import ClanError + from clan_cli.completions import add_dynamic_completer, complete_secrets, complete_users -from clan_cli.errors import ClanError from clan_cli.git import commit_files from . import groups, secrets, sops diff --git a/pkgs/clan-cli/clan_cli/ssh/deploy_info.py b/pkgs/clan-cli/clan_cli/ssh/deploy_info.py index 1f1c28f53..2f9e9356f 100644 --- a/pkgs/clan-cli/clan_cli/ssh/deploy_info.py +++ b/pkgs/clan-cli/clan_cli/ssh/deploy_info.py @@ -6,13 +6,14 @@ from dataclasses import dataclass from pathlib import Path from typing import Any +from clan_lib.errors import ClanError + from clan_cli.async_run import AsyncRuntime from clan_cli.cmd import run from clan_cli.completions import ( add_dynamic_completer, complete_machines, ) -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.nix import nix_shell from clan_cli.ssh.host import Host, is_ssh_reachable diff --git a/pkgs/clan-cli/clan_cli/ssh/host.py b/pkgs/clan-cli/clan_cli/ssh/host.py index ed8574bde..f171bea94 100644 --- a/pkgs/clan-cli/clan_cli/ssh/host.py +++ b/pkgs/clan-cli/clan_cli/ssh/host.py @@ -13,9 +13,10 @@ from shlex import quote from tempfile import TemporaryDirectory from typing import Any +from clan_lib.errors import ClanError + from clan_cli.cmd import CmdOut, RunOpts, run from clan_cli.colors import AnsiColor -from clan_cli.errors import ClanError from clan_cli.nix import nix_shell from clan_cli.ssh.host_key import HostKeyCheck diff --git a/pkgs/clan-cli/clan_cli/ssh/host_key.py b/pkgs/clan-cli/clan_cli/ssh/host_key.py index b71da3449..1caf84e9d 100644 --- a/pkgs/clan-cli/clan_cli/ssh/host_key.py +++ b/pkgs/clan-cli/clan_cli/ssh/host_key.py @@ -2,7 +2,7 @@ from enum import Enum -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError class HostKeyCheck(Enum): diff --git a/pkgs/clan-cli/clan_cli/ssh/parse.py b/pkgs/clan-cli/clan_cli/ssh/parse.py index 02d1bd9c0..b051b0a0a 100644 --- a/pkgs/clan-cli/clan_cli/ssh/parse.py +++ b/pkgs/clan-cli/clan_cli/ssh/parse.py @@ -3,7 +3,8 @@ import urllib.parse from pathlib import Path from typing import Any -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.ssh.host import Host from clan_cli.ssh.host_key import HostKeyCheck diff --git a/pkgs/clan-cli/clan_cli/ssh/results.py b/pkgs/clan-cli/clan_cli/ssh/results.py index 6f8c98663..0c3621c0c 100644 --- a/pkgs/clan-cli/clan_cli/ssh/results.py +++ b/pkgs/clan-cli/clan_cli/ssh/results.py @@ -1,7 +1,8 @@ from dataclasses import dataclass from typing import Generic -from clan_cli.errors import CmdOut +from clan_lib.errors import CmdOut + from clan_cli.ssh import T from clan_cli.ssh.host import Host diff --git a/pkgs/clan-cli/clan_cli/ssh/tor.py b/pkgs/clan-cli/clan_cli/ssh/tor.py index 1a7554164..13cab4dfa 100755 --- a/pkgs/clan-cli/clan_cli/ssh/tor.py +++ b/pkgs/clan-cli/clan_cli/ssh/tor.py @@ -7,9 +7,10 @@ import struct import time from dataclasses import dataclass +from clan_lib.errors import TorConnectionError, TorSocksError + from clan_cli.async_run import AsyncRuntime from clan_cli.cmd import Log, RunOpts, run -from clan_cli.errors import TorConnectionError, TorSocksError from clan_cli.nix import nix_shell log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/ssh/upload.py b/pkgs/clan-cli/clan_cli/ssh/upload.py index e1d58f28f..6a108c64a 100644 --- a/pkgs/clan-cli/clan_cli/ssh/upload.py +++ b/pkgs/clan-cli/clan_cli/ssh/upload.py @@ -3,9 +3,10 @@ from pathlib import Path from shlex import quote from tempfile import TemporaryDirectory +from clan_lib.errors import ClanError + from clan_cli.cmd import Log, RunOpts from clan_cli.cmd import run as run_local -from clan_cli.errors import ClanError from clan_cli.ssh.host import Host diff --git a/pkgs/clan-cli/clan_cli/state/list.py b/pkgs/clan-cli/clan_cli/state/list.py index 4a6835d1b..f2f278a69 100644 --- a/pkgs/clan-cli/clan_cli/state/list.py +++ b/pkgs/clan-cli/clan_cli/state/list.py @@ -3,6 +3,8 @@ import json import logging from pathlib import Path +from clan_lib.errors import ClanCmdError, ClanError + from clan_cli.cmd import RunOpts, run from clan_cli.completions import ( add_dynamic_completer, @@ -10,7 +12,6 @@ from clan_cli.completions import ( complete_state_services_for_machine, ) from clan_cli.dirs import get_clan_flake_toplevel_or_env -from clan_cli.errors import ClanCmdError, ClanError from clan_cli.machines.machines import Machine from clan_cli.nix import nix_eval diff --git a/pkgs/clan-cli/clan_cli/templates.py b/pkgs/clan-cli/clan_cli/templates.py index c85d941f6..9ac18b164 100644 --- a/pkgs/clan-cli/clan_cli/templates.py +++ b/pkgs/clan-cli/clan_cli/templates.py @@ -3,11 +3,11 @@ from dataclasses import dataclass, field from pathlib import Path from typing import Any, Literal, NewType, TypedDict, cast +from clan_lib.errors import ClanCmdError, ClanError from clan_lib.flake.flake import Flake from clan_cli.cmd import run from clan_cli.dirs import clan_templates -from clan_cli.errors import ClanCmdError, ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/tests/test_api_dataclass_compat.py b/pkgs/clan-cli/clan_cli/tests/test_api_dataclass_compat.py index 2d892c2aa..9e6f46d36 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_api_dataclass_compat.py +++ b/pkgs/clan-cli/clan_cli/tests/test_api_dataclass_compat.py @@ -5,9 +5,9 @@ import sys from dataclasses import is_dataclass from pathlib import Path -from clan_cli.errors import ClanError from clan_lib.api import API from clan_lib.api.util import JSchemaTypeError, type_to_dict +from clan_lib.errors import ClanError def should_skip(file_path: Path, excludes: list[Path]) -> bool: diff --git a/pkgs/clan-cli/clan_cli/tests/test_deserializers.py b/pkgs/clan-cli/clan_cli/tests/test_deserializers.py index 695454884..0bc64d0fd 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_deserializers.py +++ b/pkgs/clan-cli/clan_cli/tests/test_deserializers.py @@ -3,11 +3,11 @@ from pathlib import Path from typing import Any, Literal import pytest -from clan_cli.errors import ClanError from clan_cli.machines import machines # Functions to test from clan_lib.api import dataclass_to_dict, from_dict +from clan_lib.errors import ClanError def test_simple() -> None: diff --git a/pkgs/clan-cli/clan_cli/tests/test_git.py b/pkgs/clan-cli/clan_cli/tests/test_git.py index 1990cc0b0..ed7ccaa61 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_git.py +++ b/pkgs/clan-cli/clan_cli/tests/test_git.py @@ -4,7 +4,7 @@ from pathlib import Path import pytest from clan_cli import git -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError def test_commit_file(git_repo: Path) -> None: diff --git a/pkgs/clan-cli/clan_cli/tests/test_secrets_cli.py b/pkgs/clan-cli/clan_cli/tests/test_secrets_cli.py index 1e2c79d5d..a190fec2b 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_secrets_cli.py +++ b/pkgs/clan-cli/clan_cli/tests/test_secrets_cli.py @@ -9,12 +9,12 @@ from contextlib import contextmanager from typing import TYPE_CHECKING import pytest -from clan_cli.errors import ClanError from clan_cli.tests.age_keys import assert_secrets_file_recipients from clan_cli.tests.fixtures_flakes import FlakeForTest from clan_cli.tests.gpg_keys import GpgKey from clan_cli.tests.helpers import cli from clan_cli.tests.stdout import CaptureOutput +from clan_lib.errors import ClanError if TYPE_CHECKING: from .age_keys import KeyPair diff --git a/pkgs/clan-cli/clan_cli/tests/test_ssh_remote.py b/pkgs/clan-cli/clan_cli/tests/test_ssh_remote.py index 7dfdd67c7..1846371c9 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_ssh_remote.py +++ b/pkgs/clan-cli/clan_cli/tests/test_ssh_remote.py @@ -6,10 +6,10 @@ from typing import Any, NamedTuple import pytest from clan_cli.async_run import AsyncRuntime from clan_cli.cmd import ClanCmdTimeoutError, Log, RunOpts -from clan_cli.errors import ClanError, CmdOut from clan_cli.ssh.host import Host from clan_cli.ssh.host_key import HostKeyCheck from clan_cli.ssh.parse import parse_deployment_address +from clan_lib.errors import ClanError, CmdOut if sys.platform == "darwin": pytest.skip("preload doesn't work on darwin", allow_module_level=True) diff --git a/pkgs/clan-cli/clan_cli/tests/test_vars.py b/pkgs/clan-cli/clan_cli/tests/test_vars.py index b28887c6d..aa28fe2a8 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_vars.py +++ b/pkgs/clan-cli/clan_cli/tests/test_vars.py @@ -4,7 +4,6 @@ import shutil from pathlib import Path import pytest -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.nix import nix_eval, run from clan_cli.tests.age_keys import SopsSetup @@ -23,6 +22,7 @@ from clan_cli.vars.list import stringify_all_vars from clan_cli.vars.public_modules import in_repo from clan_cli.vars.secret_modules import password_store, sops from clan_cli.vars.set import set_var +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake diff --git a/pkgs/clan-cli/clan_cli/vars/_types.py b/pkgs/clan-cli/clan_cli/vars/_types.py index 798af0ac9..279373bdf 100644 --- a/pkgs/clan-cli/clan_cli/vars/_types.py +++ b/pkgs/clan-cli/clan_cli/vars/_types.py @@ -5,9 +5,9 @@ from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING -from clan_cli.errors import ClanError from clan_cli.machines import machines from clan_cli.ssh.host import Host +from clan_lib.errors import ClanError if TYPE_CHECKING: from .generate import Generator, Var diff --git a/pkgs/clan-cli/clan_cli/vars/check.py b/pkgs/clan-cli/clan_cli/vars/check.py index 9ffeb319d..0d4e4762e 100644 --- a/pkgs/clan-cli/clan_cli/vars/check.py +++ b/pkgs/clan-cli/clan_cli/vars/check.py @@ -2,8 +2,8 @@ import argparse import logging from clan_cli.completions import add_dynamic_completer, complete_machines -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/fix.py b/pkgs/clan-cli/clan_cli/vars/fix.py index 6e107553a..c5a434d51 100644 --- a/pkgs/clan-cli/clan_cli/vars/fix.py +++ b/pkgs/clan-cli/clan_cli/vars/fix.py @@ -2,8 +2,8 @@ import argparse import logging from clan_cli.completions import add_dynamic_completer, complete_machines -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/generate.py b/pkgs/clan-cli/clan_cli/vars/generate.py index 75882b073..5890ea4ff 100644 --- a/pkgs/clan-cli/clan_cli/vars/generate.py +++ b/pkgs/clan-cli/clan_cli/vars/generate.py @@ -15,13 +15,13 @@ from clan_cli.completions import ( complete_machines, complete_services_for_machine, ) -from clan_cli.errors import ClanError from clan_cli.git import commit_files from clan_cli.machines.list import list_machines from clan_cli.nix import nix_config, nix_shell, nix_test_store from clan_cli.vars._types import StoreBase from clan_cli.vars.migration import check_can_migrate, migrate_files from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from .check import check_vars diff --git a/pkgs/clan-cli/clan_cli/vars/get.py b/pkgs/clan-cli/clan_cli/vars/get.py index 960752685..47cc839f9 100644 --- a/pkgs/clan-cli/clan_cli/vars/get.py +++ b/pkgs/clan-cli/clan_cli/vars/get.py @@ -3,8 +3,8 @@ import logging import sys from clan_cli.completions import add_dynamic_completer, complete_machines -from clan_cli.errors import ClanError from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from .generate import Var diff --git a/pkgs/clan-cli/clan_cli/vars/graph.py b/pkgs/clan-cli/clan_cli/vars/graph.py index f333c33a0..8495d3e44 100644 --- a/pkgs/clan-cli/clan_cli/vars/graph.py +++ b/pkgs/clan-cli/clan_cli/vars/graph.py @@ -4,7 +4,7 @@ from collections.abc import Iterable from graphlib import TopologicalSorter from typing import TYPE_CHECKING -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError if TYPE_CHECKING: from .generate import Generator diff --git a/pkgs/clan-cli/clan_cli/vars/keygen.py b/pkgs/clan-cli/clan_cli/vars/keygen.py index e375a7ad7..db0ceb97e 100644 --- a/pkgs/clan-cli/clan_cli/vars/keygen.py +++ b/pkgs/clan-cli/clan_cli/vars/keygen.py @@ -3,11 +3,11 @@ import logging import os from pathlib import Path -from clan_cli.errors import ClanError from clan_cli.secrets.key import generate_key from clan_cli.secrets.sops import maybe_get_admin_public_key from clan_cli.secrets.users import add_user from clan_lib.api import API +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/list.py b/pkgs/clan-cli/clan_cli/vars/list.py index 655f25b3e..15fb00c3f 100644 --- a/pkgs/clan-cli/clan_cli/vars/list.py +++ b/pkgs/clan-cli/clan_cli/vars/list.py @@ -2,9 +2,9 @@ import argparse import logging from clan_cli.completions import add_dynamic_completer, complete_machines -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_lib.api import API +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from ._types import GeneratorUpdate diff --git a/pkgs/clan-cli/clan_cli/vars/migration.py b/pkgs/clan-cli/clan_cli/vars/migration.py index fa22e55f5..faa8dc5e1 100644 --- a/pkgs/clan-cli/clan_cli/vars/migration.py +++ b/pkgs/clan-cli/clan_cli/vars/migration.py @@ -2,8 +2,8 @@ import logging from pathlib import Path from typing import TYPE_CHECKING -from clan_cli.errors import ClanError from clan_cli.git import commit_files +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/prompt.py b/pkgs/clan-cli/clan_cli/vars/prompt.py index 5d4f1bad5..ba48c8566 100644 --- a/pkgs/clan-cli/clan_cli/vars/prompt.py +++ b/pkgs/clan-cli/clan_cli/vars/prompt.py @@ -7,7 +7,7 @@ from dataclasses import dataclass from getpass import getpass from typing import Any -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/public_modules/in_repo.py b/pkgs/clan-cli/clan_cli/vars/public_modules/in_repo.py index 65ce06e2d..fe8319d63 100644 --- a/pkgs/clan-cli/clan_cli/vars/public_modules/in_repo.py +++ b/pkgs/clan-cli/clan_cli/vars/public_modules/in_repo.py @@ -2,11 +2,11 @@ import shutil from collections.abc import Iterable from pathlib import Path -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.ssh.host import Host from clan_cli.vars._types import StoreBase from clan_cli.vars.generate import Generator, Var +from clan_lib.errors import ClanError class FactStore(StoreBase): diff --git a/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py b/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py index 01eeecd73..0884aba7f 100644 --- a/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py @@ -4,11 +4,11 @@ from collections.abc import Iterable from pathlib import Path from clan_cli.dirs import vm_state_dir -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.ssh.host import Host from clan_cli.vars._types import StoreBase from clan_cli.vars.generate import Generator, Var +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_cli/vars/secret_modules/sops.py b/pkgs/clan-cli/clan_cli/vars/secret_modules/sops.py index 067f38757..1b42124be 100644 --- a/pkgs/clan-cli/clan_cli/vars/secret_modules/sops.py +++ b/pkgs/clan-cli/clan_cli/vars/secret_modules/sops.py @@ -5,7 +5,6 @@ from pathlib import Path from tempfile import TemporaryDirectory from typing import override -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_cli.secrets import sops from clan_cli.secrets.folders import ( @@ -28,6 +27,7 @@ from clan_cli.ssh.upload import upload from clan_cli.vars._types import StoreBase from clan_cli.vars.generate import Generator from clan_cli.vars.var import Var +from clan_lib.errors import ClanError @dataclass diff --git a/pkgs/clan-cli/clan_cli/vms/qemu.py b/pkgs/clan-cli/clan_cli/vms/qemu.py index d42b48ab9..3113d644e 100644 --- a/pkgs/clan-cli/clan_cli/vms/qemu.py +++ b/pkgs/clan-cli/clan_cli/vms/qemu.py @@ -4,7 +4,8 @@ from contextlib import contextmanager from dataclasses import dataclass from pathlib import Path -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.qemu.qmp import QEMUMonitorProtocol from .inspect import VmConfig @@ -74,7 +75,7 @@ def graphics_options(vm: VmConfig) -> GraphicOptions: "-device", "usb-ccid", "-chardev", "spicevmc,id=ccid,name=smartcard", ], None) - # fmt: on + # fmt: on @dataclass @@ -140,19 +141,31 @@ def qemu_command( "-device", "virtserialport,chardev=qga0,name=org.qemu.guest_agent.0", ] # fmt: on if interactive: - command.extend([ - "-serial", "null", - "-chardev", "stdio,mux=on,id=char0,signal=off", - "-mon", "chardev=char0,mode=readline", - "-device", "virtconsole,chardev=char0,nr=0", - ]) + command.extend( + [ + "-serial", + "null", + "-chardev", + "stdio,mux=on,id=char0,signal=off", + "-mon", + "chardev=char0,mode=readline", + "-device", + "virtconsole,chardev=char0,nr=0", + ] + ) else: - command.extend([ - "-serial", "null", - "-chardev", "file,id=char0,path=/dev/stdout", - "-device", "virtconsole,chardev=char0,nr=0", - "-monitor", "none", - ]) + command.extend( + [ + "-serial", + "null", + "-chardev", + "file,id=char0,path=/dev/stdout", + "-device", + "virtconsole,chardev=char0,nr=0", + "-monitor", + "none", + ] + ) vsock_cid = None if vm.graphics: diff --git a/pkgs/clan-cli/clan_cli/vms/run.py b/pkgs/clan-cli/clan_cli/vms/run.py index a65886737..062e81e45 100644 --- a/pkgs/clan-cli/clan_cli/vms/run.py +++ b/pkgs/clan-cli/clan_cli/vms/run.py @@ -12,10 +12,11 @@ from dataclasses import dataclass from pathlib import Path from tempfile import TemporaryDirectory +from clan_lib.errors import ClanCmdError, ClanError + from clan_cli.cmd import CmdOut, Log, RunOpts, handle_io, run from clan_cli.completions import add_dynamic_completer, complete_machines from clan_cli.dirs import module_root, user_cache_dir, vm_state_dir -from clan_cli.errors import ClanCmdError, ClanError from clan_cli.facts.generate import generate_facts from clan_cli.machines.machines import Machine from clan_cli.nix import nix_shell diff --git a/pkgs/clan-cli/clan_cli/vms/virtiofsd.py b/pkgs/clan-cli/clan_cli/vms/virtiofsd.py index 158a9954d..7d60d2352 100644 --- a/pkgs/clan-cli/clan_cli/vms/virtiofsd.py +++ b/pkgs/clan-cli/clan_cli/vms/virtiofsd.py @@ -5,7 +5,8 @@ import time from collections.abc import Iterator from pathlib import Path -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.nix import nix_shell diff --git a/pkgs/clan-cli/clan_cli/vms/waypipe.py b/pkgs/clan-cli/clan_cli/vms/waypipe.py index 3c0186ba5..adea37033 100644 --- a/pkgs/clan-cli/clan_cli/vms/waypipe.py +++ b/pkgs/clan-cli/clan_cli/vms/waypipe.py @@ -5,7 +5,8 @@ import subprocess import time from collections.abc import Iterator -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError + from clan_cli.nix import nix_shell VMADDR_CID_HYPERVISOR = 2 diff --git a/pkgs/clan-cli/clan_lib/api/__init__.py b/pkgs/clan-cli/clan_lib/api/__init__.py index 11ea0417b..ed67fe6f2 100644 --- a/pkgs/clan-cli/clan_lib/api/__init__.py +++ b/pkgs/clan-cli/clan_lib/api/__init__.py @@ -18,7 +18,7 @@ from .serde import dataclass_to_dict, from_dict, sanitize_string __all__ = ["dataclass_to_dict", "from_dict", "sanitize_string"] -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError T = TypeVar("T") diff --git a/pkgs/clan-cli/clan_lib/api/directory.py b/pkgs/clan-cli/clan_lib/api/directory.py index 7a2cf0e80..e24b15618 100644 --- a/pkgs/clan-cli/clan_lib/api/directory.py +++ b/pkgs/clan-cli/clan_lib/api/directory.py @@ -5,9 +5,9 @@ from pathlib import Path from typing import Any, Literal from clan_cli.cmd import RunOpts, run -from clan_cli.errors import ClanError from clan_cli.nix import nix_shell +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from . import API diff --git a/pkgs/clan-cli/clan_lib/api/disk.py b/pkgs/clan-cli/clan_lib/api/disk.py index e9700d36c..6e94ad9ec 100644 --- a/pkgs/clan-cli/clan_lib/api/disk.py +++ b/pkgs/clan-cli/clan_lib/api/disk.py @@ -6,13 +6,13 @@ from typing import Any, TypedDict from uuid import uuid4 from clan_cli.dirs import TemplateType, clan_templates -from clan_cli.errors import ClanError from clan_cli.git import commit_file from clan_cli.machines.hardware import HardwareConfig, show_machine_hardware_config from clan_cli.machines.machines import Machine from clan_lib.api import API from clan_lib.api.modules import Frontmatter, extract_frontmatter +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_lib/api/modules.py b/pkgs/clan-cli/clan_lib/api/modules.py index d38024efd..f2bdad518 100644 --- a/pkgs/clan-cli/clan_lib/api/modules.py +++ b/pkgs/clan-cli/clan_lib/api/modules.py @@ -4,8 +4,7 @@ from dataclasses import dataclass, field from pathlib import Path from typing import Any, TypedDict -from clan_cli.errors import ClanError - +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from . import API diff --git a/pkgs/clan-cli/clan_lib/api/network.py b/pkgs/clan-cli/clan_lib/api/network.py index c75111703..63163183a 100644 --- a/pkgs/clan-cli/clan_lib/api/network.py +++ b/pkgs/clan-cli/clan_lib/api/network.py @@ -4,10 +4,10 @@ from dataclasses import dataclass from typing import Literal from clan_cli.cmd import RunOpts -from clan_cli.errors import ClanError from clan_cli.machines.machines import Machine from clan_lib.api import API +from clan_lib.errors import ClanError log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_lib/api/serde.py b/pkgs/clan-cli/clan_lib/api/serde.py index 6b1f60281..59a611cbe 100644 --- a/pkgs/clan-cli/clan_lib/api/serde.py +++ b/pkgs/clan-cli/clan_lib/api/serde.py @@ -26,7 +26,7 @@ Dependencies: - pydantic: A library for data validation and settings management. - pydantic_core: Core functionality for Pydantic. -Note: This module assumes the presence of other modules and classes such as `ClanError` and `ErrorDetails` from the `clan_cli.errors` module. +Note: This module assumes the presence of other modules and classes such as `ClanError` and `ErrorDetails` from the `clan_lib.errors` module. """ import dataclasses @@ -45,7 +45,7 @@ from typing import ( is_typeddict, ) -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError def sanitize_string(s: str) -> str: diff --git a/pkgs/clan-cli/clan_cli/errors.py b/pkgs/clan-cli/clan_lib/errors/__init__.py similarity index 100% rename from pkgs/clan-cli/clan_cli/errors.py rename to pkgs/clan-cli/clan_lib/errors/__init__.py diff --git a/pkgs/clan-cli/clan_lib/flake/flake.py b/pkgs/clan-cli/clan_lib/flake/flake.py index 44f7e902c..8158399a1 100644 --- a/pkgs/clan-cli/clan_lib/flake/flake.py +++ b/pkgs/clan-cli/clan_lib/flake/flake.py @@ -9,7 +9,6 @@ from typing import Any from clan_cli.cmd import Log, RunOpts, run from clan_cli.dirs import nixpkgs_source, select_source, user_cache_dir -from clan_cli.errors import ClanError from clan_cli.nix import ( nix_build, nix_command, @@ -19,6 +18,8 @@ from clan_cli.nix import ( nix_test_store, ) +from clan_lib.errors import ClanError + log = logging.getLogger(__name__) diff --git a/pkgs/clan-cli/clan_lib/persist/inventory_store.py b/pkgs/clan-cli/clan_lib/persist/inventory_store.py index f7cded620..01763913f 100644 --- a/pkgs/clan-cli/clan_lib/persist/inventory_store.py +++ b/pkgs/clan-cli/clan_lib/persist/inventory_store.py @@ -1,9 +1,9 @@ import json from dataclasses import dataclass -from clan_cli.errors import ClanError from clan_cli.git import commit_file +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Inventory diff --git a/pkgs/clan-cli/clan_lib/persist/util.py b/pkgs/clan-cli/clan_lib/persist/util.py index 92bcd2c7f..20a82cf31 100644 --- a/pkgs/clan-cli/clan_lib/persist/util.py +++ b/pkgs/clan-cli/clan_lib/persist/util.py @@ -6,7 +6,7 @@ flattening, unmerging lists, finding duplicates, and calculating patches. from collections import Counter from typing import Any -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError def flatten_data(data: dict, parent_key: str = "", separator: str = ".") -> dict: diff --git a/pkgs/clan-cli/clan_lib/persist/util_test.py b/pkgs/clan-cli/clan_lib/persist/util_test.py index 4693b83ac..8c987b0de 100644 --- a/pkgs/clan-cli/clan_lib/persist/util_test.py +++ b/pkgs/clan-cli/clan_lib/persist/util_test.py @@ -2,8 +2,8 @@ from typing import Any import pytest -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError from clan_lib.persist.util import ( apply_patch, calc_patches, diff --git a/pkgs/clan-cli/clan_lib/tests/test_create.py b/pkgs/clan-cli/clan_lib/tests/test_create.py index 0b6497d35..c05c5b3b8 100644 --- a/pkgs/clan-cli/clan_lib/tests/test_create.py +++ b/pkgs/clan-cli/clan_lib/tests/test_create.py @@ -10,7 +10,6 @@ import clan_cli.clan.create import pytest from clan_cli.cmd import RunOpts, run from clan_cli.dirs import specific_machine_dir -from clan_cli.errors import ClanError from clan_cli.inventory import patch_inventory_with from clan_cli.machines.create import CreateOptions as ClanCreateOptions from clan_cli.machines.create import create_machine @@ -25,6 +24,7 @@ from clan_cli.vars.generate import generate_vars_for_machine, get_generators_clo from clan_lib.api.disk import hw_main_disk_options, set_machine_disk_schema from clan_lib.api.network import check_machine_online +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.inventory import MachineDeploy diff --git a/pkgs/clan-vm-manager/clan_vm_manager/components/gkvstore.py b/pkgs/clan-vm-manager/clan_vm_manager/components/gkvstore.py index 2d47820d6..9d4d0abab 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/components/gkvstore.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/components/gkvstore.py @@ -5,7 +5,7 @@ from typing import Any, Generic, TypeVar import gi gi.require_version("Gio", "2.0") -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError from gi.repository import Gio, GObject log = logging.getLogger(__name__) diff --git a/pkgs/clan-vm-manager/clan_vm_manager/history.py b/pkgs/clan-vm-manager/clan_vm_manager/history.py index 6efde2dbf..a39b93e30 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/history.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/history.py @@ -7,9 +7,9 @@ from typing import Any from clan_cli.clan.inspect import FlakeConfig, inspect_flake from clan_cli.dirs import user_history_file -from clan_cli.errors import ClanError from clan_cli.locked_open import read_history_file, write_history_file from clan_cli.machines.list import list_machines +from clan_lib.errors import ClanError from clan_lib.flake.flake import Flake from clan_vm_manager.clan_uri import ClanURI diff --git a/pkgs/clan-vm-manager/clan_vm_manager/views/list.py b/pkgs/clan-vm-manager/clan_vm_manager/views/list.py index 11c648553..b0ff077c5 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/views/list.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/views/list.py @@ -5,7 +5,7 @@ from functools import partial from typing import Any, TypeVar import gi -from clan_cli.errors import ClanError +from clan_lib.errors import ClanError from clan_vm_manager.clan_uri import ClanURI from clan_vm_manager.components.gkvstore import GKVStore