Skip to content

Chore/reproducible dependencies - #35

Merged
YalanBi merged 9 commits into
masterfrom
chore/reproducible-dependencies
Aug 4, 2026
Merged

Chore/reproducible dependencies#35
YalanBi merged 9 commits into
masterfrom
chore/reproducible-dependencies

Conversation

@YalanBi

@YalanBi YalanBi commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Consolidate dependency declarations into pyproject.toml as the single source of truth; turn requirements.txt into a real pinned lock file; refresh/align dev tool pins.
  • Fix logo not rendering on PyPI (relative path → absolute URL).
  • Fix np.bool crash in sashimi_plot(select_transcripts=...) under NumPy >=1.24 (closes Deprecated alias np.bool #20).
  • Add CodeQL security scanning and a docs-build CI check.
  • Fix a docstring typo/formatting bug in add_domains_to_table surfaced by the new docs-build check.
  • Bump version to 2.0.2.

Test plan

  • python -m build + twine check dist/* pass
  • flake8 and black --check pass on latest pinned tool versions
  • Full pytest suite passes (13 passed)
  • CI green across the full py3.10/3.11/3.12 matrix, lint, CodeQL, and docs-build

YalanBi and others added 7 commits August 4, 2026 02:29
Runtime deps were declared independently in pyproject.toml, setup.cfg,
and requirements.txt with no version floors, and dev tooling was pinned
to years-old versions with tox's flake8 env drifting from
requirements_dev.txt entirely. Make pyproject.toml the single source of
truth for the install spec (with version floors from a verified working
install), turn requirements.txt into an actual pinned lock file, and
refresh/align dev tool pins across requirements_dev.txt and tox.ini.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The logo's relative src path resolves fine on GitHub but 404s in
PyPI's README renderer, which has no repo base path to resolve
against.
np.bool was removed in NumPy >=1.24, crashing sashimi_plot() whenever
select_transcripts is passed. Closes #20.
Complements dependency-review.yml, which only checks new dependencies
introduced in a PR for known CVEs -- it doesn't scan our own code.
Runs on push/PR to master and weekly on a schedule.
ReadTheDocs only builds docs/ after merge (and fail_on_warning is
False there), so nothing previously caught a broken Sphinx build
before it landed on master. Builds with -W --keep-going to fail on
any warning; skips executing tutorial notebooks (nbsphinx_execute=never)
since they need real long-read data files not available in CI.
Covers the np.bool fix in this branch.
Floors were set from a Python-3.12-only test environment; some of the
latest resolved versions (e.g. scipy 1.18.0) require Python >=3.12
themselves, so pip found no matching version on the 3.10/3.11 runners.
The abstract dependency spec doesn't need version floors to achieve
reproducibility -- requirements.txt (the pinned lock file) already
covers that for a specific verified environment.
@YalanBi YalanBi self-assigned this Aug 4, 2026
@YalanBi YalanBi added the enhancement New feature or request label Aug 4, 2026
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 4 package(s) with unknown licenses.
See the Details below.

License Issues

.github/workflows/docs-build.yml

PackageVersionLicenseIssue Type
actions/checkout4.*.*NullUnknown License
actions/setup-python5.*.*NullUnknown License

requirements_dev.txt

PackageVersionLicenseIssue Type
black26.5.1NullUnknown License
tox4.58.0NullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout 4.*.* 🟢 6.9
Details
CheckScoreReason
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review🟢 10all changesets reviewed
Maintained🟢 1024 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
Packaging⚠️ -1packaging workflow not detected
License🟢 10license file detected
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 10SAST tool is run on all commits
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
actions/actions/setup-python 5.*.* 🟢 6.6
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 1017 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies🟢 7dependency not pinned by hash detected -- score normalized to 7
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 9SAST tool is not run on all commits -- score normalized to 9
pip/black 26.5.1 UnknownUnknown
pip/flake8 7.3.0 🟢 4.2
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Code-Review⚠️ 0Found 0/2 approved changesets -- score normalized to 0
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Maintained🟢 55 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 9license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 3branch protection is not maximal on development and all release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/flake8-bugbear 25.11.29 UnknownUnknown
pip/pytest 9.1.1 UnknownUnknown
pip/pytest-cov 7.1.0 UnknownUnknown
pip/pytest-dependency 0.6.1 🟢 4.2
Details
CheckScoreReason
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review⚠️ 2Found 4/14 approved changesets -- score normalized to 2
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Packaging🟢 10packaging workflow detected
Signed-Releases🟢 85 out of the last 5 releases have a total of 5 signed artifacts.
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/tox 4.58.0 UnknownUnknown

Scanned Files

  • .github/workflows/docs-build.yml
  • requirements_dev.txt

YalanBi added 2 commits August 4, 2026 02:55
":parm overlap_only" (missing "a") meant that parameter never rendered
in the API docs, and the unescaped "**filter_kwargs" was parsed by
Sphinx as unterminated bold markup, both surfaced by the new
docs-build CI check.
-W surfaced 43 pre-existing broken relative links in tutorial
notebooks (content debt RTD never caught either, since
fail_on_warning is False there). Keep the check for genuine build
errors; revisit -W once the notebook links are fixed separately.
@YalanBi
YalanBi merged commit a80c512 into master Aug 4, 2026
19 checks passed
@YalanBi
YalanBi deleted the chore/reproducible-dependencies branch August 4, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deprecated alias np.bool

1 participant