Use uv internally for spa venv bootstrap (keep spa venv / .venv contract)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start by tracing the current bootstrap behavior in bin/spa_venv.sh and install.sh, then read tests/test_spa_venv.py and the spa doctor and install documentation. Preserve the spa venv, .venv layout, launcher, resolution, and option contracts while adding pinned uv handling, fallback behavior, and the documented upgrade path. Confirm existing environments remain valid and ansible-galaxy collection installation stays unchanged.
Written by the indexing model from the issue text.
Description
Summary
Use uv inside spa_venv.sh / install.sh to create the existing .venv and install requirements.txt. Keep the public contract: spa venv, shared SPA_HOME/.venv vs env .venv vs tests/.venv, launcher execs .venv/bin/python. Do not make uv an operator prerequisite (brew install uv would be more host software, not less).
Today bootstrap is stdlib python3 -m venv plus pip in the venv, then ansible-galaxy for requirements.yml. Host need is Python 3.9+ with the venv module (often python3-venv on Debian). Ansible/Pydantic already must not come from Homebrew.
Why
- Faster create/reinstall/rebuild (CI and
spa venv --rebuild). - Optional
uv python installso a controller without a usable Python /venvmodule can still get SPA — only ifinstall.shdownloads or vendors a pinned uv binary. - Optional lockfile (
uv.lockor equivalent) for reproducible Ansible/Pydantic;requirements.txtis loosely ranged today.
Ship
install.sh/bin/spa_venv.sh: prefer a pinned uv (download to prefix or vendor);uv venv+uv pip install -r requirements.txt(and--upgradeonspa venv --upgrade). Same resolution order and--python/--dir/--environmentbehavior.- Do not document uv as something operators install. Doctor/docs: either “Python 3.9+ with venv” or “installer brings uv+Python”; extract-anywhere without network still needs a fallback (
python3 -m venv+ pip) or a vendored uv. ansible-galaxyfor collections stays; uv does not replace Galaxy.- Tests (
tests/test_spa_venv.py),spa doctor, skills, docs/install.md, migrate notes. Existing venvs remain valid (same.venvlayout). - Air-gap / enterprise: pin uv version; no extra curl of latest; PyPI still required unless the operator already has a package index.
Out of scope
- Replacing
.venvwith a uv-only workflow operators must learn. - Dropping
spa venv. - Homebrew Ansible/Pydantic (already forbidden).
Related
- M1
spa_venv.sh, M3install.sh - Optional later Homebrew tap (ROADMAP): still a SPA venv, not brew Ansible
- Dominant language
- Python
- Stars
- 137
- Forks
- 51
- Avg merge
- 7h 44m
- Merged PRs (30d)
- 14
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from splunk/splunk-platform-automator
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 68/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 38/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 68/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 58/100
All issues in splunk/splunk-platform-automator
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100