Skip to content

Stop extras from installing other people's packages - #18

Open
Coding-Dev-Tools wants to merge 2 commits into
mainfrom
fix/install-points-at-strangers-packages
Open

Coding-Dev-Tools wants to merge 2 commits into
mainfrom
fix/install-points-at-strangers-packages

Conversation

@Coding-Dev-Tools

@Coding-Dev-Tools Coding-Dev-Tools commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Why

No DevForge tool is on public PyPI, so the bare extras in pyproject.toml resolved to other people's packages: [deadcode] installed deadcode 2.4.1 (Albertas Gimbutas), [envault] envault 0.4.6 (pratishshr), [sql] json2sql 1.0.0rc1 (fridex). [all] failed outright, and the unregistered names could be claimed by anyone. The README's recommended command also failed, because pip parsed ...devforge-cli.git[all] as the git URL.

What changes

  • Every extra now points at its real distribution in its own repo, e.g. deadcode-cli @ git+https://github.com/Coding-Dev-Tools/deadcode.git.
  • README: pip install "devforge-tools[all] @ git+https://github.com/Coding-Dev-Tools/devforge-cli.git".

Verified

pip install --dry-run "./devforge-cli[all]" resolves all ten tools to Coding-Dev-Tools repos: api-contract-guardian, apiauth, apighost, click-to-mcp, configdrift, deadcode-cli, deploydiff, json2sql-cli, rh-envault, schemaforge-cli.

Later

PyPI rejects direct references in uploaded packages. Once the tools are published (Trusted Publishing), switch these back to version pins on the real names.

Independent 2-Agent Review Status

  • Reviewed SHA: e2e355bef37089966579b9846ae30e07a3f7f6f8 (2 fresh Command Code deepseek/deepseek-v4.1-flash --effort max contexts).
  • Verdicts: Reviewer 1 REQUEST_CHANGES · Reviewer 2 REQUEST_CHANGES.
  • Verified gates: 6/6 GitHub Actions checks SUCCESS; pytest tests/ -q 32 passed; ruff check & ruff format --check pass; pip install --dry-run ".[all]" resolves all 10 Coding-Dev-Tools distributions.
  • Blockers before merge:
    1. devforge versions false negative for 4 of 10 tools (src/devforge/__init__.py:16,56,64,80, src/devforge/cli.py:144): _pip_version(info["package"]) queries import names (json2sql, envault, schemaforge, deadcode) instead of distribution names (json2sql-cli, rh-envault, schemaforge-cli, deadcode-cli). Add "dist" to TOOLS and pass info["dist"] to _pip_version.
    2. Broken git+...[extra] install string still emitted in CLI (src/devforge/cli.py:104,202, tests/test_cli.py:61,141,189): devforge install and the not-installed hint still construct f"git+{repo_url}[{extras}]", which fails pip git cloning; switch to PEP 508 f"devforge-tools[{extras}] @ git+{repo_url}".
    3. Unpinned mutable git URLs (pyproject.toml:34-54, README.md:31) & missing packaging policy test: pin the 10 tool git URLs to @<40-hex-sha> (and note PyPI publish.yml direct-URL limitation) and add an offline tomllib test verifying extras/dist parity.
    4. Pre-existing commit e2e355b attribution: authored by Claude with trailers; must land via canonical squash after code blockers are fixed.

None of the DevForge tools is on public PyPI, so bare extras like
"deadcode", "envault" and "json2sql" resolved to unrelated packages by other
authors (deadcode 2.4.1, envault 0.4.6, json2sql 1.0.0rc1), and [all] failed
outright. Each extra now points at its real distribution in its GitHub repo.
Also fix the README's recommended command, which pip parsed as a git URL
ending in "[all]" and failed to clone.

Verified: pip install --dry-run "./devforge-cli[all]" resolves all ten tools
to Coding-Dev-Tools repos.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0111byzLrKKTCJ23uTT6PyZq
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-15T12:51:14.490712Z
We couldn’t complete this review. Comment @codex review to try again.
e3545f1 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e2e355bef3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread pyproject.toml
# These tools are not on public PyPI yet, so each extra points at its GitHub repo.
# Bare names (e.g. "deadcode", "envault", "json2sql") resolve to unrelated
# packages owned by other people. Switch to version pins once each tool is published.
guard = ["api-contract-guardian @ git+https://github.com/Coding-Dev-Tools/api-contract-guardian.git"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep direct URLs out of PyPI release metadata

When a GitHub Release triggers .github/workflows/publish.yml, these optional dependencies are emitted as Requires-Dist direct URLs and PyPI rejects the upload, so the release workflow cannot publish this project while the Git URLs remain here. Setuptools documents this PyPI restriction.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

This branch has not been deployed

No deployments
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.

2 participants