diff --git a/.github/workflows/coveralls-main.yaml b/.github/workflows/coveralls-main.yaml index e3317d6f..73227ab4 100644 --- a/.github/workflows/coveralls-main.yaml +++ b/.github/workflows/coveralls-main.yaml @@ -16,7 +16,7 @@ concurrency: jobs: coveralls: name: Build main coverage baseline - uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read checks: write @@ -26,6 +26,4 @@ jobs: package: CodeEntropy test-path: tests/unit os: '["ubuntu-26.04"]' - python-versions: '["3.15"]' - coverage-python-version: "3.15" timeout-minutes: 30 diff --git a/.github/workflows/dependency-floors.yaml b/.github/workflows/dependency-floors.yaml deleted file mode 100644 index 5d578e4c..00000000 --- a/.github/workflows/dependency-floors.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Dependency Floors - -on: - schedule: - - cron: '0 8 * * 1' - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: dependency-floors-${{ github.ref }} - cancel-in-progress: true - -jobs: - lowest: - name: Lowest dependencies - uses: CCPBioSim/.github/.github/workflows/ci-lowest-dependencies.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 - permissions: - contents: read - with: - test-path: tests/unit - os: '["ubuntu-26.04", "macos-26", "windows-2025-vs2026"]' - timeout-minutes: 30 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index eaaace5d..3fe0aae2 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -13,7 +13,7 @@ concurrency: jobs: unit: name: Unit - uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read checks: write @@ -21,17 +21,7 @@ jobs: pull-requests: write with: package: CodeEntropy - test-path: tests/unit - os: '["ubuntu-24.04", "macos-26", "windows-2025-vs2026"]' - coverage-python-version: "3.15" - timeout-minutes: 25 - - lowest-dependencies: - name: Lowest dependencies - uses: CCPBioSim/.github/.github/workflows/ci-lowest-dependencies.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 - permissions: - contents: read - with: + lowest-dependencies-check: true test-path: tests/unit os: '["ubuntu-24.04", "macos-26", "windows-2025-vs2026"]' timeout-minutes: 25 @@ -107,19 +97,17 @@ jobs: docs: name: Docs needs: unit - uses: CCPBioSim/.github/.github/workflows/ci-docs.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-docs.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: - python-versions: '["3.15"]' timeout-minutes: 25 pre-commit: name: Pre-commit needs: unit - uses: CCPBioSim/.github/.github/workflows/ci-pre-commit.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-pre-commit.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: - python-version: "3.15" timeout-minutes: 15 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6f108022..9198b99d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,7 +18,7 @@ permissions: jobs: prepare: name: Prepare - uses: CCPBioSim/.github/.github/workflows/release-prepare.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/release-prepare.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: write pull-requests: write @@ -40,7 +40,7 @@ jobs: website: name: Website needs: prepare - uses: CCPBioSim/.github/.github/workflows/release-website.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/release-website.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: @@ -53,7 +53,7 @@ jobs: pypi: name: PyPI needs: prepare - uses: CCPBioSim/.github/.github/workflows/release-pypi.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/release-pypi.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: @@ -65,7 +65,7 @@ jobs: conda: name: Conda needs: prepare - uses: CCPBioSim/.github/.github/workflows/release-conda.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/release-conda.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: diff --git a/.github/workflows/update-copyright-years-in-license-file.yaml b/.github/workflows/update-copyright-years-in-license-file.yaml index 54677d54..4089bff3 100644 --- a/.github/workflows/update-copyright-years-in-license-file.yaml +++ b/.github/workflows/update-copyright-years-in-license-file.yaml @@ -10,7 +10,7 @@ permissions: jobs: update-license-year: - uses: CCPBioSim/.github/.github/workflows/maintenance-license-year.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/maintenance-license-year.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: write pull-requests: write diff --git a/.github/workflows/weekly-docs.yaml b/.github/workflows/weekly-docs.yaml index 32daa71f..2495a1d7 100644 --- a/.github/workflows/weekly-docs.yaml +++ b/.github/workflows/weekly-docs.yaml @@ -15,7 +15,7 @@ concurrency: jobs: docs: name: Docs build - uses: CCPBioSim/.github/.github/workflows/ci-docs.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-docs.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read with: diff --git a/.github/workflows/daily.yaml b/.github/workflows/weekly-tests.yaml similarity index 73% rename from .github/workflows/daily.yaml rename to .github/workflows/weekly-tests.yaml index e319e712..c22ecde6 100644 --- a/.github/workflows/daily.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -1,21 +1,21 @@ -name: Daily Unit Tests +name: Weekly Unit Tests on: schedule: - - cron: '0 8 * * 1-5' + - cron: '0 8 * * 1' workflow_dispatch: permissions: contents: read concurrency: - group: daily-${{ github.ref }} + group: weekly-tests-${{ github.ref }} cancel-in-progress: true jobs: unit: name: Unit - uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@116d539cf0864af72d33dce047313ca6fc624ccd # 0.4.0 + uses: CCPBioSim/.github/.github/workflows/ci-test-python.yaml@f4cec1ba490b4461bfbcfd6362a8587678908a7d # 0.12.0 permissions: contents: read checks: write @@ -23,6 +23,7 @@ jobs: pull-requests: write with: package: CodeEntropy + lowest-dependencies-check: true test-path: tests/unit os: '["ubuntu-24.04", "macos-26", "windows-2025-vs2026"]' coverage: false diff --git a/README.md b/README.md index 9a2c4107..fe9ae7fd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ CodeEntropy | Category | Badges | |----------------|--------| -| **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Daily Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/daily.yaml) [![Dependency Floors](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/dependency-floors.yaml) | +| **Build** | [![PR Checks](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/pr.yaml) [![Weekly Tests](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-tests.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-tests.yaml) | | **Regression** | [![Weekly Regression](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-regression.yaml) | | **Documentation** | [![Weekly Docs](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml/badge.svg)](https://github.com/CCPBioSim/CodeEntropy/actions/workflows/weekly-docs.yaml) [![Docs - Status](https://app.readthedocs.org/projects/codeentropy/badge/?version=latest)](https://codeentropy.readthedocs.io/en/latest/?badge=latest) | | **Citation** | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17570721.svg)](https://doi.org/10.5281/zenodo.17570721) | diff --git a/docs/developer_guide.rst b/docs/developer_guide.rst index f36171c5..96589609 100644 --- a/docs/developer_guide.rst +++ b/docs/developer_guide.rst @@ -159,15 +159,12 @@ Pull Request checks include: - Documentation build - Pre-commit validation -Daily workflow: - -- Runs automated test validation - Weekly workflows: +- Unit tests on Linux, macOS, and Windows, including the dependency floor checks + (see :ref:`dependency-policy`) - Full regression suite including slow tests - Documentation build across all Python versions -- Dependency floor checks (see :ref:`dependency-policy`) CI also caches regression datasets to improve performance. @@ -181,10 +178,10 @@ bound (floor) is the oldest release CodeEntropy is known to work with, so that i stays installable alongside other scientific packages. Floors are only raised when the code needs a newer release. Upper bounds are widened by Renovate. -The ``lowest-dependencies`` job in the pull request workflow and the weekly -``dependency-floors.yaml`` workflow check this. They check that the lowest -allowed versions resolve to installable wheels on each platform and Python -version, and that the unit tests pass with them installed. +The unit jobs in the pull request and weekly workflows check this. After the +normal tests, each job reinstalls the lowest allowed versions of the direct +dependencies and runs the unit tests again, which checks that they resolve to +installable wheels on each platform and Python version and that the tests pass. Run the same checks locally with `uv `_::