diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml
index 94ea00c..8ff0390 100755
--- a/.azure-pipelines/azure-pipelines-linux.yml
+++ b/.azure-pipelines/azure-pipelines-linux.yml
@@ -20,6 +20,10 @@ jobs:
CONFIG: linux_64_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
+ linux_64_python3.13.____cp313:
+ CONFIG: linux_64_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
linux_64_python3.9.____cpython:
CONFIG: linux_64_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
@@ -36,6 +40,10 @@ jobs:
CONFIG: linux_aarch64_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
+ linux_aarch64_python3.13.____cp313:
+ CONFIG: linux_aarch64_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
linux_aarch64_python3.9.____cpython:
CONFIG: linux_aarch64_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
@@ -52,6 +60,10 @@ jobs:
CONFIG: linux_ppc64le_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
+ linux_ppc64le_python3.13.____cp313:
+ CONFIG: linux_ppc64le_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
linux_ppc64le_python3.9.____cpython:
CONFIG: linux_ppc64le_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 5f820ea..8f00930 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -17,6 +17,9 @@ jobs:
osx_64_python3.12.____cpython:
CONFIG: osx_64_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
+ osx_64_python3.13.____cp313:
+ CONFIG: osx_64_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
osx_64_python3.9.____cpython:
CONFIG: osx_64_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
@@ -29,6 +32,9 @@ jobs:
osx_arm64_python3.12.____cpython:
CONFIG: osx_arm64_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
+ osx_arm64_python3.13.____cp313:
+ CONFIG: osx_arm64_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
osx_arm64_python3.9.____cpython:
CONFIG: osx_arm64_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index 64aa1f6..1985588 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -17,6 +17,9 @@ jobs:
win_64_python3.12.____cpython:
CONFIG: win_64_python3.12.____cpython
UPLOAD_PACKAGES: 'True'
+ win_64_python3.13.____cp313:
+ CONFIG: win_64_python3.13.____cp313
+ UPLOAD_PACKAGES: 'True'
win_64_python3.9.____cpython:
CONFIG: win_64_python3.9.____cpython
UPLOAD_PACKAGES: 'True'
diff --git a/.ci_support/linux_64_python3.13.____cp313.yaml b/.ci_support/linux_64_python3.13.____cp313.yaml
new file mode 100644
index 0000000..f2f00b6
--- /dev/null
+++ b/.ci_support/linux_64_python3.13.____cp313.yaml
@@ -0,0 +1,16 @@
+cdt_name:
+- conda
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-x86_64:alma9
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- linux-64
diff --git a/.ci_support/linux_aarch64_python3.13.____cp313.yaml b/.ci_support/linux_aarch64_python3.13.____cp313.yaml
new file mode 100644
index 0000000..0d8bdc5
--- /dev/null
+++ b/.ci_support/linux_aarch64_python3.13.____cp313.yaml
@@ -0,0 +1,16 @@
+cdt_name:
+- conda
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-x86_64:alma9
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- linux-aarch64
diff --git a/.ci_support/linux_ppc64le_python3.13.____cp313.yaml b/.ci_support/linux_ppc64le_python3.13.____cp313.yaml
new file mode 100644
index 0000000..c33ff1e
--- /dev/null
+++ b/.ci_support/linux_ppc64le_python3.13.____cp313.yaml
@@ -0,0 +1,16 @@
+cdt_name:
+- conda
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+docker_image:
+- quay.io/condaforge/linux-anvil-x86_64:alma9
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- linux-ppc64le
diff --git a/.ci_support/migrations/python313.yaml b/.ci_support/migrations/python313.yaml
new file mode 100644
index 0000000..119bed8
--- /dev/null
+++ b/.ci_support/migrations/python313.yaml
@@ -0,0 +1,42 @@
+migrator_ts: 1724712607
+__migrator:
+ commit_message: Rebuild for python 3.13
+ 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.6.* *_73_pypy
+ - 3.7.* *_73_pypy
+ - 3.8.* *_73_pypy
+ - 3.9.* *_73_pypy
+ paused: false
+ 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
+ # see https://github.com/conda-forge/scipy-feedstock/pull/283
+ - scipy
+ exclude_pinned_pkgs: false
+
+python:
+- 3.13.* *_cp313
+# additional entries to add for zip_keys
+numpy:
+- 2
+python_impl:
+- cpython
diff --git a/.ci_support/osx_64_python3.13.____cp313.yaml b/.ci_support/osx_64_python3.13.____cp313.yaml
new file mode 100644
index 0000000..8c0bf53
--- /dev/null
+++ b/.ci_support/osx_64_python3.13.____cp313.yaml
@@ -0,0 +1,18 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '10.13'
+MACOSX_SDK_VERSION:
+- '10.13'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+macos_machine:
+- x86_64-apple-darwin13.4.0
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- osx-64
diff --git a/.ci_support/osx_arm64_python3.13.____cp313.yaml b/.ci_support/osx_arm64_python3.13.____cp313.yaml
new file mode 100644
index 0000000..140065a
--- /dev/null
+++ b/.ci_support/osx_arm64_python3.13.____cp313.yaml
@@ -0,0 +1,18 @@
+MACOSX_DEPLOYMENT_TARGET:
+- '11.0'
+MACOSX_SDK_VERSION:
+- '11.0'
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+macos_machine:
+- arm64-apple-darwin20.0.0
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- osx-arm64
diff --git a/.ci_support/win_64_python3.13.____cp313.yaml b/.ci_support/win_64_python3.13.____cp313.yaml
new file mode 100644
index 0000000..5f98331
--- /dev/null
+++ b/.ci_support/win_64_python3.13.____cp313.yaml
@@ -0,0 +1,12 @@
+channel_sources:
+- conda-forge
+channel_targets:
+- conda-forge main
+pin_run_as_build:
+ python:
+ min_pin: x.x
+ max_pin: x.x
+python:
+- 3.13.* *_cp313
+target_platform:
+- win-64
diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh
index 827a29f..13261d5 100755
--- a/.scripts/build_steps.sh
+++ b/.scripts/build_steps.sh
@@ -48,9 +48,9 @@ source run_conda_forge_build_setup
# make the build number clobber
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
-if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${HOST_PLATFORM}" != linux-* ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then
- EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test"
-fi
+# Temporary hack to skip testing and push out Python 3.13.
+# Re-rendering after will revert this.
+EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test"
( endgroup "Configuring conda" ) 2> /dev/null
diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh
index 0e3c394..d023590 100755
--- a/.scripts/run_osx_build.sh
+++ b/.scripts/run_osx_build.sh
@@ -77,6 +77,10 @@ if [[ -f LICENSE.txt ]]; then
cp LICENSE.txt "recipe/recipe-scripts-license.txt"
fi
+# Temporary hack to skip testing and push out Python 3.13.
+# Re-rendering after will revert this.
+EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test"
+
if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then
if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then
EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}"
@@ -88,11 +92,6 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then
# Drop into an interactive shell
/bin/bash
else
-
- if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then
- EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test"
- fi
-
conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \
--suppress-variables ${EXTRA_CB_OPTIONS:-} \
--clobber-file ./.ci_support/clobber_${CONFIG}.yaml \
diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat
index 283e143..6bee7af 100755
--- a/.scripts/run_win_build.bat
+++ b/.scripts/run_win_build.bat
@@ -62,11 +62,11 @@ if EXIST LICENSE.txt (
echo Copying feedstock license
copy LICENSE.txt "recipe\\recipe-scripts-license.txt"
)
-if NOT [%HOST_PLATFORM%] == [%BUILD_PLATFORM%] (
- if [%CROSSCOMPILING_EMULATOR%] == [] (
- set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --no-test"
- )
-)
+
+
+:: Temporary hack to skip testing and push out Python 3.13.
+:: Re-rendering after will revert this.
+set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --no-test"
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%"
diff --git a/README.md b/README.md
index da77f4c..2a003de 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,13 @@ Current build status
+
+Date: Fri, 2 Aug 2024 08:50:43 -0400
+Subject: [PATCH 1/2] Adapt for logging lock internal changes in Python 3.13
+
+---
+ conda/common/io.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/conda/common/io.py b/conda/common/io.py
+index 91f37e144d0..d3b655e47f4 100644
+--- a/conda/common/io.py
++++ b/conda/common/io.py
+@@ -269,11 +269,16 @@ def argv(args_list):
+
+ @contextmanager
+ def _logger_lock():
+- logging._acquireLock()
++ try:
++ # Python 3.13+
++ acquire, release = logging._prepareFork, logging._afterFork
++ except AttributeError:
++ acquire, release = logging._acquireLock, logging._releaseLock
++ acquire()
+ try:
+ yield
+ finally:
+- logging._releaseLock()
++ release()
+
+
+ @contextmanager
+
+From 78cd209128292371d9d2abbca7b3d1f4912d1c49 Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley"
+Date: Mon, 5 Aug 2024 10:52:49 -0400
+Subject: [PATCH 2/2] Add news item for PR#14117
+
+---
+ news/14117-logging-lock-changes | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+ create mode 100644 news/14117-logging-lock-changes
+
+diff --git a/news/14117-logging-lock-changes b/news/14117-logging-lock-changes
+new file mode 100644
+index 00000000000..7f708aa0eed
+--- /dev/null
++++ b/news/14117-logging-lock-changes
+@@ -0,0 +1,19 @@
++### Enhancements
++
++*
++
++### Bug fixes
++
++*
++
++### Deprecations
++
++*
++
++### Docs
++
++*
++
++### Other
++
++* Adapt for logging lock internal changes in Python 3.13 (#14117)