Skip to content

UV Shim Fallback - #39

Merged
davebelais merged 6 commits into
mainfrom
bugfix/uv-shim-fallback
Jul 30, 2026
Merged

UV Shim Fallback#39
davebelais merged 6 commits into
mainfrom
bugfix/uv-shim-fallback

Conversation

@davebelais

@davebelais davebelais commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

This pull request introduces several documentation updates and configuration changes to improve the developer experience and clarify project workflows. The most significant addition is a detailed implementation plan for adding a fallback from uv to pip in the dependence package, ensuring robust package management even when uv is unavailable or fails. Additional changes include new documentation for project architecture and conventions, updates to workflow permissions, and the introduction of a new Claude plugin and skill.

Documentation and Project Architecture:

  • Added AGENTS.md detailing the architecture, commands, and conventions of the dependence project, including its CLI structure, testing strategy, and guidelines for contributors.
  • Added CLAUDE.md as a reference pointer to AGENTS.md for agentic workers.
  • Added a comprehensive implementation plan in docs/superpowers/plans/2026-07-29-uv-shim-pip-fallback.md for supporting fallback from uv to pip in key package management functions, including test strategies, code changes, and release steps.

Configuration and Workflow:

  • Updated .github/workflows/test.yml to explicitly set contents: read permissions and added a success job that reports when all tests and linting pass. [1] [2]
  • Enabled the official Claude Superpowers plugin in .claude/settings.json.
  • Introduced a new Claude skill fableplan in .claude/skills/fableplan/SKILL.md, allowing per-user toggling of "Fable Plan Mode" for advanced planning and execution workflows.

@davebelais davebelais changed the title ++superpowers UV Shim Fallback Jul 30, 2026
Comment thread .github/workflows/test.yml Fixed
davebelais and others added 2 commits July 30, 2026 10:00
…ntain permissions'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@davebelais
davebelais requested a review from Copilot July 30, 2026 17:15
@davebelais
davebelais marked this pull request as ready for review July 30, 2026 17:15
@davebelais
davebelais merged commit dc5b225 into main Jul 30, 2026
18 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates dependence’s internal package-management utilities to tolerate a broken uv shim by falling back to pip, and adds regression tests and supporting documentation/config to clarify contributor workflows and agent tooling.

Changes:

  • Add uvpip fallback behavior to _iter_pip_list and _install_requirement_string, plus new subprocess-based regression tests.
  • Modernize some isinstance type checks using PEP 604 unions.
  • Add/expand developer & agent documentation, plus small repo/config/workflow updates (including a version bump).

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/test_utilities.py Adds tests covering uv shim failure scenarios and expected pip fallback behavior.
src/dependence/_utilities.py Implements fallback from uv to pip for pip list and install operations.
src/dependence/update.py Minor typing/union modernization in an isinstance check.
src/dependence/freeze.py Minor typing/union modernization in an isinstance check.
pyproject.toml Version bump to 1.4.2.
docs/superpowers/specs/2026-07-29-uv-shim-pip-fallback-design.md Adds design spec documenting the uv shim failure mode and fallback semantics.
docs/superpowers/plans/2026-07-29-uv-shim-pip-fallback.md Adds implementation plan/checklist for the fallback change and verification steps.
AGENTS.md Documents repo architecture, commands, conventions, and contributor guidance.
CLAUDE.md Points agent tooling at AGENTS.md.
.github/workflows/test.yml Sets explicit workflow permissions and adds a terminal “success” job.
.claude/settings.json Enables the official Claude Superpowers plugin for the repo.
.claude/skills/fableplan/SKILL.md Adds a repo-local skill for toggling “Fable Plan Mode”.
.gitignore Ensures .claude can be committed (unignored).
Comments suppressed due to low confidence (2)

tests/test_utilities.py:91

  • Using os.environ['PATH'] can raise KeyError in minimal environments where PATH is unset. Use os.getenv('PATH', '') so the test setup is robust.
    monkeypatch.setenv("PATH", f"{tmp_path}{os.pathsep}{os.environ['PATH']}")

tests/test_utilities.py:154

  • Using os.environ['PATH'] can raise KeyError in minimal environments where PATH is unset. Use os.getenv('PATH', '') so the test setup is robust.
    monkeypatch.setenv("PATH", f"{tmp_path}{os.pathsep}{os.environ['PATH']}")

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/test_utilities.py
else "#!/bin/sh\nexit 127\n"
)
broken_uv.chmod(broken_uv.stat().st_mode | stat.S_IEXEC)
monkeypatch.setenv("PATH", f"{tmp_path}{os.pathsep}{os.environ['PATH']}")
)
try:
output = check_output(uv_command)
except CalledProcessError:
try:
check_output(command, shell=shell)
except CalledProcessError as error:
except CalledProcessError as uv_error:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants