andreas pushed a commit to branch python-team
in repository guix.

commit 605942157a2ac90d2b39d8226907c4d9cc2cb949
Author: Nicolas Graves <ngra...@ngraves.fr>
AuthorDate: Fri Apr 4 21:16:40 2025 +0200

    gnu: python-pytensor: Update to 2.28.3.
    
    * gnu/packages/python-science.scm (python-pytensor): Update to 2.28.3.
    [arguments]{test-flags}: Use field.
    {phases}: Remove 'check phase replacement. Simplify 'versioneer. Add
    phase 'pre-check.
    
    Co-authored-by: Sharlatan Hellseher <sharlata...@gmail.com>
    Change-Id: I8f324863438356ebc1ad3d62e86b5b17c416cd02
    Signed-off-by: Sharlatan Hellseher <sharlata...@gmail.com>
---
 gnu/packages/python-science.scm | 85 ++++++++++++++++++++++++-----------------
 1 file changed, 49 insertions(+), 36 deletions(-)

diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 4de2b78af7..44bf4a6b44 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -2479,7 +2479,7 @@ objects.")
 (define-public python-pytensor
   (package
     (name "python-pytensor")
-    (version "2.18.1")
+    (version "2.28.3") ; the minimal version supporting SciPy 1.12.0
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2488,52 +2488,65 @@ objects.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0qa0y13xfm6w7ry7gp0lv84c8blyg34a9ns7ynwqyhf9majq08s5"))))
+                "1yz1yslms6kdmy4sgnvbnghhclcpkc80z3vaw9c2y3b3j1fs9b4v"))))
     (build-system pyproject-build-system)
     (arguments
      (list
+      #:test-flags
+      ;; XXX: Full test suite takes about 20-30min to complete in single
+      ;; thread, attempt to run tests in parallel with pytest-xdist fails even
+      ;; so upstream provides a support for that, try to figure out how to
+      ;; improve it.
+      ;;
+      ;; Upstream implements a script, showing slow tests which may be used to
+      ;; exclude even more hanging/slow ones, see
+      ;; <scripts/slowest_tests/extract-slow-tests.py>.
+      ;;
+      ;; Skip computationally intensive tests.
+      #~(list "--ignore" "tests/scan/"
+              "--ignore" "tests/tensor/"
+              "--ignore" "tests/sandbox/"
+              "--ignore" "tests/sparse/sandbox/"
+              ;; Tests hang while running from these files.
+              "--ignore" "tests/compile/test_compilelock.py"
+              "--ignore" "tests/link/jax/test_tensor_basic.py"
+              ;; XXX: Tests finish with error in these files, check why.
+              "--ignore" "tests/compile/function/test_types.py"
+              "--ignore" "tests/link/numba/test_basic.py"
+              "--ignore" "tests/link/numba/test_blockwise.py"
+              "--ignore" "tests/link/numba/test_elemwise.py"
+              "-k" (string-join
+                    ;; Skip benchmark tests.
+                    (list "not test_elemwise_speed"
+                          "test_logsumexp_benchmark"
+                          "test_fused_elemwise_benchmark"
+                          "test_scan_multiple_output"
+                          "test_vector_taps_benchmark"
+                          "test_cython_performance"
+                          ;; Assertion fails in tests.
+                          "test_choose_signature"
+                          "test_fgraph_to_python_names")
+                    " and not ")
+              ;; Tests collection selects pytensor, which does not contain
+              ;; tests and fails to pass; manually provide a test directory
+              ;; instead.
+              "tests")
       #:phases
       #~(modify-phases %standard-phases
           ;; Replace version manually because pytensor uses
           ;; versioneer, which requires git metadata.
           (add-after 'unpack 'versioneer
             (lambda _
-              (with-output-to-file "setup.cfg"
-                (lambda ()
-                  (display "\
-[versioneer]
-VCS = git
-style = pep440
-versionfile_source = pytensor/_version.py
-versionfile_build = pytensor/_version.py
-tag_prefix =
-parentdir_prefix = pytensor-
-")))
               (invoke "versioneer" "install")
               (substitute* "setup.py"
-                (("versioneer.get_version\\(\\)")
-                 (string-append "\"" #$version "\"")))))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                (setenv "HOME" "/tmp") ; required for most tests
-                ;; Test discovery fails, have to call pytest by hand.
-                ;; test_tensor_basic.py file requires JAX.
-                (invoke "python" "-m" "pytest" "-vv"
-                        "--ignore" "tests/link/jax/test_tensor_basic.py"
-                        ;; Skip benchmark tests.
-                        "-k" (string-append
-                              "not test_elemwise_speed"
-                              " and not test_logsumexp_benchmark"
-                              " and not test_fused_elemwise_benchmark"
-                              " and not test_scan_multiple_output"
-                              " and not test_vector_taps_benchmark"
-                              " and not test_cython_performance")
-                        ;; Skip computationally intensive tests.
-                        "--ignore" "tests/scan/"
-                        "--ignore" "tests/tensor/"
-                        "--ignore" "tests/sandbox/"
-                        "--ignore" "tests/sparse/sandbox/")))))))
+                (("version=versioneer.get_version\\(),")
+                 (format #f "version=~s," #$version)))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; It is required for most tests.
+              (setenv "HOME" "/tmp")
+              ;; Cython extensions have to be built before running the tests.
+              (invoke "python" "setup.py" "build_ext" "--inplace"))))))
     (native-inputs (list python-cython
                          python-pytest
                          python-pytest-mock

Reply via email to