Skip to content

v0.1.16

@dbolser dbolser tagged this 26 May 16:34
* Fix package.yml CI failures

- Update macOS runners: macOS-11 → macos-13 (x86_64), macos-14 (arm64)
  (macOS-11 runners are deprecated, causing 24h timeout failures)
- Remove deprecated actions-rs/toolchain@v1 (Rust not needed for Python/Cython)
- Fix sdist artifact name: was using matrix.python-tag in a non-matrix job
- Fix test-sdist to download the sdist artifact by its correct name
- Fix upload job: download wheel artifacts by pattern (wheels-*) and sdist separately
- Add cp313 (Python 3.13) to all build matrices
- Update docker/setup-qemu-action v2 → v3

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Pin manylinux images to 2026.04.24-1

The default image tag from cibuildwheel v2.23.1 (2025.03.09-1) was
intermittently returning 504s from quay.io. Pin to a recent stable tag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Opt into Node.js 24 for GitHub Actions

actions/checkout, setup-python, upload-artifact are dropping Node.js 20
support on 2026-06-02. Opt in early via FORCE_JAVASCRIPT_ACTIONS_TO_NODE24.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Update GitHub Actions to Node.js 24 compatible versions

checkout v4→v6, setup-python v5→v6, upload-artifact v4→v7,
setup-qemu-action v3→v4. Drops the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24
workaround added in the previous commit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Update actions/download-artifact v4 → v8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Improve runner selection

- Linux aarch64: switch from ubuntu-22.04+QEMU to native ubuntu-24.04-arm
  runners, eliminating emulation overhead and dropping setup-qemu-action
- Windows: windows-2019 → windows-2022 for newer tooling
- sdist/test-sdist/upload: pin ubuntu-latest → ubuntu-24.04 for consistency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Upgrade cibuildwheel v2.23.1 → v3.4.1

v2 bundles actions/setup-python@v5 internally which is deprecated.
v3.4.1 uses setup-python@v6 and supports Node.js 24.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* just trying for fun...

* Fix duplicate job ID and tidy user edits

- Rename duplicate wheel-macos-aarch64 jobs to wheel-macos-aarch64-m14
  and wheel-macos-aarch64-m15 (duplicate keys are silently dropped by YAML)
- Fix inconsistent comment indentation in macos x86_64 matrix
- Update upload job needs to reference both aarch64 jobs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Initial plan

* Split package workflow: remove macos-x86_64 from package.yml, create package-legacy.yml

Agent-Logs-Url: https://github.com/dbolser/fishers_exact_test/sessions/1db30a72-e24a-4f96-b4e5-6570ee659ab8

Co-authored-by: dbolser <128659+dbolser@users.noreply.github.com>

* Test upload to fisher-dbolser-test on PyPI

- Rename package to fisher-dbolser-test for test upload
- Switch upload job to Trusted Publishing (OIDC), dropping the API token

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Remove deprecated License classifier from setup.py

Same issue as pyproject.toml - newer setuptools errors on License ::
classifiers when an SPDX expression is already present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix test-sdist to use renamed package fisher-dbolser-test

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* still trying my best

