diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index 10ee3363..4ffd2713 100755
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -24,6 +24,10 @@ jobs:
CONFIG: linux_64_numpy2python3.13.____cp313
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
+ linux_64_numpy2python3.13.____cp313t:
+ CONFIG: linux_64_numpy2python3.13.____cp313t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
linux_aarch64_numpy1.22python3.10.____cpython:
CONFIG: linux_aarch64_numpy1.22python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -40,6 +44,10 @@ jobs:
CONFIG: linux_aarch64_numpy2python3.13.____cp313
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
+ linux_aarch64_numpy2python3.13.____cp313t:
+ CONFIG: linux_aarch64_numpy2python3.13.____cp313t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
linux_ppc64le_numpy1.22python3.10.____cpython:
CONFIG: linux_ppc64le_numpy1.22python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -56,6 +64,10 @@ jobs:
CONFIG: linux_ppc64le_numpy2python3.13.____cp313
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
+ linux_ppc64le_numpy2python3.13.____cp313t:
+ CONFIG: linux_ppc64le_numpy2python3.13.____cp313t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64
timeoutInMinutes: 360
variables: {}
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 1330ca35..4aafe60e 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -20,6 +20,9 @@ jobs:
osx_64_numpy2python3.13.____cp313:
CONFIG: osx_64_numpy2python3.13.____cp313
UPLOAD_PACKAGES: 'True'
+ osx_64_numpy2python3.13.____cp313t:
+ CONFIG: osx_64_numpy2python3.13.____cp313t
+ UPLOAD_PACKAGES: 'True'
osx_arm64_numpy1.22python3.10.____cpython:
CONFIG: osx_arm64_numpy1.22python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -32,6 +35,9 @@ jobs:
osx_arm64_numpy2python3.13.____cp313:
CONFIG: osx_arm64_numpy2python3.13.____cp313
UPLOAD_PACKAGES: 'True'
+ osx_arm64_numpy2python3.13.____cp313t:
+ CONFIG: osx_arm64_numpy2python3.13.____cp313t
+ UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
variables: {}
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index 4e902050..1bb11f90 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -8,17 +8,20 @@ jobs:
vmImage: windows-2022
strategy:
matrix:
- win_64_numpy1.22python3.10.____cpython:
- CONFIG: win_64_numpy1.22python3.10.____cpython
+ win_64_is_freethreadingfalsenumpy1.22python3.10.____cpython:
+ CONFIG: win_64_is_freethreadingfalsenumpy1.22python3.10.____cpython
UPLOAD_PACKAGES: 'True'
- win_64_numpy1.23python3.11.____cpython:
- CONFIG: win_64_numpy1.23python3.11.____cpython
+ win_64_is_freethreadingfalsenumpy1.23python3.11.____cpython:
+ CONFIG: win_64_is_freethreadingfalsenumpy1.23python3.11.____cpython
UPLOAD_PACKAGES: 'True'
- win_64_numpy1.26python3.12.____cpython:
- CONFIG: win_64_numpy1.26python3.12.____cpython
+ win_64_is_freethreadingfalsenumpy1.26python3.12.____cpython:
+ CONFIG: win_64_is_freethreadingfalsenumpy1.26python3.12.____cpython
UPLOAD_PACKAGES: 'True'
- win_64_numpy2python3.13.____cp313:
- CONFIG: win_64_numpy2python3.13.____cp313
+ win_64_is_freethreadingfalsenumpy2python3.13.____cp313:
+ CONFIG: win_64_is_freethreadingfalsenumpy2python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
+ win_64_is_freethreadingtruenumpy2python3.13.____cp313t:
+ CONFIG: win_64_is_freethreadingtruenumpy2python3.13.____cp313t
UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
variables:
diff --git a/.ci_support/linux_64_numpy2python3.13.____cp313t.yaml b/.ci_support/linux_64_numpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..25d7c012
--- /dev/null
+++ b/.ci_support/linux_64_numpy2python3.13.____cp313t.yaml
@@ -0,0 +1,49 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '13'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cdt_name:
+- cos7
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- gxx
+cxx_compiler_version:
+- '13'
+docker_image:
+- quay.io/condaforge/linux-anvil-cos7-x86_64
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '13'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- linux-64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - c_stdlib_version
+ - cdt_name
+- - python
+ - numpy
+ - channel_sources
diff --git a/.ci_support/linux_aarch64_numpy2python3.13.____cp313t.yaml b/.ci_support/linux_aarch64_numpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..58b01cf8
--- /dev/null
+++ b/.ci_support/linux_aarch64_numpy2python3.13.____cp313t.yaml
@@ -0,0 +1,53 @@
+BUILD:
+- aarch64-conda_cos7-linux-gnu
+c_compiler:
+- gcc
+c_compiler_version:
+- '13'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cdt_arch:
+- aarch64
+cdt_name:
+- cos7
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- gxx
+cxx_compiler_version:
+- '13'
+docker_image:
+- quay.io/condaforge/linux-anvil-cos7-x86_64
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '13'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- linux-aarch64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - c_stdlib_version
+ - cdt_name
+- - python
+ - numpy
+ - channel_sources
diff --git a/.ci_support/linux_ppc64le_numpy2python3.13.____cp313t.yaml b/.ci_support/linux_ppc64le_numpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..628a0130
--- /dev/null
+++ b/.ci_support/linux_ppc64le_numpy2python3.13.____cp313t.yaml
@@ -0,0 +1,49 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '13'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cdt_name:
+- cos7
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- gxx
+cxx_compiler_version:
+- '13'
+docker_image:
+- quay.io/condaforge/linux-anvil-cos7-x86_64
+fortran_compiler:
+- gfortran
+fortran_compiler_version:
+- '13'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- linux-ppc64le
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+ - fortran_compiler_version
+- - c_stdlib_version
+ - cdt_name
+- - python
+ - numpy
+ - channel_sources
diff --git a/.ci_support/migrations/python313t.yaml b/.ci_support/migrations/python313t.yaml
new file mode 100644
index 00000000..dc794464
--- /dev/null
+++ b/.ci_support/migrations/python313t.yaml
@@ -0,0 +1,48 @@
+migrator_ts: 1724712608
+__migrator:
+ commit_message: Rebuild for python 3.13 freethreading
+ migration_number: 1
+ operation: key_add
+ primary_key: python
+ ordering:
+ python:
+ - 3.6.* *_cpython
+ - 3.7.* *_cpython
+ - 3.8.* *_cpython
+ - 3.9.* *_cpython
+ - 3.10.* *_cpython
+ - 3.11.* *_cpython
+ - 3.12.* *_cpython
+ - 3.13.* *_cp313 # new entry
+ - 3.13.* *_cp313t # new entry
+ - 3.6.* *_73_pypy
+ - 3.7.* *_73_pypy
+ - 3.8.* *_73_pypy
+ - 3.9.* *_73_pypy
+ paused: true
+ longterm: true
+ pr_limit: 20
+ max_solver_attempts: 3 # this will make the bot retry "not solvable" stuff 12 times
+ exclude:
+ # this shouldn't attempt to modify the python feedstocks
+ - python
+ - pypy3.6
+ - pypy-meta
+ - cross-python
+ - python_abi
+ exclude_pinned_pkgs: false
+ additional_zip_keys:
+ - channel_sources
+ - is_freethreading
+
+python:
+- 3.13.* *_cp313t
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+# additional entries to add for zip_keys
+numpy:
+- 2
+python_impl:
+- cpython
+is_freethreading:
+- true
diff --git a/.ci_support/osx_64_numpy2python3.13.____cp313t.yaml b/.ci_support/osx_64_numpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..b86254d2
--- /dev/null
+++ b/.ci_support/osx_64_numpy2python3.13.____cp313t.yaml
@@ -0,0 +1,44 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '10.13'
+MACOSX_SDK_VERSION:
+- '10.13'
+c_compiler:
+- clang
+c_compiler_version:
+- '17'
+c_stdlib:
+- macosx_deployment_target
+c_stdlib_version:
+- '10.13'
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- clangxx
+cxx_compiler_version:
+- '17'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+macos_machine:
+- x86_64-apple-darwin13.4.0
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- osx-64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+- - python
+ - numpy
+ - channel_sources
diff --git a/.ci_support/osx_arm64_numpy2python3.13.____cp313t.yaml b/.ci_support/osx_arm64_numpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..6810b841
--- /dev/null
+++ b/.ci_support/osx_arm64_numpy2python3.13.____cp313t.yaml
@@ -0,0 +1,44 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '11.0'
+MACOSX_SDK_VERSION:
+- '11.0'
+c_compiler:
+- clang
+c_compiler_version:
+- '17'
+c_stdlib:
+- macosx_deployment_target
+c_stdlib_version:
+- '11.0'
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- clangxx
+cxx_compiler_version:
+- '17'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+macos_machine:
+- arm64-apple-darwin20.0.0
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- osx-arm64
+zip_keys:
+- - c_compiler_version
+ - cxx_compiler_version
+- - python
+ - numpy
+ - channel_sources
diff --git a/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml b/.ci_support/win_64_is_freethreadingfalsenumpy1.22python3.10.____cpython.yaml
similarity index 88%
rename from .ci_support/win_64_numpy1.22python3.10.____cpython.yaml
rename to .ci_support/win_64_is_freethreadingfalsenumpy1.22python3.10.____cpython.yaml
index 3ade8917..ce015195 100644
--- a/.ci_support/win_64_numpy1.22python3.10.____cpython.yaml
+++ b/.ci_support/win_64_is_freethreadingfalsenumpy1.22python3.10.____cpython.yaml
@@ -8,6 +8,8 @@ channel_targets:
- conda-forge main
cxx_compiler:
- vs2019
+is_freethreading:
+- 'false'
libblas:
- 3.9 *netlib
libcblas:
@@ -28,3 +30,4 @@ zip_keys:
- - python
- numpy
- channel_sources
+ - is_freethreading
diff --git a/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml b/.ci_support/win_64_is_freethreadingfalsenumpy1.23python3.11.____cpython.yaml
similarity index 88%
rename from .ci_support/win_64_numpy1.23python3.11.____cpython.yaml
rename to .ci_support/win_64_is_freethreadingfalsenumpy1.23python3.11.____cpython.yaml
index fd5661ac..d06a2833 100644
--- a/.ci_support/win_64_numpy1.23python3.11.____cpython.yaml
+++ b/.ci_support/win_64_is_freethreadingfalsenumpy1.23python3.11.____cpython.yaml
@@ -8,6 +8,8 @@ channel_targets:
- conda-forge main
cxx_compiler:
- vs2019
+is_freethreading:
+- 'false'
libblas:
- 3.9 *netlib
libcblas:
@@ -28,3 +30,4 @@ zip_keys:
- - python
- numpy
- channel_sources
+ - is_freethreading
diff --git a/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml b/.ci_support/win_64_is_freethreadingfalsenumpy1.26python3.12.____cpython.yaml
similarity index 88%
rename from .ci_support/win_64_numpy1.26python3.12.____cpython.yaml
rename to .ci_support/win_64_is_freethreadingfalsenumpy1.26python3.12.____cpython.yaml
index 4259d346..4b502ecd 100644
--- a/.ci_support/win_64_numpy1.26python3.12.____cpython.yaml
+++ b/.ci_support/win_64_is_freethreadingfalsenumpy1.26python3.12.____cpython.yaml
@@ -8,6 +8,8 @@ channel_targets:
- conda-forge main
cxx_compiler:
- vs2019
+is_freethreading:
+- 'false'
libblas:
- 3.9 *netlib
libcblas:
@@ -28,3 +30,4 @@ zip_keys:
- - python
- numpy
- channel_sources
+ - is_freethreading
diff --git a/.ci_support/win_64_numpy2python3.13.____cp313.yaml b/.ci_support/win_64_is_freethreadingfalsenumpy2python3.13.____cp313.yaml
similarity index 89%
rename from .ci_support/win_64_numpy2python3.13.____cp313.yaml
rename to .ci_support/win_64_is_freethreadingfalsenumpy2python3.13.____cp313.yaml
index e0b6f121..581b376e 100644
--- a/.ci_support/win_64_numpy2python3.13.____cp313.yaml
+++ b/.ci_support/win_64_is_freethreadingfalsenumpy2python3.13.____cp313.yaml
@@ -8,6 +8,8 @@ channel_targets:
- conda-forge main
cxx_compiler:
- vs2019
+is_freethreading:
+- 'false'
libblas:
- 3.9 *netlib
libcblas:
@@ -28,3 +30,4 @@ zip_keys:
- - python
- numpy
- channel_sources
+ - is_freethreading
diff --git a/.ci_support/win_64_is_freethreadingtruenumpy2python3.13.____cp313t.yaml b/.ci_support/win_64_is_freethreadingtruenumpy2python3.13.____cp313t.yaml
new file mode 100644
index 00000000..f91cc125
--- /dev/null
+++ b/.ci_support/win_64_is_freethreadingtruenumpy2python3.13.____cp313t.yaml
@@ -0,0 +1,33 @@
+c_compiler:
+- vs2019
+c_stdlib:
+- vs
+channel_sources:
+- conda-forge/label/python_rc,conda-forge/label/cython_dev,conda-forge
+channel_targets:
+- conda-forge main
+cxx_compiler:
+- vs2019
+is_freethreading:
+- 'true'
+libblas:
+- 3.9 *netlib
+libcblas:
+- 3.9 *netlib
+liblapack:
+- 3.9 *netlib
+numpy:
+- '2'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313t
+target_platform:
+- win-64
+zip_keys:
+- - python
+ - numpy
+ - channel_sources
+ - is_freethreading
diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh
index ba4b251c..856f469d 100755
--- a/.scripts/build_steps.sh
+++ b/.scripts/build_steps.sh
@@ -43,6 +43,8 @@ setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
source run_conda_forge_build_setup
+
+
# make the build number clobber
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat
index 65650bf2..a45c34fd 100755
--- a/.scripts/run_win_build.bat
+++ b/.scripts/run_win_build.bat
@@ -24,7 +24,7 @@ set "CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1"
:: Provision the necessary dependencies to build the recipe later
echo Installing dependencies
-mamba.exe install "python=3.10" pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -c conda-forge --strict-channel-priority --yes
+mamba.exe install pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -c conda-forge --strict-channel-priority --yes
if !errorlevel! neq 0 exit /b !errorlevel!
:: Set basic configuration
@@ -48,7 +48,7 @@ if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] (
)
if NOT [%flow_run_id%] == [] (
- set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%"
+ set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%"
)
call :end_group
diff --git a/README.md b/README.md
index 4c1e506f..f0972be7 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,13 @@ Current build status
+