Skip to content

Publish to PyPI as crucible-marketdata (the obvious name is taken) - #9

Merged
mspinola merged 1 commit into
mainfrom
claude/pypi-release
Aug 9, 2026
Merged

Publish to PyPI as crucible-marketdata (the obvious name is taken)#9
mspinola merged 1 commit into
mainfrom
claude/pypi-release

Conversation

@mspinola

@mspinola mspinola commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Adds tag-triggered PyPI publishing via Trusted Publishing, the same mechanism cotdata uses (its PR #94).

marketdata is not available

Checked before writing the workflow rather than discovering it at the first tag push:

GET https://pypi.org/pypi/marketdata/json  →  200
    name: marketData   version: 0.2.0
    author: Behnam Hajian
    last upload: 2020-04-19

An unrelated, abandoned project — two releases, nothing since 2020. PyPI normalises marketData and marketdata to the same name, so that name is spoken for.

The import name does not change

pip install crucible-marketdataimport marketdata. Same split as python-dateutilimport dateutil, or scikit-learnimport sklearn.

Renaming the import package was the alternative, and it was rejected: cotmetrics and cot-analyzer were repointed onto import marketdata earlier today, and churning them again buys nothing that a distribution name does not.

crucible- rather than cot- is deliberate. ADR-0007 exists to establish that bars are not COT-specific. 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.

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 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 both artifacts, and the wheel's top level is marketdata.

Companion PRs — these are a set

A dependency names the distribution, so both consumers must follow. Left as marketdata>=0.1.0 they 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, repo marketdata, workflow release.yml, environment pypi. 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_dispatch run builds and twine-checks without publishing, which is the only dry run available — worth doing first.


Generated by Claude Code

`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
@mspinola
mspinola merged commit 16548da into main Aug 9, 2026
5 checks passed
@mspinola
mspinola deleted the claude/pypi-release branch August 9, 2026 03:15
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.

1 participant