<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2424cb3a2431453ed68634a708a90941904c93b6">https://github.com/macports/macports-ports/commit/2424cb3a2431453ed68634a708a90941904c93b6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 2424cb3a2431453ed68634a708a90941904c93b6
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Mon Nov 4 12:48:39 2024 -0500

<span style='display:block; white-space:pre;color:#404040;'>    py-scipy: update to 1.14.1
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    - drop py38, add py313 subport
</span><span style='display:block; white-space:pre;color:#404040;'>    - pin to 1.13.1 for py39 subport
</span><span style='display:block; white-space:pre;color:#404040;'>    - switch to PyPI
</span><span style='display:block; white-space:pre;color:#404040;'>    - add BLAS/LAPACK variants
</span><span style='display:block; white-space:pre;color:#404040;'>    -  only add 'accelerate' variant on systems where upstream supports it
</span><span style='display:block; white-space:pre;color:#404040;'>    - add myself as co-maintainer
</span><span style='display:block; white-space:pre;color:#404040;'>    - completely switch to 'meson' as build backend
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/70931
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/69538
</span>---
 python/py-scipy/Portfile                           | 288 +++++----------------
 .../py-scipy/files/patch-allow-MP-boost-1.10.diff  |  15 --
 python/py-scipy/files/patch-allow-MP-boost.diff    |  15 --
 .../files/patch-ckdtree-fix-isinf-1.10.diff        | 252 ------------------
 .../py-scipy/files/patch-macosx-version-min.diff   |  20 --
 python/py-scipy/files/patch-pyproject.toml.diff    |  50 ----
 .../files/patch-use__STDC_NO_THREADS__.diff        |  66 -----
 .../patch-v1.13.1-version-caps-pyproject.toml.diff |  28 ++
 .../files/patch-version-caps-pyproject.toml.diff   |  25 ++
 9 files changed, 120 insertions(+), 639 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/Portfile b/python/py-scipy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e25b65adde6..6e8552a47e4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-scipy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,271 +5,117 @@ PortGroup               active_variants 1.1
</span> PortGroup               boost 1.0
 PortGroup               compilers 1.0
 PortGroup               compiler_blacklist_versions 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup               github 1.0
