From e2e355bef37089966579b9846ae30e07a3f7f6f8 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 24 Oct 2026 20:56:45 +0000 Subject: [PATCH] fix(install): stop extras from installing other people's packages 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 Claude-Session: https://claude.ai/code/session_0111byzLrKKTCJ23uTT6PyZq --- README.md | 2 +- pyproject.toml | 43 +++++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 738b485..4ef3d01 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Instead of installing ten separate tools and learning ten different CLIs, the `d ```bash # Install everything (recommended) -pip install "git+https://github.com/Coding-Dev-Tools/devforge-cli.git[all]" +pip install "devforge-tools[all] @ git+https://github.com/Coding-Dev-Tools/devforge-cli.git" # Or clone and install locally git clone https://github.com/Coding-Dev-Tools/devforge-cli.git diff --git a/pyproject.toml b/pyproject.toml index 6210959..fd9ec60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,27 +28,30 @@ dependencies = [ # Optional groups — install with: pip install devforge-tools[all] [project.optional-dependencies] -guard = ["api-contract-guardian>=0.1.0"] -sql = ["json2sql>=0.1.0"] -deploy = ["deploydiff>=0.1.0"] -drift = ["configdrift>=0.1.0"] -ghost = ["apighost>=0.1.0"] -auth = ["apiauth>=0.2.0"] -envault = ["envault>=0.1.0"] -schema = ["schemaforge>=1.7.0"] -mcp = ["click-to-mcp>=0.4.0"] -deadcode = ["deadcode>=0.1.1"] +# 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"] +sql = ["json2sql-cli @ git+https://github.com/Coding-Dev-Tools/json2sql.git"] +deploy = ["deploydiff @ git+https://github.com/Coding-Dev-Tools/deploydiff.git"] +drift = ["configdrift @ git+https://github.com/Coding-Dev-Tools/configdrift.git"] +ghost = ["apighost @ git+https://github.com/Coding-Dev-Tools/apighost.git"] +auth = ["apiauth @ git+https://github.com/Coding-Dev-Tools/apiauth.git"] +envault = ["rh-envault @ git+https://github.com/Coding-Dev-Tools/envault.git"] +schema = ["schemaforge-cli @ git+https://github.com/Coding-Dev-Tools/schemaforge.git"] +mcp = ["click-to-mcp @ git+https://github.com/Coding-Dev-Tools/click-to-mcp.git"] +deadcode = ["deadcode-cli @ git+https://github.com/Coding-Dev-Tools/deadcode.git"] all = [ - "api-contract-guardian>=0.1.0", - "json2sql>=0.1.0", - "deploydiff>=0.1.0", - "configdrift>=0.1.0", - "apighost>=0.1.0", - "apiauth>=0.2.0", - "envault>=0.1.0", - "schemaforge>=1.7.0", - "click-to-mcp>=0.4.0", - "deadcode>=0.1.1", + "api-contract-guardian @ git+https://github.com/Coding-Dev-Tools/api-contract-guardian.git", + "json2sql-cli @ git+https://github.com/Coding-Dev-Tools/json2sql.git", + "deploydiff @ git+https://github.com/Coding-Dev-Tools/deploydiff.git", + "configdrift @ git+https://github.com/Coding-Dev-Tools/configdrift.git", + "apighost @ git+https://github.com/Coding-Dev-Tools/apighost.git", + "apiauth @ git+https://github.com/Coding-Dev-Tools/apiauth.git", + "rh-envault @ git+https://github.com/Coding-Dev-Tools/envault.git", + "schemaforge-cli @ git+https://github.com/Coding-Dev-Tools/schemaforge.git", + "click-to-mcp @ git+https://github.com/Coding-Dev-Tools/click-to-mcp.git", + "deadcode-cli @ git+https://github.com/Coding-Dev-Tools/deadcode.git", ] dev = ["pytest>=7.0.0", "pyright>=1.1.300"]