From ce6d87f9aa46bb87489ba0018093ed7c734dd035 Mon Sep 17 00:00:00 2001 From: harryswift01 Date: Tue, 29 Sep 2026 10:34:00 +0100 Subject: [PATCH] feat: support python 3.12-3.14 in conda builds via `conda_build_config.yaml` --- .github/workflows/release.yaml | 26 ++++++++++++++---------- .github/workflows/weekly-regression.yaml | 6 ++---- conda-recipe/conda_build_config.yaml | 4 ++++ conda-recipe/meta.yaml | 7 +++---- docs/source/development.rst | 2 +- docs/source/installation.rst | 2 +- pyproject.toml | 2 +- 7 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 conda-recipe/conda_build_config.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3b18f21..4b0f346 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -244,16 +244,16 @@ jobs: conda list conda-build conda build --help - - name: Build package + - name: Build packages shell: bash -l {0} run: | - PKG_PATH=$(conda build conda-recipe \ + conda build conda-recipe \ --output \ --override-channels \ -c conda-forge \ - -c bioconda) + -c bioconda > pkg_paths.txt - echo "PKG_PATH=$PKG_PATH" >> "$GITHUB_ENV" + cat pkg_paths.txt conda build conda-recipe \ --override-channels \ @@ -261,16 +261,20 @@ jobs: -c bioconda \ --no-anaconda-upload - test -f "$PKG_PATH" - echo "Built: $PKG_PATH" + while read -r pkg_path; do + test -f "$pkg_path" + echo "Built: $pkg_path" + done < pkg_paths.txt - name: Upload to Anaconda shell: bash -l {0} env: ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_TOKEN }} run: | - anaconda \ - -t "$ANACONDA_API_TOKEN" \ - upload "$PKG_PATH" \ - --user CCPBioSim \ - --force + while read -r pkg_path; do + anaconda \ + -t "$ANACONDA_API_TOKEN" \ + upload "$pkg_path" \ + --user CCPBioSim \ + --force + done < pkg_paths.txt diff --git a/.github/workflows/weekly-regression.yaml b/.github/workflows/weekly-regression.yaml index 8f6f3c1..98aedeb 100644 --- a/.github/workflows/weekly-regression.yaml +++ b/.github/workflows/weekly-regression.yaml @@ -14,14 +14,13 @@ concurrency: jobs: regression: - name: SIST Regression (${{ matrix.os }}, Python ${{ matrix.python-version }}) + name: SIST Regression (${{ matrix.os }}) runs-on: ${{ matrix.os }} - timeout-minutes: 30 + timeout-minutes: 90 strategy: fail-fast: false matrix: os: [ubuntu-26.04, macos-26-intel, macos-26] - python-version: ["3.12", "3.13", "3.14"] steps: - name: Checkout @@ -52,5 +51,4 @@ jobs: --override-channels \ -c conda-forge \ -c bioconda \ - --python ${{ matrix.python-version }} \ --no-anaconda-upload diff --git a/conda-recipe/conda_build_config.yaml b/conda-recipe/conda_build_config.yaml new file mode 100644 index 0000000..a3733e7 --- /dev/null +++ b/conda-recipe/conda_build_config.yaml @@ -0,0 +1,4 @@ +python: + - "3.12" + - "3.13" + - "3.14" diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 6e4fa95..f37b307 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -17,21 +17,20 @@ requirements: - make host: - - python >=3.12 + - python - pip - setuptools >=77,<84 run: - - python >=3.12 + - python >=3.12,<3.15 - biopython >=1.85,<2.0 - beautifulsoup4 >=4.12,<5.0 - irf >=3.09,<3.10 test: requires: - - python >=3.12 + - python - pytest >=9,<10 - source_files: - tests - pyproject.toml diff --git a/docs/source/development.rst b/docs/source/development.rst index 16ff24f..efcf8d6 100644 --- a/docs/source/development.rst +++ b/docs/source/development.rst @@ -25,7 +25,7 @@ Source tests The pytest suite validates command-line behaviour and the maintained scientific reference outputs. -Python 3.12 or later is supported for source testing. A direct source test run +Python 3.12, 3.13, or 3.14 is supported for source testing. A direct source test run also requires: * GNU Make diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 874b825..0ba02e3 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -60,7 +60,7 @@ A source build requires: * a C++ compiler * GNU Make -* Python 3.12 or later +* Python 3.12, 3.13, or 3.14 * IRF 3.09 available as ``irf`` on ``PATH`` Build both C++ components from the repository root: diff --git a/pyproject.toml b/pyproject.toml index 020d352..e6cdc17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "SIST" dynamic = ["version"] description = "Stress-Induced Structural Transitions in superhelical DNA." readme = "README.md" -requires-python = ">=3.12" +requires-python = ">=3.12,<3.15" dependencies = [ "biopython>=1.85,<2.0", "beautifulsoup4>=4.12,<5.0",