collin/initial-setup #1

Merged
Qubasa merged 18 commits from collin/initial-setup into main 2026-01-28 11:04:48 +00:00
Owner

Initial setup of the repository enabling developers to use the clan ai subcommand.

Initial setup of the repository enabling developers to use the `clan ai` subcommand.
collinarnett added 13 commits 2026-01-14 13:08:12 +00:00
Setup overrideAttrs to inject local llm/ai modules into clan-cli
package. Create two variants:
- clanCLIPlusLLM: Full package with local modules
- clanCLIMinusLLM: Base package for development

Add initial checks and remove unnecessary test configuration files.
Switch to development branch with container test driver support and new
flakeModules needed for testing infrastructure.
Add sitecustomize.py to inject local clan_lib.llm and clan_cli.ai
modules from pkgs/clan-llm directory. Update package overrides to
handle both modules consistently.

This allows developing AI/LLM features locally while using the rest of
clan-cli from the Nix store.
Create wrapper script for clan command that preserves PYTHONPATH,
ensuring sitecustomize.py is loaded to shim local modules. Use
writeShellScriptBin and run 'python -m clan_cli' instead of wrapped
binary.
Import clan-core's clan and containerTest modules to provide
clanInternals structure for 'clan ai'. Add minimal inventory with
test-machine so AI can discover available services.

Use official flakeModule pattern matching clan-core's testing approach.
Document repository structure, development setup, and workflow including
Nix installation, direnv, Gitea configuration, and git hooks.
Add treefmt-nix configuration with Python (ruff, mypy), Nix (nixfmt,
deadnix), and JSON/YAML (prettier) formatters. Configure mypy to check
pkgs/clan-llm with proper clan_lib dependencies.
Replace os.path operations with pathlib.Path to comply with ruff rules
PTH118, PTH109, PTH110. Also fix import formatting in test files.
Define test-machine using clan.machines pattern with minimal NixOS
configuration for local clan ai testing. Follows clan-core's structure
with separate nixosModule for the machine definition.
- Add treefmt-nix input following clan-core
- Import formatter.nix and machines/flake-module.nix
- Fix formatting in flake.nix and checks/llm/default.nix
- Update flake.lock with treefmt-nix
Add workflow to automatically update clan-core dependency every 6 hours
and create PRs. Matches clan-core's update-flake-inputs workflow.

Buildbot at buildbot.clan.lol handles PR checks automatically.
fix: use normal nix-direnv flake function
buildbot/nix-eval Build done.
buildbot/nix-build gitea:clan/clan-llm#checks.x86_64-linux.llm Build done.
buildbot/nix-build Build done.
32db38d942
collinarnett added 1 commit 2026-01-17 13:52:19 +00:00
feat: add GenerationOptions for deterministic LLM behavior
buildbot/nix-eval Build done.
buildbot/nix-build gitea:clan/clan-llm#checks.x86_64-linux.treefmt Build done.
buildbot/nix-build gitea:clan/clan-llm#checks.aarch64-darwin.treefmt Build done.
buildbot/nix-build Build done.
baa12f8e81
Add provider-agnostic GenerationOptions type to control LLM generation
parameters across OpenAI, Claude, and Ollama providers. This fixes flaky
LLM tests by enabling deterministic behavior.

Changes:
- Add GenerationOptions TypedDict with temperature, max_tokens, seed,
  top_p, top_k, repeat_penalty, and num_ctx parameters
- Add conversion functions to map generic options to provider-specific
  formats (_convert_options_to_openai, _convert_options_to_claude,
  _convert_options_to_ollama)
- Update all API functions (call_openai_api, call_claude_api,
  call_ollama_api) to accept generation_options parameter
- Set temperature=0.0 by default in all LLM calls for deterministic,
  reproducible outputs
- Remove deprecated max_tokens parameter from call_ollama_api

This eliminates test flakiness caused by non-deterministic LLM responses
in CI environments.
collinarnett force-pushed collin/initial-setup from baa12f8e81 to f8ce750a95 2026-01-17 15:08:31 +00:00 Compare
collinarnett force-pushed collin/initial-setup from f8ce750a95 to 2b7bea46d7 2026-01-17 15:22:14 +00:00 Compare
collinarnett added 1 commit 2026-01-17 18:48:45 +00:00
feat: add MCP server integration for Claude Code
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
d85d237a3e
Add mcp-servers-nix integration to provide context7 documentation tool
in the development shell for Claude Code.

