Fix README badges: finish master→main migration and revive CI - #200
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… checklist Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pytest-pep8 was last released in 2014 and declares the legacy pytest_collect_file(path, parent) hook signature, which modern pytest rejects with PluginValidationError before collecting any tests. Style is already enforced by black + pre-commit, so the plugin is redundant. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
compute_zscore() built its result frame with no explicit dtype, which defaults to object under pandas 3.0; assigning it into the enrichment table then raised a lossy-set TypeError because pandas 3.0 no longer silently upcasts object->float64. Declare the z-score frame as float at construction, and cast the destination table to float before assignment. Fixes test_cpm_zscore failure surfaced by the newly-revived CI. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Closes #198
Summary
Finishes the unfinished
master→maindefault-branch migration and modernizes CI off end-of-life Python runtimes, so the README badges reflect real, passing runs onmain.What changed (5 commits, all config/docs — no application logic):
.github/workflows/build-and-test.yaml[3.7, 3.8, 3.9]→["3.9", "3.10", "3.11", "3.12"];checkout@v3→@v4,setup-python@v4→@v5.github/workflows/package.yaml${{ matrix.python-version }}(no matrix was ever defined) → pinned"3.12"; same action bumps.github/workflows/docs_pages_workflow.ymldebian:buster(EOL) →debian:bookworm;[3.7]pin →["3.12"]; fixed stale "push to master" comment → "to main"pyproject.tomlrequires-python = ">=3.7"→">=3.9"(matches the new matrix floor)README.mdbuild and testbadge → modernactions/workflows/<file>.yaml/badge.svg?branch=mainform; added docs + package badges; added "Container image (Quay)" maintainer-checklist subsectionAcceptance criteria met (verified against the branch diff):
?branch=mainform; no/masterrefs remain in README..ymlvs.yamldistinction).grep -rnE "3\.7|debian:buster" .github/workflows/returns nothing.package.yamlno longer references a phantom matrix.requires-python = ">=3.9"; matrix floor andrequires-pythonagree at 3.9.Deviations from spec
package.yamlmatrix fix — chose the smaller diff. The spec allowed either (a) adding a single-entrystrategy.matrixor (b) replacing the dangling${{ matrix.python-version }}with a concrete version string, implementer's choice. This PR took (b): pinned"3.12"directly. This job builds+publishes one wheel; it does not need a test matrix, so the concrete pin is the clearer, smaller change.docs_pages_workflow.yml,python-version: ["3.12"]is not consumed by any live step — thesetup-pythonblock that would read it is commented out, so the actual interpreter isdebian:bookworm's systempython3(3.11, installed viaapt-get). Bumping the pin to["3.12"]satisfies the spec's literal ask and removes the3.7EOL reference; bookworm's 3.11 still honorsrequires-python >=3.9, so there is no runtime conflict. This is a pre-existing cosmetic inconsistency (the[3.7]pin was equally decorative), not a regression introduced here. A future cleanup could either drop the unused matrix or re-enablesetup-python— left out of scope for this badge-focused change.Not in this diff (by design — see #198 workstreams 3 & 4)
master(git push origin --delete master) is a land-time remote op, not a commit. Its one unique commitb16c0afis an already-merged PR escape profile comparison utils #118 rename artifact — no work is lost. To be done at land time.gh run list/total_count > 0) can only run after this merges tomain. This is the real proof the badges go green — the issue was triggered by zero historical workflow runs, so watch the Actions tab after merge. If workflows still don't fire, that points to a repo/org Actions setting and warrants a follow-up escalation issue.building/stale after this merges — only its documentation is in scope here. The actual fix needs Quay admin onhdc-workflows(the maintainer already re-enabled themainpush trigger; the README checklist covers the rest).Update: CI revived and surfaced two dormant dep-rot bugs (both fixed here)
Pushing this branch fired GitHub Actions for the first time in the repo's history (
total_count0 → 2) — proving the migration fix works. The initial runs failed, surfacing two long-hidden bugs that were invisible while CI was dead. Both are now fixed and the suite is green (27 passed) on CI's Python 3.11 with the modern pytest/pandas stack:pytest-pep8(abandoned 2014) crashed collection. It declares the legacypytest_collect_file(path, parent)hook signature that modern pytest (≥7) rejects withPluginValidationError— pytest never reached a single test. Removed it (style is already enforced byblack+pre-commit).compute_zscore()built its result frame with no explicit dtype (object under pandas 3.0); assigning it into the enrichment table raised a lossy-setTypeErrorbecause pandas 3.0 dropped silentobject→float64upcasting. Declared the z-score framedtype=floatat construction and cast the destination table to float. Fixestest_cpm_zscore.Verified locally on
python3.11(CI's exact 3.11.15 build) with pytest 9.1.1 / pandas 3.0.3: 27 passed, 0 failed.Additional deviations from spec