</span> PortGroup               legacysupport 1.1
 PortGroup               python 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# __sincos https://trac.macports.org/ticket/63233
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# __sincos ; https://trac.macports.org/ticket/63233
</span> legacysupport.newest_darwin_requires_legacy 12
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup            scipy scipy 1.11.4 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                    py-scipy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                 1.14.1
</span> revision                0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums               rmd160  8120272e76e1065f8f6b5aaf3fa7fd450d56e4c3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    56336202
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-github.tarball_from     releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  a47254b77f71db2dc36dcf4ad98eb668cc75667e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    58620554
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-name                    py-scipy
</span> license                 BSD
<span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers             {michaelld @michaelld} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers             {michaelld @michaelld} {reneeotten @reneeotten} openmaintainer
</span> description             An opensource library of scientific tools for Python
 long_description        {*}${description}
 
 homepage                https://www.scipy.org/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions         38 39 310 311 312
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# When updating to meson.build later, please do it conditionally,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# unless build is confirmed on older systems as well.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-python.pep517           no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-python.add_archflags    no
</span> universal_variant       no
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-compilers.setup         require_fortran -clang -gcc44 -gcc45 -gcc46 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        -gcc47 -gcc48 -g95
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-github.livecheck.regex {([0-9.-]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions         39 310 311 312 313
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517_backend   meson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.add_archflags    no
</span> 
 if {${name} ne ${subport}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${python.version} == 38} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Support for Python 3.8 dropped in 1.11.x:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # https://github.com/scipy/scipy/commit/890ffe9febc7b199e84ca9444ceb7b2f9c0a33aa
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        github.setup    scipy scipy 1.10.1 v
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        revision        2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        checksums       rmd160  a97f16d6acefbc7e52b81499d250226e0cce114d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    42407997
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        boost.version           1.76
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append       patch-allow-MP-boost-1.10.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append    port:py${python.version}-cython-compat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set compat_path [string replace ${python.pkgd} 0 [string length ${python.prefix}]-1 ${prefix}/lib/py${python.version}-cython-compat]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        build.env-append    PYTHONPATH=${compat_path}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        boost.version           1.81
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.c_standard 2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.cxx_standard 2017
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            move ${worksrcpath}/_setup.py ${worksrcpath}/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append       patch-allow-MP-boost.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append    port:py${python.version}-cython
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-pythran \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:swig-python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # SciPy requires GCC >= 9.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compilers.setup     require_fortran -clang -gcc44 -gcc45 -gcc46 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        -gcc47 -gcc48 -gcc5 -gcc6 -gcc7 -gcc8 -g95
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-numpy \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-pybind11 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-mypy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # and Clang >= 12.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.blacklist-append {clang < 1200}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.cxx_standard 2014
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.thread_local_storage yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Requires threads.h, missing in Xcode clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # https://build.macports.org/builders/ports-10.11_x86_64-builder/builds/136856/steps/install-port/logs/stdio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.blacklist-append {clang < 900}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append   patch-version-caps-pyproject.toml.diff
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # force disable STDC THREADS from <threads.h> and instead just use __thread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # https://trac.macports.org/ticket/62488
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append   patch-use__STDC_NO_THREADS__.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # https://github.com/scipy/scipy/issues/19718
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append   patch-macosx-version-min.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    boost.version       1.81
</span> 
     # There is some conflict between legacysupport cmath and gcc on old systems, which makes isnan/isinf undefined.
     if {${os.platform} eq "darwin" && ${os.major} < 13 && [string match *gcc* ${configure.compiler}]} {
         patchfiles-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-special-fix-isnan-isinf.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {${python.version} == 38} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-ckdtree-fix-isinf-1.10.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-special-fix-isnan-isinf.diff \
</span>                         patch-ckdtree-fix-isinf.diff
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span>     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace "s|@MACOS_V@|${macosx_deployment_target}|g" ${worksrcpath}/scipy/_build_utils/compiler_helper.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${python.version} == 39} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        version         1.13.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        checksums       rmd160  ab376ae8d339135b8edb8220d28c26fb495a0609 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    57210720
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-version-caps-pyproject.toml.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        patch-v1.13.1-version-caps-pyproject.toml.diff
</span>     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${python.version} == 312} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        python.pep517   yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        python.pep517_backend meson
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:pkgconfig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # TODO: implement variants with different BLAS/LAPACK implementations; these need to be fixed in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        #       py-numpy port as well after the switch to meson
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib-append  path:lib/libopenblas.dylib:OpenBLAS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append   patch-pyproject.toml.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.fflags-append -fno-second-underscore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        build.env-append    PATH=${python.prefix}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        worksrcdir              ${distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        build.env-append        "CCFLAGS=-I${prefix}/include -L${prefix}/lib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        destroot.env-append     "CCFLAGS=-I${prefix}/include -L${prefix}/lib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.fflags-append -fno-second-underscore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        build.env-append        SETUPTOOLS_USE_DISTUTILS=stdlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        destroot.env-append     SETUPTOOLS_USE_DISTUTILS=stdlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        pre-configure {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set fc_options      "config_fc --fcompiler gnu95 --f77exec ${configure.f77} --f77flags='${configure.f77_archflags} ${configure.fflags}' --f90exec ${configure.f90} --f90flags='${configure.f90_archflags} ${configure.fflags}'"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set config_options  "config --cc ${configure.cc} --include-dirs ${prefix}/include --library-dirs ${prefix}/lib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.cmd-append    ${fc_options} ${config_options}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.cmd-append ${fc_options} ${config_options}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.fflags-append -fno-second-underscore
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append    CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CXX=${configure.cxx} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CFLAGS=${configure.cc_archflags} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CXXFLAGS=${configure.cxx_archflags} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CPPFLAGS=${configure.cppflags}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append CC=${configure.cc} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CXX=${configure.cxx} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CFLAGS=${configure.cc_archflags} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CXXFLAGS=${configure.cxx_archflags} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                CPPFLAGS=${configure.cppflags}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # for some reason read-world is not set
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            system "chmod -R a+r ${destroot}${prefix}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        variant atlas conflicts openblas mkl description "Use MacPorts ATLAS libraries" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_lib-append  port:atlas
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-cython \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        path:bin/pkg-config:pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-pythran
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        variant openblas conflicts atlas mkl description "Use MacPorts OpenBLAS Libraries" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_lib-append  path:lib/libopenblas.dylib:OpenBLAS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.env-append    PATH=${python.prefix}/bin:$env(PATH)
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        variant mkl conflicts atlas openblas description "Use MacPorts MKL Libraries" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_lib-append  port:py${python.version}-mkl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:py${python.version}-mkl-include
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:py${python.version}-numpy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-pybind11 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-mypy
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # Make +openblas a default variant, at least temporarily, to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # overcome issues with Apple's /usr/lib/libblas.* and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # /usr/lib/liblapack.* missing a symbol. see also:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # https://trac.macports.org/ticket/57829
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {![variant_isset atlas] &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ![variant_isset openblas] &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ![variant_isset mkl]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            default_variants +openblas
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # SciPy (and NumPy) only support the Accelerate framework for macOS 13.3+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see: https://scipy.github.io/devdocs/building/blas_lapack.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${os.platform} eq "darwin" && (${os.major} > 22 || ${os.major} == 22 && ${os.minor} >= 4)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        variant accelerate conflicts openblas flexiblas blis description "Use Apples Accelerate Framework" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            build.args-append -Csetup-args=-Dblas=accelerate -Csetup-args=-Dlapack=accelerate
</span>         }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[variant_isset atlas]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # use MacPorts atlas
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append    OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                LAPACK=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                BLAS=${prefix}/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                LAPACK=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                BLAS=${prefix}/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # scipy needs fortran; so we only need to check if atlas is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # compiled with +nofortran
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {![catch {set result [active_variants atlas "" nofortran]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {!$result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        return -code error \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "You have selected the +atlas variant but atlas was built with +nofortran.\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    scipy needs a fortran enabled atlas. Please rebuild atlas without the +nofortran\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # also check that numpy has the atlas variant active
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {![catch {set result [active_variants py${python.version}-numpy atlas ""]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {!$result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        return -code error \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "You have selected the +atlas variant but py${python.version}-numpy does not\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    have the +atlas variant active. Please ensure that numpy is activated with the\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    +atlas variant."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant openblas conflicts accelerate flexiblas blis description "Use MacPorts OpenBLAS Libraries" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append  path:lib/libopenblas.dylib:OpenBLAS
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        } elseif {[variant_isset openblas]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # use MacPorts OpenBLAS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append    OPENBLAS=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append OPENBLAS=${prefix}/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.args-append -Csetup-args=-Dblas=openblas -Csetup-args=-Dlapack=openblas \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          -Csetup-args=-Dpkg_config_path=${prefix}/lib/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        } elseif {[variant_isset mkl]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # use MacPorts MKL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append    OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=${python.prefix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                MKLROOT=${python.prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant flexiblas conflicts accelerate openblas blis description "Use MacPorts FlexiBLAS libraries" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append  port:flexiblas
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # check that numpy has the mkl variant active
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {![catch {set result [active_variants py${python.version}-numpy mkl ""]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {!$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.args-append -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          -Csetup-args=-Dpkg_config_path=${prefix}/lib/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        return -code error \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "You have selected the +mkl variant but py${python.version}-numpy does not\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    have the +mkl variant active. Please ensure that numpy is activated with the\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    +mkl variant."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant blis conflicts accelerate openblas flexiblas description "Use MacPorts BLIS/lapack libraries" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # TODO: eventually this could/should use libFLAME, but currently SciPy cannot be convinced to use it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append  port:blis \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:lapack
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            # set absolute path to remove references to @rpath/libmkl_rt.2.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                foreach soname [exec find ${destroot}${python.pkgd}/scipy -name "*.so"] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    system "install_name_tool -change @rpath/libmkl_rt.2.dylib ${python.prefix}/lib/libmkl_rt.2.dylib ${soname}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.args-append -Csetup-args=-Dblas=blis -Csetup-args=-Dlapack=lapack \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          -Csetup-args=-Dpkg_config_path=${prefix}/share/pkgconfig:${prefix}/lib/lapack/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # set default BLAS/LAPACK variant if none is explicitly selected by the user
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset flexiblas] && ![variant_isset blis]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # default to macOS Accelerate framework if macOS 13.3 or higher, otherwise OpenBLAS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.platform} eq "darwin" && (${os.major} > 22 || ${os.major} == 22 && ${os.minor} >= 4)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            default_variants +accelerate
</span>         } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            # use Accelerate BLAS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append    OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                LAPACK=/usr/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                BLAS=/usr/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append OPENBLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                ATLAS=None \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                LAPACK=/usr/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                BLAS=/usr/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            default_variants +openblas
</span>         }
     }
 }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-allow-MP-boost-1.10.diff b/python/py-scipy/files/patch-allow-MP-boost-1.10.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 193953bec9c..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-allow-MP-boost-1.10.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,15 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/_lib/setup.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/_lib/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4,9 +4,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def check_boost_submodule():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     from scipy._lib._boost_utils import _boost_dir
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if not os.path.exists(_boost_dir(ret_path=True) / 'README.rst'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        raise RuntimeError("Missing the `boost` submodule! Run `git submodule "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                           "update --init` to fix this.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #if not os.path.exists(_boost_dir(ret_path=True) / 'README.rst'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #    raise RuntimeError("Missing the `boost` submodule! Run `git submodule "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #                       "update --init` to fix this.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def check_highs_submodule():
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-allow-MP-boost.diff b/python/py-scipy/files/patch-allow-MP-boost.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 1647219e12b..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-allow-MP-boost.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,15 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/_lib/setup.py.orig       2023-11-19 02:28:52.000000000 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/_lib/setup.py    2023-12-20 15:52:08.000000000 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4,9 +4,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def check_boost_submodule():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     from scipy._lib._boost_utils import _boost_dir
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if not os.path.exists(_boost_dir(ret_path=True).parent / 'README.md'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        raise RuntimeError("Missing the `boost` submodule! Run `git submodule "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                           "update --init` to fix this.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#     if not os.path.exists(_boost_dir(ret_path=True).parent / 'README.md'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#         raise RuntimeError("Missing the `boost` submodule! Run `git submodule "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#                            "update --init` to fix this.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def check_highs_submodule():
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-ckdtree-fix-isinf-1.10.diff b/python/py-scipy/files/patch-ckdtree-fix-isinf-1.10.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 9e23501a1e9..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-ckdtree-fix-isinf-1.10.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,252 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From f2b7fee97d665364e0c2502d44874155d93bd6b8 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Wed, 20 Dec 2023 21:44:14 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 1/2] ckdtree: fix isinf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Partly revert a breaking commit: https://github.com/scipy/scipy/commit/a77855a8a00137e06fee5f011be4b0526a20fb14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-That does not work because _ckdtree.cxx is generated with isinf and not std::isinf. Earlier version is broken either, since it does not define isinf to std::isinf at all.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/_ckdtree.pyx                     |  4 +++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/ckdtree_decl.h       |  1 +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/count_neighbors.cxx  |  4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/query.cxx            | 12 ++++++------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/query_ball_point.cxx |  4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/query_ball_tree.cxx  |  4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/query_pairs.cxx      |  4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/rectangle.h          |  6 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- scipy/spatial/ckdtree/src/sparse_distances.cxx |  6 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 9 files changed, 24 insertions(+), 21 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/_ckdtree.pyx scipy/spatial/_ckdtree.pyx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bbc996574..e66c90bae 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/_ckdtree.pyx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/_ckdtree.pyx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -15,7 +15,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from cpython.mem cimport PyMem_Malloc, PyMem_Free
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from libcpp.vector cimport vector
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from libcpp cimport bool
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from libc.math cimport isinf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cimport cython
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import os
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -39,6 +38,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # ===================
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cdef extern from "ckdtree_decl.h":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int isinf(np.float64_t x) nogil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     struct ckdtreenode:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         np.intp_t split_dim
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         np.intp_t children
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/ckdtree_decl.h scipy/spatial/ckdtree/src/ckdtree_decl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 3c28a49cb..b31e60b6d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/ckdtree_decl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/ckdtree_decl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,6 +12,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CKDTREE_PREFETCH(x, rw, loc)  NPY_PREFETCH(x, rw, loc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ckdtree_intp_t npy_intp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define isinf(x)   std::isinf(x)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ckdtree_fmin(x, y)   fmin(x, y)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ckdtree_fmax(x, y)   fmax(x, y)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ckdtree_fabs(x)   fabs(x)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/count_neighbors.cxx scipy/spatial/ckdtree/src/count_neighbors.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index fd0ff5e26..598a922b9 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/count_neighbors.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/count_neighbors.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -213,13 +213,13 @@ count_neighbors(struct CNBParams *params,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (CKDTREE_LIKELY(self->raw_boxsize_data == NULL)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, BoxMinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/query.cxx scipy/spatial/ckdtree/src/query.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a8aeba469..c24037f38 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/query.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/query.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -133,7 +133,7 @@ struct nodeinfo {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     inline void update_side_distance(const int d, const double new_side_distance, const double p) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (CKDTREE_UNLIKELY(std::isinf(p))) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (CKDTREE_UNLIKELY(isinf(p))) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             min_distance = ckdtree_fmax(min_distance, new_side_distance);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             min_distance += new_side_distance - side_distances()[d];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -267,7 +267,7 @@ query_single_point(const ckdtree *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     else if (eps == 0.)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         epsfac = 1.;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    else if (std::isinf(p))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    else if (isinf(p))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         epsfac = 1. / (1. + eps);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         epsfac = 1. / std::pow((1. + eps), p);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -277,7 +277,7 @@ query_single_point(const ckdtree *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         double tmp = distance_upper_bound;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         distance_upper_bound = tmp*tmp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    else if ((!std::isinf(p)) && (!std::isinf(distance_upper_bound)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    else if ((!isinf(p)) && (!isinf(distance_upper_bound)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         distance_upper_bound = std::pow(distance_upper_bound,p);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for(;;) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -457,7 +457,7 @@ query_single_point(const ckdtree *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             result_indices[i] = neighbor.contents.intdata;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (CKDTREE_LIKELY(p == 2.0))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 result_distances[i] = std::sqrt(-neighbor.priority);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            else if ((p == 1.) || (std::isinf(p)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            else if ((p == 1.) || (isinf(p)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 result_distances[i] = -neighbor.priority;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 result_distances[i] = std::pow((-neighbor.priority),(1./p));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -495,7 +495,7 @@ query_knn(const ckdtree      *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             const double *xx_row = xx + (i*m);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -512,7 +512,7 @@ query_knn(const ckdtree      *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(1, BoxMinkowskiDistPp) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/query_ball_point.cxx scipy/spatial/ckdtree/src/query_ball_point.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 77ed1beee..4d5dc938b 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/query_ball_point.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/query_ball_point.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -128,7 +128,7 @@ query_ball_point(const ckdtree *self, const double *x,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             Rectangle point(m, x + i * m, x + i * m);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -139,7 +139,7 @@ query_ball_point(const ckdtree *self, const double *x,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             HANDLE(1, BoxMinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/query_ball_tree.cxx scipy/spatial/ckdtree/src/query_ball_tree.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bea17eb7e..9338618aa 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/query_ball_tree.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/query_ball_tree.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -198,13 +198,13 @@ query_ball_tree(const ckdtree *self, const ckdtree *other,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if(CKDTREE_LIKELY(self->raw_boxsize_data == NULL)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, BoxMinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/query_pairs.cxx scipy/spatial/ckdtree/src/query_pairs.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 5cc81594f..c4af434b6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/query_pairs.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/query_pairs.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -218,13 +218,13 @@ query_pairs(const ckdtree *self,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if(CKDTREE_LIKELY(self->raw_boxsize_data == NULL)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, BoxMinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/rectangle.h scipy/spatial/ckdtree/src/rectangle.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 39e9e0591..a349f50d1 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/rectangle.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/rectangle.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -130,7 +130,7 @@ template<typename MinMaxDist>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         /* internally we represent all distances as distance ** p */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (CKDTREE_LIKELY(p == 2.0))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             upper_bound = _upper_bound * _upper_bound;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        else if ((!std::isinf(p)) && (!std::isinf(_upper_bound)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        else if ((!isinf(p)) && (!isinf(_upper_bound)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             upper_bound = std::pow(_upper_bound,p);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             upper_bound = _upper_bound;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -142,7 +142,7 @@ template<typename MinMaxDist>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         else if (eps == 0.)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             epsfac = 1.;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        else if (std::isinf(p))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        else if (isinf(p))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             epsfac = 1. / (1. + eps);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             epsfac = 1. / std::pow((1. + eps), p);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -153,7 +153,7 @@ template<typename MinMaxDist>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         /* Compute initial min and max distances */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         MinMaxDist::rect_rect_p(tree, rect1, rect2, p, &min_distance, &max_distance);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if(std::isinf(max_distance)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if(isinf(max_distance)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             const char *msg = "Encountering floating point overflow. "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               "The value of p too large for this dataset; "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               "For such large p, consider using the special case p=np.inf . ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git scipy/spatial/ckdtree/src/sparse_distances.cxx scipy/spatial/ckdtree/src/sparse_distances.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 14ccf25a3..984e2c4ab 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/spatial/ckdtree/src/sparse_distances.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/spatial/ckdtree/src/sparse_distances.cxx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -66,7 +66,7 @@ traverse(const ckdtree *self, const ckdtree *other,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     if (d <= tub) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                         if (CKDTREE_LIKELY(p == 2.0))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                             d = std::sqrt(d);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                        else if ((p != 1) && (!std::isinf(p)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        else if ((p != 1) && (!isinf(p)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                             d = std::pow(d, 1. / p);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                         coo_entry e = {sindices[i], oindices[j], d};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -139,13 +139,13 @@ sparse_distance_matrix(const ckdtree *self, const ckdtree *other,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if(CKDTREE_LIKELY(self->raw_boxsize_data == NULL)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), MinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, MinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), MinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, MinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(CKDTREE_LIKELY(p == 2), BoxMinkowskiDistP2)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(p == 1, BoxMinkowskiDistP1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        HANDLE(std::isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        HANDLE(isinf(p), BoxMinkowskiDistPinf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         HANDLE(1, BoxMinkowskiDistPp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-macosx-version-min.diff b/python/py-scipy/files/patch-macosx-version-min.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 1e19c5786f9..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-macosx-version-min.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,20 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/_build_utils/compiler_helper.py.orig     2023-11-19 02:28:52.000000000 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/_build_utils/compiler_helper.py  2023-12-20 16:53:55.000000000 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -107,7 +107,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if sys.platform == 'darwin':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # Set min macOS version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        min_macos_flag = '-mmacosx-version-min=10.9'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        min_macos_flag = '-mmacosx-version-min=@MACOS_V@'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if has_flag(cc, min_macos_flag):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             args.append(min_macos_flag)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             ext.extra_link_args.append(min_macos_flag)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -124,7 +124,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if sys.platform == 'darwin':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # Set min macOS version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        min_macos_flag = '-mmacosx-version-min=10.9'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        min_macos_flag = '-mmacosx-version-min=@MACOS_V@'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if has_flag(cc, min_macos_flag):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             new_args.append(min_macos_flag)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             new_link_args.append(min_macos_flag)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-pyproject.toml.diff b/python/py-scipy/files/patch-pyproject.toml.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index d65c59d5331..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-pyproject.toml.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,50 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- pyproject.toml.orig    2024-01-11 23:28:08
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ pyproject.toml 2024-01-11 23:40:38
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -11,13 +11,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build-backend = 'mesonpy'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- requires = [
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Reason for `<`: future-proofing (0.14.0 released and known to work)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "meson-python>=0.12.1,<0.15.0",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "meson-python>=0.12.1",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Reason for `<`: we want to build the 1.11.x releases with 0.29.x (too many changes in 3.0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "Cython>=0.29.35,<3.0",   # when updating version, also update check in meson.build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "Cython>=0.29.35",   # when updating version, also update check in meson.build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Reason for `<`: future-proofing (2.11.1 is the most recent version)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "pybind11>=2.10.4,<2.11.1",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "pybind11>=2.10.4",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Reason for `<`: future-proofing (0.14.0 released and known to work)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "pythran>=0.12.0,<0.15.0",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "pythran>=0.12.0",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # NumPy dependencies - to update these, sync from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # https://github.com/scipy/oldest-supported-numpy/, and then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -27,22 +27,22 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # now matches minimum supported version, keep here as separate requirement
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # to be able to sync more easily with oldest-supported-numpy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # loongarch64 requires numpy>=1.22.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.22.0; python_version<'3.11' and platform_machine=='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.22.0; python_version<'3.11' and platform_machine=='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # On Windows we need to avoid 1.21.6, 1.22.0 and 1.22.1 because they were
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # built with vc142. 1.22.3 is the first version that has 32-bit Windows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # wheels *and* was built with vc141. So use that:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.22.3; python_version=='3.9' and platform_system=='Windows' and platform_python_implementation != 'PyPy' and platform_machine!='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.22.3; python_version=='3.10' and platform_system=='Windows' and platform_python_implementation != 'PyPy' and platform_machine!='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.22.3; python_version=='3.9' and platform_system=='Windows' and platform_python_implementation != 'PyPy' and platform_machine!='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.22.3; python_version=='3.10' and platform_system=='Windows' and platform_python_implementation != 'PyPy' and platform_machine!='loongarch64'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # default numpy requirements
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.21.6; python_version=='3.9' and (platform_system!='Windows' and platform_machine!='loongarch64') and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.21.6; python_version=='3.9' and (platform_system!='Windows' and platform_machine!='loongarch64') and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Note that 1.21.3 was the first version with a complete set of 3.10 wheels,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # however macOS was broken and it's safe C API/ABI-wise to build against 1.21.6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # (see oldest-supported-numpy issues gh-28 and gh-45)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.21.6; python_version=='3.10' and (platform_system!='Windows' and platform_machine!='loongarch64') and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy==1.23.2; python_version=='3.11' and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    "numpy>=1.26.0,<1.27.0; python_version=='3.12'",  # no `==` because we expect relevant bug fixes in 1.26.1/2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.21.6; python_version=='3.10' and (platform_system!='Windows' and platform_machine!='loongarch64') and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy==1.23.2; python_version=='3.11' and platform_python_implementation != 'PyPy'",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    #"numpy>=1.26.0,<1.27.0; python_version=='3.12'",  # no `==` because we expect relevant bug fixes in 1.26.1/2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # For Python versions which aren't yet officially supported,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # we specify an unpinned NumPy which allows source distributions
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-use__STDC_NO_THREADS__.diff b/python/py-scipy/files/patch-use__STDC_NO_THREADS__.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 036335ff9d5..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-scipy/files/patch-use__STDC_NO_THREADS__.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,66 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/integrate/setup.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/integrate/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,9 +37,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     config.add_library('mach', sources=mach_src, config_fc={'noopt': (__file__, 1)},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        _pre_build_hook=pre_build_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     config.add_library('quadpack', sources=quadpack_src, _pre_build_hook=pre_build_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    config.add_library('lsoda', sources=lsoda_src, _pre_build_hook=pre_build_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    config.add_library('vode', sources=vode_src, _pre_build_hook=pre_build_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    config.add_library('dop', sources=dop_src, _pre_build_hook=pre_build_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    config.add_library('lsoda', sources=lsoda_src, _pre_build_hook=pre_build_hook, macros=[('__STDC_NO_THREADS__',1)])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    config.add_library('vode', sources=vode_src, _pre_build_hook=pre_build_hook, macros=[('__STDC_NO_THREADS__',1)])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    config.add_library('dop', sources=dop_src, _pre_build_hook=pre_build_hook, macros=[('__STDC_NO_THREADS__',1)])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Extensions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # quadpack:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/linalg/setup.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/linalg/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -57,7 +57,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     config.add_extension('_flapack',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          sources=sources,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          depends=depends,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                         extra_info=lapack_opt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         extra_info=lapack_opt,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         define_macros=[('__STDC_NO_THREADS__',1)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if uses_blas64():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -94,7 +95,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ext = config.add_extension('_interpolative',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                sources=[join('src', 'id_dist', 'src', '*.f'),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                         "interpolative.pyf"],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                               extra_info=lapack_opt
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               extra_info=lapack_opt,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               define_macros=[('__STDC_NO_THREADS__',1)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ext._pre_build_hook = gfortran_legacy_flag_hook
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/optimize/setup.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/optimize/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -79,10 +79,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          depends=[join('tnc', 'tnc.h')],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          **numpy_nodepr_api)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    local_macros = numpy_nodepr_api
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    local_macros['define_macros'].append(('__STDC_NO_THREADS__',1))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     config.add_extension('_cobyla',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          sources=[join('cobyla', x) for x in [
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                              'cobyla.pyf', 'cobyla2.f', 'trstlp.f']],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                         **numpy_nodepr_api)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         **local_macros)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     sources = ['minpack2.pyf', 'dcsrch.f', 'dcstep.f']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     config.add_extension('_minpack2',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scipy/sparse/linalg/_propack/setup.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scipy/sparse/linalg/_propack/setup.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -73,7 +73,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    extra_info=lapack_opt,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    undef_macros=['_OPENMP'],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    f2py_options=f2py_options,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                   depends=['setup.py'] + src)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                   depends=['setup.py'] + src,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                   define_macros=[('__STDC_NO_THREADS__',1)])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         ext._pre_build_hook = pre_build_hook
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return config
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-v1.13.1-version-caps-pyproject.toml.diff b/python/py-scipy/files/patch-v1.13.1-version-caps-pyproject.toml.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0ea0a673811
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-scipy/files/patch-v1.13.1-version-caps-pyproject.toml.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyproject.toml.orig    2024-11-11 10:26:48
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyproject.toml 2024-11-11 10:27:41
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,13 +17,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ requires = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on meson-python is pre-emptive only (looser on purpose,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # since change of breakage in 0.16/0.17 is low)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "meson-python>=0.15.0,<0.18.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "meson-python>=0.15.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on Cython is pre-emptive only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "Cython>=3.0.8,<3.1.0",  # when updating version, also update check in meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on pybind11 is pre-emptive only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "pybind11>=2.12.0,<2.13.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "pybind11>=2.12.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on Pythran is pre-emptive only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "pythran>=0.14.0,<0.16.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "pythran>=0.14.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # Comments on numpy build requirement range:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,7 +35,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #      and disabling build isolation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #   3. The <2.3 upper bound is for matching the numpy deprecation policy,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #      it should not be loosened.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "numpy>=2.0.0rc1,<2.3",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "numpy>=1.22.4,<2.3",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [project]
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-scipy/files/patch-version-caps-pyproject.toml.diff b/python/py-scipy/files/patch-version-caps-pyproject.toml.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0504d882ad4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-scipy/files/patch-version-caps-pyproject.toml.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyproject.toml.orig    2024-11-04 21:11:08
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyproject.toml 2024-11-04 21:12:18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,10 +24,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on Cython is pre-emptive only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "Cython>=3.0.8,<3.1.0",        # when updating version, also update check in meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on pybind11 is pre-emptive only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "pybind11>=2.12.0,<2.13.0",     # when updating version, also update check in scipy/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "pybind11>=2.12.0",     # when updating version, also update check in scipy/meson.build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # The upper bound on pythran is pre-emptive only; 0.16.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # is released/working at time of writing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "pythran>=0.14.0,<0.17.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "pythran>=0.14.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # numpy requirement for wheel builds for distribution on PyPI - building
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # against 2.x yields wheels that are also compatible with numpy 1.x at
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,8 +35,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # Note that building against numpy 1.x works fine too - users and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # redistributors can do this by installing the numpy version they like and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # disabling build isolation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "numpy>=2.0.0rc1,<2.3",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "numpy>=2.1.0rc1; python_version>='3.13'",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    "numpy>=1.23.5,<2.3"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [project]
</span></pre><pre style='margin:0'>

</pre>