Skip to content

Rename PyPI distribution to contextmesh-graph - #38

Merged
Deep-Sixed merged 2 commits into
mainfrom
release-engineering/pypi-distribution-name
Sep 9, 2026
Merged

Deep-Sixed merged 2 commits into
mainfrom
release-engineering/pypi-distribution-name

Conversation

@Deep-Sixed

Copy link
Copy Markdown
Owner

Summary

pyproject.toml currently declares name = "contextmesh". That distribution name is already taken on PyPI by an unrelated project — a different "persistent semantic memory layer for AI agents," published as contextmesh 1.0.0 on March 21, 2026, by a different author (verified directly against https://pypi.org/pypi/contextmesh/json, which returns that package's real metadata, not a 404). So pip install contextmesh currently installs someone else's package, not this one. RELEASE_NOTES.md's "package publication remains a separate explicit gate" is still accurate, but the gate had an unrecorded blocker: opening it under the current name would ship the wrong thing.

This PR only renames the PyPI distribution:

  • pyproject.toml: name = "contextmesh" → name = "contextmesh-graph" (verified available: https://pypi.org/pypi/contextmesh-graph/json returns 404).
  • Updated the three end-user-facing pip install 'contextmesh[mcp]' instructions (README, contextmesh_mcp/server.py's docstring and its ImportError message, and the test_mcp.py skip message) to pip install 'contextmesh-graph[mcp]'.
  • Added a checklist item to docs/release-candidate-v0.1.0.md recording that the distribution name was checked against the real PyPI index, not just assumed safe from the import name — closing the gap that let this go unnoticed.

Not changed: import contextmesh, the contextmesh / contextmesh-mcp console scripts, the contextmesh / contextmesh_mcp package directories, and every module path. Existing users, docs, and code that reference the import namespace are unaffected — only the string used with pip install changes.

Verification

  • Built the wheel and sdist from this branch: they build as contextmesh_graph-0.1.0-py3-none-any.whl / contextmesh_graph-0.1.0.tar.gz.
  • twine check dist/* → PASSED for both artifacts.
  • Installed the built wheel into a clean venv: import contextmesh succeeds, contextmesh --help runs, and pip show contextmesh-graph confirms the distribution name.
  • Full suite: python -m unittest discover -s tests → 989 tests, OK (6 skipped, same skips as before — the MCP-SDK-optional cases).
  • ruff check . → all checks passed.
  • ops/leak-check.sh → clean.

Test plan

  • Wheel/sdist build and pass twine check.
  • Wheel installs into a clean venv; import contextmesh and contextmesh --help both work.
  • pip show confirms the installed distribution name is contextmesh-graph.
  • Full test suite passes (989 tests, 6 skipped).
  • ruff check . clean.
  • ops/leak-check.sh clean.
  • CI (normal workflow + LLM provider contracts) green on this PR head.

🤖 Generated with Claude Code


Generated by Claude Code

The distribution name `contextmesh` is already an unrelated published
package on PyPI (a different "persistent semantic memory layer",
published 1.0.0 in March 2026). `pip install contextmesh` installs that
project, not this one, so the publication gate could not simply be
opened under the current name.

Rename only the PyPI distribution: `import contextmesh`, the
`contextmesh` and `contextmesh-mcp` console scripts, and the package
directories are unchanged. Verified with a real build: the wheel and
sdist build as contextmesh_graph-0.1.0, pass `twine check`, and install
cleanly into a fresh venv with `import contextmesh` and the `contextmesh`
CLI both working.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
release-candidate.yml's mcp-wheel job still constructed the install
spec as contextmesh[mcp] @ <wheel URI>, which pip rejects once the
distribution is actually named contextmesh-graph: the URL's own
metadata says contextmesh-graph, so pip treats "contextmesh" as a
separate, unsatisfiable requirement (there's a real contextmesh 1.0.0
on PyPI, so it fails on that instead of a clear local error).

Reproduced locally: installing 'contextmesh[mcp] @ file://...' against
the built wheel fails with the exact "has inconsistent name" error CI
hit; installing 'contextmesh-graph[mcp] @ file://...' against the same
wheel succeeds, and the installed contextmesh-mcp entry point and
contextmesh_mcp.server import both work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Deep-Sixed
Deep-Sixed marked this pull request as ready for review September 9, 2026 01:57
@Deep-Sixed
Deep-Sixed merged commit b01c695 into main Sep 9, 2026
43 checks passed
@Deep-Sixed
Deep-Sixed deleted the release-engineering/pypi-distribution-name branch October 22, 2026 17:18
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