Skip to content

Tags: sylam/derivus

Tags

v0.4.2

Toggle v0.4.2's commit message
Package correctly for PyPI and add the publish workflow

Building the wheel rather than reading setup.py surfaced three defects that
would each have shipped broken:

- All three console scripts were dead. find_packages() shipped only the
  derivus package, but the entry points target flat modules beside it, so
  bootstrap/derivus_batch/derivus_docs were absent from the wheel entirely.
  Declared them via py_modules.
- DV_Docs had no main() to call, only an __main__ block. Extracted one to
  match derivus_batch/derivus_bootstrap, and rooted it at cwd: installed as
  a console script the module lives in site-packages, which has no docs_src.
- pyparsing (config.py) was undeclared and only arriving as a transitive
  dependency of matplotlib, which nothing shipped actually imports.

Dependencies now state what the package imports. matplotlib moves to
[interactive]; python-markdown-math is dropped as stale (it provides
mdx_math, referenced nowhere — the generated config uses pymdownx.arithmatex
with the material theme) and the real docs toolchain becomes a [docs] extra.

Also: rename bootstrap.py -> derivus_bootstrap.py so installing does not drop
a generically-named module into site-packages, stop shipping excel_integration
as an importable top-level package, and correct the README, which claimed
Derivus was not on PyPI and required python >= 3.6 against setup.py's >= 3.8.

Version 0.4.2: the previous 0.4.2.alpha normalises to a pre-release, which
pip skips unless asked with --pre.

Publishing uses OIDC trusted publishing, no stored token. The upload job is
separate so it alone holds id-token: write, and is gated on the tag matching
derivus/_version.py, the CLI modules being present in the wheel, and
twine check --strict.

Verified: wheel installed into a clean venv loads all three entry points,
imports from a non-repo cwd, and builds docs from a checkout. Suite 570
passed, 3 xfailed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>