* Feature/use uv (#3)

* Add [project] table to pyproject.toml for uv compatibility

The pyproject.toml was missing the [project] table required by uv,
containing only [build-system]. Added project metadata (name, version,
description, authors, dependencies) and a dev dependency group with
pytest.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove generated Cython file from version control

src/cfisher.c is generated by Cython at build time and should not be
tracked. It causes large noisy diffs on every build due to different
Cython versions and embeds local filesystem paths in its metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* updating according to PR feedback

Summary of changes:
  - version = "0.0.0" → dynamic = ["version"] — versioneer now drives it via [tool.versioneer]
  - [tool.versioneer] added, migrated from setup.cfg (which no longer has the [versioneer] section)
  - [dependency-groups] → [project.optional-dependencies] — the former is a uv-specific extension, the latter is standard PEP 621
  - Added classifiers (Python 2 classifier dropped — contradicted requires-python = ">=3.8")
  - Added [project.urls]

* more tweaking

* Merge pull request #4 from dbolser/feature/use-uv-adding-tests

Feature/use uv adding tests

* Add lightweight test workflow for PRs and pushes to main/master

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Bump setup-uv v6 -> v8 (Node.js 24 compatible)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix setup-uv version to v8.1.0 (full tag required)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* Disable uv cache to prevent stale compiled Cython extension in CI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add workflow_dispatch trigger to test workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add workflow_dispatch to package.yml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Force-rebuild Cython extension in test CI to avoid stale .so

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Replace __richcmp__ with individual comparison methods to fix TypeError propagation

Python's comparison slot machinery intercepts TypeError raised inside Cython's
__richcmp__ and re-raises it as Exception, breaking the test-sdist CI job.
Using __lt__, __le__, etc. avoids this interception.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix version inconsistency in pyproject.toml that caused pip to fall back to PyPI

pyproject.toml had version = "0.0.0" but versioneer derives the real version
dynamically. pip discarded the local sdist as "inconsistent" and downloaded an
old release from PyPI with the old Exception-raising code. Switching to
dynamic = ["version"] lets setuptools read the version from setup.py via
versioneer. Also removed cython from runtime dependencies (it is build-only).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Release v0.1.16

Changes since v0.1.15 (brentp/fishers_exact_test):

- Rename package to fisher-dbolser-test and publish on PyPI
- Add full CI/CD pipeline: test workflow (uv, pytest) and package workflow
  (cibuildwheel for Linux x86_64/aarch64, macOS arm64, Windows; sdist + upload)
- Remove pre-compiled cfisher.c from version control; build fresh from .pyx in CI
- Replace deprecated Cython __richcmp__ with individual comparison methods
  (__lt__, __le__, __eq__, __ne__, __gt__, __ge__) so TypeError propagates
  correctly when comparing PValues objects directly
- Fix pyproject.toml to use dynamic version via versioneer (was hardcoded 0.0.0,
  causing pip to discard the local sdist and fall back to stale PyPI releases)
- Add comprehensive test suite (tests/test_fisher.py, 55 tests)
- Drop Python 3.7 (EOL); minimum is now Python 3.8
- Drop macOS x86_64 wheels (no hosted runner available on GHA)
- Upgrade cibuildwheel to v3.4.1 and all GitHub Actions to Node.js 24

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Address PR feedback on pyproject.toml and PValues equality

- Add BSD license classifier to pyproject.toml
- Move [dependency-groups] into [project.optional-dependencies] dev
  (dependency-groups is uv-specific / PEP 735 draft, not yet standard)
- Remove __eq__ and __ne__ from PValues; ordering operators still raise
  TypeError to prevent p < 0.05 mistakes, but equality falls back to
  Python's default identity comparison so p == None and p in list work
- Update test suite to reflect new equality behaviour (56 tests)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix uv sync to include dev extras after moving from dependency-groups

Cython is now in [project.optional-dependencies] dev rather than
[dependency-groups], so uv sync needs --extra dev to include it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix deprecated license fields in pyproject.toml

Switch from table form (license = {text = "BSD"}) to SPDX string
(license = "BSD-3-Clause") and drop the license classifier, both of
which are deprecated in newer setuptools.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* no eggs plz

* putting back to live (#6)

* putting back to live

* addressing PR feedback

* Revert "putting back to live"

This reverts commit 9ac71f3f5edfe0d3c8a8d79a070c9e4ee90f619a.

* prevent testing the wrong release in CI/CD

* Fix project.license format and sdist test install command

- Use {text = "BSD-3-Clause"} table form to support older setuptools in manylinux containers
- Install sdist directly from dist/*.tar.gz instead of --no-index --find-links to allow build deps to be fetched from PyPI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* housekeeping

* trying again...

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fixing the 'install from git' notes.

Final commit I promise.

* Feature/fidgeting (#10)

* fidget

* I'm dumb

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dbolser <128659+dbolser@users.noreply.github.com>
Assets 2
Loading