Changes:
- Add mcp-servers-nix flake input
- Import mcp-servers-nix.flakeModule
- Configure context7 and claude-code MCP server flavors
- Add mcp-servers.devShell to devShells.default inputsFrom

This enables Claude Code to access up-to-date library documentation
via the context7 MCP server during development.
collinarnett added 1 commit 2026-01-17 18:52:04 +00:00
feat: add ANTHROPIC_API_KEY environment variable check
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
80ebdcd0c3
Add warning in devShell when ANTHROPIC_API_KEY is not set to guide
users on using Ollama as an alternative for local LLM inference.

Changes:
- Add shellHook check for ANTHROPIC_API_KEY environment variable
- Display warning message suggesting --model=ollama flag when API key is missing
collinarnett force-pushed collin/initial-setup from 80ebdcd0c3 to 2129ef47a3 2026-01-17 19:01:54 +00:00 Compare
collinarnett added 1 commit 2026-01-24 13:06:22 +00:00
clan_lib: add local pytest fixtures for clan_flake tests
buildbot/nix-eval Build done.
buildbot/nix-build gitea:clan/clan-llm#checks.aarch64-darwin.treefmt Build done.
buildbot/nix-build Build done.
buildbot/nix-build gitea:clan/clan-llm#checks.x86_64-linux.treefmt Build done.
c727f77445
Add local test fixtures that were previously imported from
clan-core.  This is necessary because clan-core's fixtures use
Path(__file__).parent to locate template files, which doesn't work
when clan-core is installed as a package from the nix store.

The local fixtures include:
- clan_flake: Creates test flakes with inventory configuration
- offline_template: Session-scoped template with pre-generated
flake.lock
- Supporting fixtures for git credential and GPG signing configuration

Also adds CLAN_CORE_PATH environment variable to the devShell, which
points to the clan-core flake input for tests that need to
substitute flake inputs.
collinarnett force-pushed collin/initial-setup from c727f77445 to ffda880708 2026-01-25 20:09:49 +00:00 Compare
collinarnett added 1 commit 2026-01-25 22:34:48 +00:00
docs: add container test requirements and testing guide
buildbot/nix-eval Build done.
buildbot/nix-build Build done.
802998941d
Owner
╭─lhebendanz@wintux ~/Projects/clan-llm/pkgs/clan-llm  ‹collin/initial-setup*›
╰─➤  pytest
Traceback (most recent call last):
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 860, in import_plugin
    __import__(importspec)
    ~~~~~~~~~~^^^^^^^^^^^^
