Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
7af1fc7
Enable free-threaded CPython support
vlad-perevezentsev Aug 12, 2026
ac81826
Update conda recipes for free-threaded builds
vlad-perevezentsev Aug 12, 2026
dd3c9c9
Extend GH workflow matrices with free-threaded Python 3.14t
vlad-perevezentsev Aug 12, 2026
9b41e87
Add free-threading test for mkl_random
vlad-perevezentsev Aug 12, 2026
4de50eb
Update README build deps to cython>=3.1.0
vlad-perevezentsev Aug 12, 2026
8e5a8e5
Add a missing continue-on-error to conda-package.yml
vlad-perevezentsev Aug 12, 2026
4b9cfe7
Add gh-159 to CHANGELOG.md
vlad-perevezentsev Aug 12, 2026
be5c348
Create fresh Windows test env for cp314t
vlad-perevezentsev Aug 12, 2026
bebcecf
Merge branch 'master' into enable-free-threaded-python
ndgrigorian Aug 18, 2026
75e1e16
Merge remote-tracking branch 'origin/master' into enable-free-threade…
vlad-perevezentsev Sep 7, 2026
33e696b
Fix data races in unguarded RNG methods under free-threading
vlad-perevezentsev Sep 7, 2026
5d86442
Add shared-stream race regression test for free-threading
vlad-perevezentsev Sep 7, 2026
176e05c
Merge remote-tracking branch 'origin/enable-free-threaded-python' int…
vlad-perevezentsev Sep 7, 2026
a6d8a29
Fix re-entrancy deadlocks in shuffle and _seed_impl
vlad-perevezentsev Sep 9, 2026
09e4cff
Lock size=None sampling paths and cover them with a multiset test
vlad-perevezentsev Sep 9, 2026
8b746d4
Make get_state atomic against concurrent BRNG changes
vlad-perevezentsev Sep 9, 2026
4a0fb51
Fix MKL stream leak in irk_set_state_mkl
vlad-perevezentsev Sep 9, 2026
5d111e5
Make GIL-import test robust to PYTHON_GIL
vlad-perevezentsev Sep 9, 2026
6e13efd
Remove dead dummy_threading import fallback
vlad-perevezentsev Sep 9, 2026
5d6d26d
Add TODO for uninitialized vslSaveStreamM save bytes
vlad-perevezentsev Sep 9, 2026
548d625
Fix memory leak in irk_logseries_vec
vlad-perevezentsev Sep 9, 2026
c14aa6c
Emit patch print/warn outside the instance lock
vlad-perevezentsev Sep 9, 2026
c322bbf
Fix _seed_impl re-entrancy by coercing the seed outside the lock
vlad-perevezentsev Sep 10, 2026
5fba730
Strengthen free-threading tests per review
vlad-perevezentsev Sep 10, 2026
dd3b15d
Hash the brng name outside the lock in set_state
vlad-perevezentsev Sep 10, 2026
2c8907d
Grow the get_state buffer until it fits
vlad-perevezentsev Sep 10, 2026
3fd62ab
Extend test to cover all size=None distribution
vlad-perevezentsev Sep 10, 2026
fd1b156
Verify Py_GIL_DISABLED matches the target in build_pip
vlad-perevezentsev Sep 10, 2026
90e9cb2
Add a thread-safety section to the how-to guide
vlad-perevezentsev Sep 10, 2026
590e460
Add generated mklrand.cpp to .gitignore
vlad-perevezentsev Sep 10, 2026
a100725
Re-lock shuffles typed fast path
vlad-perevezentsev Sep 10, 2026
552d01b
Make set_state atomic on a BRNG-name mismatch
vlad-perevezentsev Sep 10, 2026
65a4a69
Make the size=None race test reliably catch a dropped lock
vlad-perevezentsev Sep 10, 2026
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
4 changes: 2 additions & 2 deletions .github/workflows/build-with-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
numpy_version: ["'numpy>=2'"]
env:
ONEAPI_ROOT: /opt/intel/oneapi
Expand Down Expand Up @@ -55,7 +55,7 @@ jobs:

- name: Install mkl_random dependencies
run: |
pip install meson-python ninja cython cmake
pip install meson-python ninja "cython>=3.1.0" cmake
pip install ${{ matrix.numpy_version }}

- name: List oneAPI folder content
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-with-standard-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
numpy_version: ["'numpy>=2'"]

env:
Expand Down Expand Up @@ -49,7 +49,7 @@ jobs:

- name: Install mkl_random dependencies
run: |
pip install meson-python ninja cmake cython mkl-devel
pip install meson-python ninja cmake "cython>=3.1.0" mkl-devel
pip install ${{ matrix.numpy_version }}

- name: Build mkl_random
Expand Down
43 changes: 40 additions & 3 deletions .github/workflows/build_pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,35 @@ permissions:

jobs:
build:
name: build (${{ matrix.python_tag || matrix.python }}${{ matrix.use_pre != '' && ', pre' || '' }})
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}

strategy:
matrix:
python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python: ["3.10", "3.11", "3.12", "3.13"]
use_pre: ["", "--pre"]
include:
- python: "3.14"
python_tag: "3.14"
python_spec: "3.14.* *_cp314"
use_pre: ""
- python: "3.14"
python_tag: "3.14"
python_spec: "3.14.* *_cp314"
use_pre: "--pre"
- python: "3.14"
python_tag: "3.14t"
python_spec: "3.14.* *_cp314t"
free_threaded: "true"
use_pre: ""
- python: "3.14"
python_tag: "3.14t"
python_spec: "3.14.* *_cp314t"
free_threaded: "true"
use_pre: "--pre"

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -36,11 +56,28 @@ jobs:

- name: Install MKL
run: |
conda install mkl-devel
conda install mkl-devel "python=${{ matrix.python_spec || matrix.python }}"

- name: Verify GIL vs free-threaded ABI
env:
EXPECT_FREE_THREADED: ${{ matrix.free_threaded || '' }}
run: |
python - <<'PY'
import os, sys, sysconfig
gil_disabled = bool(sysconfig.get_config_var("Py_GIL_DISABLED"))
expected = bool(os.environ.get("EXPECT_FREE_THREADED"))
assert gil_disabled == expected, (
f"ABI mismatch: Py_GIL_DISABLED={gil_disabled}, expected "
f"free-threaded={expected}; the conda ABI swap did not take effect"
)
if expected:
assert not sys._is_gil_enabled(), "GIL re-enabled on free-threaded build"
print(f"OK: Py_GIL_DISABLED={gil_disabled}")
PY

- name: Build with pip
run: |
pip install --no-cache-dir meson-python ninja cmake cython
pip install --no-cache-dir meson-python ninja cmake "cython>=3.1.0"
pip install --no-cache-dir numpy ${{ matrix.use_pre }}
pip install -e . --no-build-isolation --no-deps --verbose
pip install --no-cache-dir pytest
Expand Down
93 changes: 64 additions & 29 deletions .github/workflows/conda-package-cf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

steps:
- name: Cancel Previous Runs
Expand All @@ -54,9 +60,9 @@ jobs:
with:
path: ~/.conda/pkgs
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('**/meta.yaml') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Add conda to system path
Expand All @@ -68,7 +74,7 @@ jobs:
- name: Build conda package
run: |
CHANNELS=(-c conda-forge --override-channels)
VERSIONS=(--python "${{ matrix.python }}" --numpy "${{ matrix.numpy }}")
VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}")
TEST=(--no-test)

conda build \
Expand All @@ -80,7 +86,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}
path: /usr/share/miniconda/conda-bld/linux-64/${{ env.PACKAGE_NAME }}-*.conda

build_windows:
Expand All @@ -101,6 +107,12 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

env:
conda-bld: C:\Miniconda\conda-bld\win-64\
Expand Down Expand Up @@ -130,9 +142,9 @@ jobs:
with:
path: /home/runner/conda_pkgs_dir
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('**/meta.yaml') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Store conda paths as envs
Expand All @@ -146,12 +158,12 @@ jobs:
conda list -n base

- name: Build conda package
run: conda build --no-test --python ${{ matrix.python }} --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf
run: conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf

- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}
path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda

test_linux:
Expand All @@ -171,6 +183,12 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

env:
CHANNELS: -c conda-forge --override-channels
Expand All @@ -179,7 +197,7 @@ jobs:
- name: Download artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}

- name: Add conda to system path
run: echo "$CONDA/bin" >> "$GITHUB_PATH"
Expand All @@ -202,7 +220,7 @@ jobs:
. "$CONDA/etc/profile.d/conda.sh"
PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")"
export PACKAGE_VERSION
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile
cat lockfile

- name: Set pkgs_dirs
Expand All @@ -216,17 +234,17 @@ jobs:
with:
path: ~/.conda/pkgs
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Install mkl_random
run: |
. "$CONDA/etc/profile.d/conda.sh"
PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")"
export PACKAGE_VERSION
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels
# Test installed packages
conda list

Expand Down Expand Up @@ -255,6 +273,12 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

env:
CHANNELS: -c conda-forge --override-channels
Expand All @@ -263,14 +287,13 @@ jobs:
- name: Download artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}

- uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
miniforge-version: latest
channels: conda-forge
activate-environment: ${{ env.TEST_ENV_NAME }}
python-version: ${{ matrix.python }}
activate-environment: base

- name: Install conda-index
run: |
Expand All @@ -295,7 +318,7 @@ jobs:
FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO (
SET PACKAGE_VERSION=%%F
)
conda install -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% python=${{ matrix.python }} numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile
conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% "python=${{ matrix.python_spec || matrix.python }}" numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile

- name: Cache conda packages
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand All @@ -304,9 +327,9 @@ jobs:
with:
path: /home/runner/conda_pkgs_dir
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Install mkl_random
Expand All @@ -318,7 +341,7 @@ jobs:
FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO (
SET PACKAGE_VERSION=%%F
)
conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest python=${{ matrix.python }} numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }}
conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest "python=${{ matrix.python_spec || matrix.python }}" numpy=${{ matrix.numpy }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }}
# Test installed packages
conda list

Expand All @@ -342,6 +365,12 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

steps:
- name: Cancel Previous Runs
Expand All @@ -368,9 +397,9 @@ jobs:
with:
path: /Users/runner/conda_pkgs_dir
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('**/meta.yaml') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Install conda-build
Expand All @@ -388,7 +417,7 @@ jobs:
shell: bash -el {0}
run: |
CHANNELS=(-c conda-forge --override-channels)
VERSIONS=(--python "${{ matrix.python }}" --numpy "${{ matrix.numpy }}")
VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}")
TEST=(--no-test)

conda build \
Expand All @@ -400,7 +429,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}
path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda

test_osx:
Expand All @@ -419,12 +448,18 @@ jobs:
numpy: "2.3"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314"
python_tag: "3.14"
- python: "3.14"
numpy: "2.3"
python_spec: "3.14.* *_cp314t"
python_tag: "3.14t"

steps:
- name: Download artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }}
name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }}

- uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
Expand Down Expand Up @@ -452,7 +487,7 @@ jobs:
run: |
PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")"
export PACKAGE_VERSION
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels --only-deps --dry-run > lockfile
cat lockfile

- name: Cache conda packages
Expand All @@ -462,17 +497,17 @@ jobs:
with:
path: /Users/runner/conda_pkgs_dir
key:
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }}
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }}
restore-keys: |
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-
${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-

- name: Install mkl_random
shell: bash -el {0}
run: |
PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")"
export PACKAGE_VERSION
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels
conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" pytest "python=${{ matrix.python_spec || matrix.python }}" "numpy=${{ matrix.numpy }}" -c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels
# Test installed packages
conda list -n "${{ env.TEST_ENV_NAME }}"

Expand Down
Loading
Loading