From cfa9d3466e26b8d00572d00f5a84facdcf4b41b0 Mon Sep 17 00:00:00 2001
From: regro-cf-autotick-bot
<36490558+regro-cf-autotick-bot@users.noreply.github.com>
Date: Tue, 10 Feb 2026 06:26:40 +0000
Subject: [PATCH 1/6] Rebuild for python 3.14 freethreading
---
.ci_support/migrations/python314t.yaml | 51 ++++++++++++++++++++++++++
recipe/meta.yaml | 2 +-
2 files changed, 52 insertions(+), 1 deletion(-)
create mode 100644 .ci_support/migrations/python314t.yaml
diff --git a/.ci_support/migrations/python314t.yaml b/.ci_support/migrations/python314t.yaml
new file mode 100644
index 0000000..9fb3334
--- /dev/null
+++ b/.ci_support/migrations/python314t.yaml
@@ -0,0 +1,51 @@
+migrator_ts: 1755739493
+__migrator:
+ commit_message: Rebuild for python 3.14 freethreading
+ migration_number: 1
+ operation: key_add
+ primary_key: python
+ ordering:
+ python:
+ - 3.9.* *_cpython
+ - 3.10.* *_cpython
+ - 3.11.* *_cpython
+ - 3.12.* *_cpython
+ - 3.13.* *_cp313
+ - 3.13.* *_cp313t
+ - 3.14.* *_cp314 # new entry
+ - 3.14.* *_cp314t # new entry
+ 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
+ # if feedstock already has 3.13t migrator this is redundant, but harmless
+ additional_zip_keys:
+ - is_freethreading
+ - is_abi3
+ wait_for_migrators:
+ - python314
+ ignored_deps_per_node:
+ matplotlib:
+ - pyqt
+ pyarrow:
+ # optional test dependencies
+ - numba
+ - sparse
+ allowlist_file: free-threaded-314.txt
+
+python:
+- 3.14.* *_cp314t
+# additional entries to add for zip_keys
+is_freethreading:
+- true
+is_python_min:
+- false
+is_abi3:
+- false
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index b6f4e35..72d27a0 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -20,7 +20,7 @@ source:
- python-hashbang.patch
build:
- number: 4
+ number: 5
requirements:
build:
From 23128bfa94bf3e12bad425eff45fcbc3b0453c41 Mon Sep 17 00:00:00 2001
From: regro-cf-autotick-bot
<36490558+regro-cf-autotick-bot@users.noreply.github.com>
Date: Tue, 10 Feb 2026 06:28:16 +0000
Subject: [PATCH 2/6] MNT: Re-rendered with conda-smithy 3.54.2 and
conda-forge-pinning 2026.02.09.23.12.1
---
.azure-pipelines/azure-pipelines-linux.yml | 12 ++++++
.azure-pipelines/azure-pipelines-osx.yml | 6 +++
.azure-pipelines/azure-pipelines-win.yml | 3 ++
.../linux_64_python3.14.____cp314t.yaml | 32 ++++++++++++++
.../linux_aarch64_python3.14.____cp314t.yaml | 32 ++++++++++++++
.../linux_ppc64le_python3.14.____cp314t.yaml | 32 ++++++++++++++
.ci_support/migrations/libffi35.yaml | 8 ----
.ci_support/osx_64_python3.14.____cp314t.yaml | 36 ++++++++++++++++
.../osx_arm64_python3.14.____cp314t.yaml | 36 ++++++++++++++++
.ci_support/win_64_python3.14.____cp314t.yaml | 26 ++++++++++++
.scripts/run_osx_build.sh | 19 +++++++++
README.md | 42 +++++++++++++++++++
azure-pipelines.yml | 2 +-
13 files changed, 277 insertions(+), 9 deletions(-)
create mode 100644 .ci_support/linux_64_python3.14.____cp314t.yaml
create mode 100644 .ci_support/linux_aarch64_python3.14.____cp314t.yaml
create mode 100644 .ci_support/linux_ppc64le_python3.14.____cp314t.yaml
delete mode 100644 .ci_support/migrations/libffi35.yaml
create mode 100644 .ci_support/osx_64_python3.14.____cp314t.yaml
create mode 100644 .ci_support/osx_arm64_python3.14.____cp314t.yaml
create mode 100644 .ci_support/win_64_python3.14.____cp314t.yaml
diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index e2dd8ba..2a92e9b 100755
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -28,6 +28,10 @@ jobs:
CONFIG: linux_64_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
+ linux_64_python3.14.____cp314t:
+ CONFIG: linux_64_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
linux_aarch64_python3.10.____cpython:
CONFIG: linux_aarch64_python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -48,6 +52,10 @@ jobs:
CONFIG: linux_aarch64_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9
+ linux_aarch64_python3.14.____cp314t:
+ CONFIG: linux_aarch64_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9
linux_ppc64le_python3.10.____cpython:
CONFIG: linux_ppc64le_python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -68,6 +76,10 @@ jobs:
CONFIG: linux_ppc64le_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9
+ linux_ppc64le_python3.14.____cp314t:
+ CONFIG: linux_ppc64le_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-ppc64le:alma9
timeoutInMinutes: 360
variables: {}
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 7871044..30c4d02 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -23,6 +23,9 @@ jobs:
osx_64_python3.14.____cp314:
CONFIG: osx_64_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
+ osx_64_python3.14.____cp314t:
+ CONFIG: osx_64_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
osx_arm64_python3.10.____cpython:
CONFIG: osx_arm64_python3.10.____cpython
UPLOAD_PACKAGES: 'True'
@@ -38,6 +41,9 @@ jobs:
osx_arm64_python3.14.____cp314:
CONFIG: osx_arm64_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
+ osx_arm64_python3.14.____cp314t:
+ CONFIG: osx_arm64_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
variables: {}
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index 2adcb90..044ccf5 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -23,6 +23,9 @@ jobs:
win_64_python3.14.____cp314:
CONFIG: win_64_python3.14.____cp314
UPLOAD_PACKAGES: 'True'
+ win_64_python3.14.____cp314t:
+ CONFIG: win_64_python3.14.____cp314t
+ UPLOAD_PACKAGES: 'True'
timeoutInMinutes: 360
variables:
CONDA_BLD_PATH: D:\\bld\\
diff --git a/.ci_support/linux_64_python3.14.____cp314t.yaml b/.ci_support/linux_64_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..0a3b67b
--- /dev/null
+++ b/.ci_support/linux_64_python3.14.____cp314t.yaml
@@ -0,0 +1,32 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '14'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-x86_64:alma9
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- linux-64
+zlib:
+- '1'
diff --git a/.ci_support/linux_aarch64_python3.14.____cp314t.yaml b/.ci_support/linux_aarch64_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..e11ff94
--- /dev/null
+++ b/.ci_support/linux_aarch64_python3.14.____cp314t.yaml
@@ -0,0 +1,32 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '14'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-aarch64:alma9
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- linux-aarch64
+zlib:
+- '1'
diff --git a/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml b/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..0417994
--- /dev/null
+++ b/.ci_support/linux_ppc64le_python3.14.____cp314t.yaml
@@ -0,0 +1,32 @@
+c_compiler:
+- gcc
+c_compiler_version:
+- '14'
+c_stdlib:
+- sysroot
+c_stdlib_version:
+- '2.17'
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-ppc64le:alma9
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- linux-ppc64le
+zlib:
+- '1'
diff --git a/.ci_support/migrations/libffi35.yaml b/.ci_support/migrations/libffi35.yaml
deleted file mode 100644
index cccfdc4..0000000
--- a/.ci_support/migrations/libffi35.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-__migrator:
- build_number: 1
- commit_message: Rebuild for libffi 3.5
- kind: version
- migration_number: 1
-libffi:
-- '3.5'
-migrator_ts: 1760302128.4447467
diff --git a/.ci_support/osx_64_python3.14.____cp314t.yaml b/.ci_support/osx_64_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..f06d617
--- /dev/null
+++ b/.ci_support/osx_64_python3.14.____cp314t.yaml
@@ -0,0 +1,36 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '10.13'
+MACOSX_SDK_VERSION:
+- '10.13'
+c_compiler:
+- clang
+c_compiler_version:
+- '19'
+c_stdlib:
+- macosx_deployment_target
+c_stdlib_version:
+- '10.13'
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+macos_machine:
+- x86_64-apple-darwin13.4.0
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- osx-64
+zlib:
+- '1'
diff --git a/.ci_support/osx_arm64_python3.14.____cp314t.yaml b/.ci_support/osx_arm64_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..ade5952
--- /dev/null
+++ b/.ci_support/osx_arm64_python3.14.____cp314t.yaml
@@ -0,0 +1,36 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '11.0'
+MACOSX_SDK_VERSION:
+- '11.0'
+c_compiler:
+- clang
+c_compiler_version:
+- '19'
+c_stdlib:
+- macosx_deployment_target
+c_stdlib_version:
+- '11.0'
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+macos_machine:
+- arm64-apple-darwin20.0.0
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- osx-arm64
+zlib:
+- '1'
diff --git a/.ci_support/win_64_python3.14.____cp314t.yaml b/.ci_support/win_64_python3.14.____cp314t.yaml
new file mode 100644
index 0000000..a50f10d
--- /dev/null
+++ b/.ci_support/win_64_python3.14.____cp314t.yaml
@@ -0,0 +1,26 @@
+c_compiler:
+- vs2022
+c_stdlib:
+- vs
+cairo:
+- '1'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+expat:
+- '2'
+glib:
+- '2'
+libffi:
+- '3.5'
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.14.* *_cp314t
+target_platform:
+- win-64
+zlib:
+- '1'
diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh
index 361edeb..bac7141 100755
--- a/.scripts/run_osx_build.sh
+++ b/.scripts/run_osx_build.sh
@@ -63,6 +63,25 @@ if [[ "${sha:-}" == "" ]]; then
sha=$(git rev-parse HEAD)
fi
+if [[ "${OSX_SDK_DIR:-}" == "" ]]; then
+ if [[ "${CI:-}" == "" ]]; then
+ echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting"
+ exit 1
+ else
+ export OSX_SDK_DIR=/opt/conda-sdks
+ /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}"
+ /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}"
+ fi
+else
+ if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then
+ rm -f "$tmpf"
+ echo "OSX_SDK_DIR is writeable without sudo, continuing"
+ else
+ echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting"
+ exit 1
+ fi
+fi
+
echo -e "\n\nRunning the build setup script."
source run_conda_forge_build_setup
diff --git a/README.md b/README.md
index 576d29a..31886c2 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,13 @@ Current build status
+