Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
CI/CD workflows, automation, security scanning, and package distribution.

## Workflows
All build/test workflows cover Python 3.10-3.15 plus free-threaded 3.14t.
All build/test workflows cover Python 3.10-3.15 plus free-threaded 3.14t and 3.15t.

- **conda-package.yml** — main build/test pipeline (Linux/Windows)
- **conda-package-cf.yml** — build/test using only conda-forge channel (Linux/Windows)
Expand All @@ -17,9 +17,9 @@ All build/test workflows cover Python 3.10-3.15 plus free-threaded 3.14t.
- Keep build matrix (Python versions, platforms) in workflow files only
- Required checks: conda build + test on supported Python versions/platforms in CI
- Python 3.14 is expressed as two `include` rows carrying `python_spec` (`3.14.* *_cp314` and `3.14.* *_cp314t`); a bare `--python 3.14` has been observed to select the free-threaded ABI and must not be relied on
- Python 3.15 is GIL-only for now (conda-forge's `python315` migration ships `*_cp315` but not `*_cp315t`); conda jobs pin the ABI explicitly with `python_spec: '3.15.* *_cp315'` to stay robust if a free-threaded `3.15t` build appears later
- Python 3.15 follows the same pattern as 3.14: two `include` rows with `python_spec` `3.15.* *_cp315` and `3.15.* *_cp315t`
- `include` rows create new matrix combinations and inherit nothing, so `experimental` must be repeated wherever the job reads them
- Artifact naming: `$PACKAGE_NAME $OS Python $VERSION`, where `$VERSION` is `python_tag` (`3.14`, `3.14t`, or `3.15`) when set, otherwise `python`
- Artifact naming: `$PACKAGE_NAME $OS Python $VERSION`, where `$VERSION` is `python_tag` (`3.14`, `3.14t`, `3.15`, or `3.15t`) when set, otherwise `python`
- Channels: `conda-forge`, Intel channel

## Security
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/build-with-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15", "3.15t"]

env:
ONEAPI_ROOT: /opt/intel/oneapi
Expand Down Expand Up @@ -48,8 +48,6 @@ jobs:
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python }}
# allow the 3.15 release candidate until 3.15 is final
allow-prereleases: true
architecture: x64

- name: Checkout repo
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/build-with-standard-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15", "3.15t"]

env:
COMPILER_ROOT: /usr/bin
Expand All @@ -39,8 +39,6 @@ jobs:
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python }}
# allow the 3.15 release candidate until 3.15 is final
allow-prereleases: true
architecture: x64

- name: Checkout repo
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/build_pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ jobs:
python_spec: '3.14.* *_cp314t'
- python: '3.15'
python_spec: '3.15.* *_cp315'
- python: '3.15'
python_spec: '3.15.* *_cp315t'

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -37,8 +39,7 @@ jobs:
- uses: conda-incubator/setup-miniconda@be893c923ea9cf1cf7cd510fbdde27c7e18cbdcb # v4.1.0
with:
miniforge-version: latest
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
channels: conda-forge
activate-environment: test
python-version: ${{ matrix.python }}

Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/conda-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ jobs:
- python: '3.15'
python_spec: '3.15.* *_cp315'
python_tag: '3.15'
- python: '3.15'
python_spec: '3.15.* *_cp315t'
python_tag: '3.15t'

runs-on: ${{ inputs.runs-on }}
timeout-minutes: 15
Expand All @@ -81,8 +84,7 @@ jobs:
with:
miniforge-version: latest
activate-environment: ${{ env.build-env-name }}
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
channels: conda-forge
python-version: ${{ matrix.python }}

- name: Cache conda packages
Expand Down Expand Up @@ -149,6 +151,9 @@ jobs:
- python: '3.15'
python_spec: '3.15.* *_cp315'
python_tag: '3.15'
- python: '3.15'
python_spec: '3.15.* *_cp315t'
python_tag: '3.15t'

runs-on: ${{ inputs.runs-on }}
timeout-minutes: 15
Expand All @@ -174,8 +179,7 @@ jobs:
uses: conda-incubator/setup-miniconda@be893c923ea9cf1cf7cd510fbdde27c7e18cbdcb # v4.1.0
with:
miniforge-version: latest
# python_rc label carries the 3.15 release candidate; drop once 3.15 is final
channels: conda-forge,conda-forge/label/python_rc
channels: conda-forge
activate-environment: ${{ env.test-env-name }}
python-version: ${{ matrix.python }}

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/conda-package-cf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
conda-subdir: linux-64
pkgs-dir: /home/runner/conda_pkgs_dir
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
channels-list: -c conda-forge --override-channels
recipe-dir: conda-recipe-cf

windows:
Expand All @@ -31,7 +31,7 @@ jobs:
runs-on: windows-latest
conda-subdir: win-64
pkgs-dir: D:\conda_pkgs_dir
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
channels-list: -c conda-forge --override-channels
recipe-dir: conda-recipe-cf

osx:
Expand All @@ -41,5 +41,5 @@ jobs:
runs-on: macos-26-intel
conda-subdir: osx-64
pkgs-dir: /Users/runner/conda_pkgs_dir
channels-list: -c conda-forge -c conda-forge/label/python_rc --override-channels
channels-list: -c conda-forge --override-channels
recipe-dir: conda-recipe-cf
4 changes: 2 additions & 2 deletions .github/workflows/conda-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
conda-subdir: linux-64
pkgs-dir: /home/runner/conda_pkgs_dir
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels
recipe-dir: conda-recipe
build-wheels: true

Expand All @@ -32,6 +32,6 @@ jobs:
runs-on: windows-latest
conda-subdir: win-64
pkgs-dir: D:\conda_pkgs_dir
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels
channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels
recipe-dir: conda-recipe
build-wheels: true
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ python -m pip install --no-deps --no-build-isolation .

## CI/CD
- **Platforms in CI workflows:** Linux, Windows, macOS (conda-forge workflow only)
- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t
- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t and 3.15t
- **Python 3.14 ABI selection:** conda jobs must request an explicit ABI, `3.14.* *_cp314` (GIL) or `3.14.* *_cp314t` (free-threaded). Once the recipes stopped constraining `python-gil`, a bare `--python 3.14` was observed to resolve to the free-threaded build, so it must not be relied on.
- **Python 3.15:** GIL-only for now; conda-forge's `python315` migration provides `*_cp315` but no free-threaded `*_cp315t` yet. Conda jobs pin `3.15.* *_cp315` explicitly for the same ABI-selection reason as 3.14.
- **Python 3.15 ABI selection:** same as 3.14; conda jobs request `3.15.* *_cp315` (GIL) or `3.15.* *_cp315t` (free-threaded) explicitly.
- **Workflows:** `.github/workflows/`
- `conda-package.yml` — main conda build/test pipeline
- `conda-package-cf.yml` — conda build/test using only conda-forge channel
Expand Down
2 changes: 1 addition & 1 deletion conda-recipe/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Conda package build recipe for conda-forge and Intel channel distribution.

## Build configuration
- **Channels:** `conda-forge`, Intel channel
- **Python versions in CI build matrix:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t
- **Python versions in CI build matrix:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, and free-threaded 3.14t and 3.15t
- **Compilers:** pinned via `conda_build_config.yaml` (GCC/GXX on Linux, VS2022 on Windows)
- **Dependencies:** `mkl` (runtime), `mkl-devel` (build), `cython >=3.1.0`

Expand Down
Loading