Resolve WHICH Python launches a REPL or a run_tests shell-out, mirroring how
the Clojure pack picks deps.edn / lein / bb. A project may PIN the launcher in
merged config (python.interpreter); otherwise the project-managed env is
detected, so the interpreter sees the project's dependencies — not the bare
system interpreter.
Resolve WHICH Python launches a REPL or a `run_tests` shell-out, mirroring how the Clojure pack picks deps.edn / lein / bb. A project may PIN the launcher in merged config (`python.interpreter`); otherwise the project-managed env is detected, so the interpreter sees the project's dependencies — not the bare system interpreter.
(configured-runner)python.runner from merged config, or nil. Config failures degrade to nil
rather than breaking a run.
`python.runner` from merged config, or nil. Config failures degrade to nil rather than breaking a run.
(detect-command root)The argv PREFIX detected for root, ignoring config. Detection order (first
hit wins):
uv on PATH → [uv run python]poetry on PATH → [poetry run python]The argv PREFIX detected for `root`, ignoring config. Detection order (first hit wins): 1. uv — uv.lock / [tool.uv] in pyproject + `uv` on PATH → [uv run python] 2. poetry — poetry.lock + `poetry` on PATH → [poetry run python] 3. venv — .venv/ or venv/ interpreter → [<abs path>] 4. system — python3, else python → [python3]
(pinned-command root raw-config)The argv prefix raw-config (merged config, string keys) pins as
python.interpreter for root, or nil when nothing is pinned:
python: interpreter: [vis-agent, python]
Pure — reading the config file is resolve-command's job.
The argv prefix `raw-config` (merged config, string keys) pins as
`python.interpreter` for `root`, or nil when nothing is pinned:
python:
interpreter: [vis-agent, python]
Pure — reading the config file is `resolve-command`'s job.(pinned-runner raw-config)The run_tests backend raw-config pins as python.runner (graalpy or
project), or nil for anything else. Explicit call arguments still win.
The `run_tests` backend `raw-config` pins as `python.runner` (`graalpy` or `project`), or nil for anything else. Explicit call arguments still win.
(resolve-command root)The argv PREFIX that launches a project-aware Python in root: the one pinned
in merged config as python.interpreter, else detect-command's detection.
A pin is how a workspace whose only sanctioned invocation is something vis
cannot detect (vis-agent python, a wrapper script, a container shim) still
gets its own launcher out of repl / repl_eval / run_tests.
The argv PREFIX that launches a project-aware Python in `root`: the one pinned in merged config as `python.interpreter`, else `detect-command`'s detection. A pin is how a workspace whose only sanctioned invocation is something vis cannot detect (`vis-agent python`, a wrapper script, a container shim) still gets its own launcher out of `repl` / `repl_eval` / `run_tests`.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |