Publish to PyPI as crucible-marketdata (the obvious name is taken) - #9
Merged
Conversation
`marketdata` is not available on PyPI. It belongs to an unrelated, abandoned project — `marketData` 0.2.0, two releases, last uploaded 2020-04-19 — and PyPI normalises the two to the same name. Checked before writing the workflow rather than discovering it at the first tag push. The IMPORT name is unchanged. Consumers keep writing `import marketdata`; only the name you pip install differs, the same split as python-dateutil/dateutil. Renaming the import package was the alternative and it was rejected: cotmetrics and cot-analyzer were repointed onto `import marketdata` an hour ago, and churning them again buys nothing a distribution name does not. `crucible-` rather than `cot-` is deliberate. ADR-0007 exists to establish that bars are NOT COT-specific, and a distribution called cot-marketdata would undo in its name the distinction the split was made to draw. crucible-stack is where that ADR lives. The release workflow is cotdata's, with one guard added for the hazard this naming creates: distribution and import names differing is exactly the setup where a packaging edit ships the wrong module tree, pip install succeeds, and the failure surfaces as ImportError at a consumer. So the build asserts the wheel actually contains a marketdata/ package before anything is published. Verified locally: builds crucible_marketdata-0.1.0, twine check passes, and the wheel's top-level is `marketdata`. PyPI-side setup is still required and cannot be done from here — a Trusted Publisher for owner mspinola, repo marketdata, workflow release.yml, environment pypi. The publish step fails by OIDC until that exists. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jo4iovRfc2fzE9MwcLp7r2
This was referenced Aug 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds tag-triggered PyPI publishing via Trusted Publishing, the same mechanism cotdata uses (its PR #94).
marketdatais not availableChecked before writing the workflow rather than discovering it at the first tag push:
An unrelated, abandoned project — two releases, nothing since 2020. PyPI normalises
marketDataandmarketdatato the same name, so that name is spoken for.The import name does not change
pip install crucible-marketdata→import marketdata. Same split aspython-dateutil→import dateutil, orscikit-learn→import sklearn.Renaming the import package was the alternative, and it was rejected: cotmetrics and cot-analyzer were repointed onto
import marketdataearlier today, and churning them again buys nothing that a distribution name does not.crucible-rather thancot-is deliberate. ADR-0007 exists to establish that bars are not COT-specific. A distribution calledcot-marketdatawould undo in its name the distinction the split was made to draw.crucible-stackis where that ADR lives.One guard beyond cotdata's workflow
Distribution and import names differing is exactly the setup where a packaging edit ships the wrong module tree:
pip installsucceeds, and the failure surfaces asImportErrorat a consumer. So the build asserts the wheel actually contains amarketdata/package before anything is published.Verified locally — builds
crucible_marketdata-0.1.0,twine checkpasses both artifacts, and the wheel's top level ismarketdata.Companion PRs — these are a set
A dependency names the distribution, so both consumers must follow. Left as
marketdata>=0.1.0they would either fail to resolve against the editable sibling or, worse, succeed by fetching a stranger's 2020 module.Still required, and not doable from here
A PyPI Trusted Publisher for owner
mspinola, repomarketdata, workflowrelease.yml, environmentpypi. The publish step authenticates by OIDC and fails until that exists. Once it does:git tag v0.1.0 && git push origin v0.1.0.A
workflow_dispatchrun builds and twine-checks without publishing, which is the only dry run available — worth doing first.Generated by Claude Code