ModuleNotFoundError: No module named 'clan_lib.fixtures.flakes.utils'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/nix/store/djaak05b70dhwhcck6sd35qzy7iykn34-python3.13-pytest-8.4.1/bin/.pytest-wrapped", line 9, in <module>
    sys.exit(console_main())
             ~~~~~~~~~~~~^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 156, in main
    config = _prepareconfig(args, plugins)
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 342, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
        pluginmanager=pluginmanager, args=args
    )
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 167, in _multicall
    raise exception
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/helpconfig.py", line 112, in pytest_cmdline_parse
    config = yield
             ^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1146, in pytest_cmdline_parse
    self.parse(args)
    ~~~~~~~~~~^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1527, in parse
    self._preparse(args, addopts=addopts)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1431, in _preparse
    self.hook.pytest_load_initial_conftests(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        early_config=self, args=args, parser=self._parser
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 167, in _multicall
    raise exception
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/warnings.py", line 129, in pytest_load_initial_conftests
    return (yield)
            ^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/capture.py", line 173, in pytest_load_initial_conftests
    yield
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1228, in pytest_load_initial_conftests
    self.pluginmanager._set_initial_conftests(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        args=args,
        ^^^^^^^^^^
    ...<8 lines>...
        ),
        ^^
    )
    ^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 583, in _set_initial_conftests
    self._try_load_conftest(
    ~~~~~~~~~~~~~~~~~~~~~~~^
        anchor,
        ^^^^^^^
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 621, in _try_load_conftest
    self._loadconftestmodules(
    ~~~~~~~~~~~~~~~~~~~~~~~~~^
        anchor,
        ^^^^^^^
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 661, in _loadconftestmodules
    mod = self._importconftest(
        conftestpath,
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
    )
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 737, in _importconftest
    self.consider_conftest(mod, registration_name=conftestpath_plugin_name)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 818, in consider_conftest
    self.register(conftestmodule, name=registration_name)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 514, in register
    self.consider_module(plugin)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 826, in consider_module
    self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 833, in _import_plugin_specs
    self.import_plugin(import_spec)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 862, in import_plugin
    raise ImportError(
        f'Error importing plugin "{modname}": {e.args[0]}'
    ).with_traceback(e.__traceback__) from e
  File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 860, in import_plugin
    __import__(importspec)
    ~~~~~~~~~~^^^^^^^^^^^^
ImportError: Error importing plugin "clan_lib.fixtures.flakes.utils": No module named 'clan_lib.fixtures.flakes.utils'


``` ╭─lhebendanz@wintux ~/Projects/clan-llm/pkgs/clan-llm ‹collin/initial-setup*› ╰─➤ pytest Traceback (most recent call last): File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 860, in import_plugin __import__(importspec) ~~~~~~~~~~^^^^^^^^^^^^ ModuleNotFoundError: No module named 'clan_lib.fixtures.flakes.utils' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/nix/store/djaak05b70dhwhcck6sd35qzy7iykn34-python3.13-pytest-8.4.1/bin/.pytest-wrapped", line 9, in <module> sys.exit(console_main()) ~~~~~~~~~~~~^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 201, in console_main code = main() File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 156, in main config = _prepareconfig(args, plugins) File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 342, in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( pluginmanager=pluginmanager, args=args ) File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_hooks.py", line 512, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 167, in _multicall raise exception File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/helpconfig.py", line 112, in pytest_cmdline_parse config = yield ^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 121, in _multicall res = hook_impl.function(*args) File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1146, in pytest_cmdline_parse self.parse(args) ~~~~~~~~~~^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1527, in parse self._preparse(args, addopts=addopts) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1431, in _preparse self.hook.pytest_load_initial_conftests( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ early_config=self, args=args, parser=self._parser ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_hooks.py", line 512, in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 167, in _multicall raise exception File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/warnings.py", line 129, in pytest_load_initial_conftests return (yield) ^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall teardown.throw(exception) ~~~~~~~~~~~~~~^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/capture.py", line 173, in pytest_load_initial_conftests yield File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/pluggy/_callers.py", line 121, in _multicall res = hook_impl.function(*args) File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 1228, in pytest_load_initial_conftests self.pluginmanager._set_initial_conftests( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ args=args, ^^^^^^^^^^ ...<8 lines>... ), ^^ ) ^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 583, in _set_initial_conftests self._try_load_conftest( ~~~~~~~~~~~~~~~~~~~~~~~^ anchor, ^^^^^^^ ...<2 lines>... consider_namespace_packages=consider_namespace_packages, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 621, in _try_load_conftest self._loadconftestmodules( ~~~~~~~~~~~~~~~~~~~~~~~~~^ anchor, ^^^^^^^ ...<2 lines>... consider_namespace_packages=consider_namespace_packages, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 661, in _loadconftestmodules mod = self._importconftest( conftestpath, ...<2 lines>... consider_namespace_packages=consider_namespace_packages, ) File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 737, in _importconftest self.consider_conftest(mod, registration_name=conftestpath_plugin_name) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 818, in consider_conftest self.register(conftestmodule, name=registration_name) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 514, in register self.consider_module(plugin) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 826, in consider_module self._import_plugin_specs(getattr(mod, "pytest_plugins", [])) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 833, in _import_plugin_specs self.import_plugin(import_spec) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 862, in import_plugin raise ImportError( f'Error importing plugin "{modname}": {e.args[0]}' ).with_traceback(e.__traceback__) from e File "/nix/store/9kzh7m9m72631v3yxbpjhcbgdn2cssk0-python3-3.13.7-env/lib/python3.13/site-packages/_pytest/config/__init__.py", line 860, in import_plugin __import__(importspec) ~~~~~~~~~~^^^^^^^^^^^^ ImportError: Error importing plugin "clan_lib.fixtures.flakes.utils": No module named 'clan_lib.fixtures.flakes.utils' ```
Qubasa merged commit 9851ac1572 into main 2026-01-28 11:04:48 +00:00
Sign in to join this conversation.