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

commit 88ca99c4fb9715d724d7ee795e25bed3c2fc73f0
Author: Sharlatan Hellseher <[email protected]>
AuthorDate: Mon Dec 29 21:18:31 2025 +0000

    gnu: python-scanpy: Update to 1.11.5.
    
    * gnu/packages/bioinformatics.scm (python-scanpy): Update to 1.11.5.
    [arguments] <test-flags>: Rework skipped tests.
    <phases>: Remove 'patch-version-check and 'add-anndata-source.
    [propagated-inputs]: Remove python-pytoml, python-sinfo,
    and python-tables; add python-numpy, python-pynndescent, and
    python-typing-extensions.
    [native-inputs]: Remove (package-source python-anndata), python-flaky,
    python-flit, python-leidenalg, python-pytest-nunit, and
    python-scanorama; add python-dependency-groups, python-pytest-randomly,
    and python-pytest-rerunfailures.
    
    Change-Id: I7a9a18434ddf3cca4d34a7909cce22ef86ffa054
---
 gnu/packages/bioinformatics.scm | 216 +++++++++++++++++-----------------------
 1 file changed, 94 insertions(+), 122 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 051966e44a..7d1942d5d6 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -19681,158 +19681,130 @@ implementation differs in these ways:
 (define-public python-scanpy
   (package
     (name "python-scanpy")
-    (version "1.11.2")
+    (version "1.11.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/theislab/scanpy";)
-             (commit version)))
+              (url "https://github.com/theislab/scanpy";)
+              (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "18ddb3jkyjan87f5kymyq951sa5955z41f10h6z954map8dy2136"))))
+         "07brcdwpzy2qa950jgiw38qax1xd0yi1zh7jrp1k4s8jksl7axhs"))))
     (build-system pyproject-build-system)
     (arguments
      (list
-      ;; 736 passed, 95 skipped, 20 xfailed, 148 warnings
+      ;; tests: 537 passed, 118 skipped, 15 xfailed, 89 warnings
       #:test-flags
-      '(list "-m" "not gpu"
-             "--numprocesses" (number->string (parallel-job-count))
-             ;; These tests require Internet access.
-             "--ignore-glob=tests/notebooks/*"
-             "--ignore=tests/test_clustering.py"
-             "--ignore=tests/test_datasets.py"
-             "--ignore=tests/test_normalization.py"
-             "--ignore=tests/test_score_genes.py"
-             "--ignore=tests/test_highly_variable_genes.py"
-             "--ignore=tests/test_aggregated.py"
-             "--ignore=get/_aggregated.py"
-             ;; TODO: I can't get the plotting tests to work, even with Xvfb.
-             ;; Some of them also require Internet access because they want to
-             ;; download a dataset.
-             "--ignore=tests/test_plotting.py"
-             "--ignore=tests/test_embedding_plots.py"
-             "--ignore=tests/test_preprocessing.py"
-             "--ignore=tests/test_read_10x.py"
-             "--ignore=plotting/_tools/scatterplots.py"
-             ;; Adding additional options does not help to resolve the
-             ;; faileur: TypeError: _FlakyPlugin._make_test_flaky() got an
-             ;; unexpected keyword argument 'reruns'.
-             "--ignore=tests/test_backed.py"
-             "-k"
-             ;; Plot tests that fail.
-             (string-append "not test_clustermap"
-                            " and not test_dotplot_matrixplot_stacked_violin"
-                            " and not test_paga_compare"
-                            " and not test_paga_path"
-                            " and not test_paga_pie"
-                            " and not test_paga_plots"
-                            " and not test_violin"
-                            " and not test_scatter_no_basis_per_obs"
-                            " and not test_spatial_general"
-                            " and not test_visium_empty_img_key"
-
-                            ;; These are doctests that fail because of missing
-                            ;; datasets.
-                            " and not scanpy.get._aggregated.aggregate"
-                            " and not 
scanpy.plotting._tools.scatterplots.spatial"
-
-                            ;; One difference in a long array.
-                            " and not test_cell_demultiplexing"
-
-                            ;; These try to connect to the network
-                            " and not test_scrublet_plots"
-                            " and not test_plot_rank_genes_groups_gene_symbols"
-                            " and not test_pca_n_pcs"
-                            " and not test_pca_chunked"
-                            " and not test_pca_layer"
-                            " and not test_pca_sparse"
-                            " and not test_pca_reproducible"
-                            " and not test_clip"
-
-                            ;; Missing test data.
-                            " and not test_covariance_eigh_impls"
-                            " and not test_embedding_colorbar_location"
-                            " and not test_sparse_dask_input_errors"
-                            " and not test_sparse_dask_input_errors"
-                            " and not test_spatial_external_img"
-
-                            ;; Somehow broken tests.
-                            " and not test_sim_toggleswitch"
-                            " and not scanpy.datasets._datasets.krumsiek11"
-                            " and not scanpy.datasets._datasets.toggleswitch"
-                            " and not 
scanpy.external.pp._scanorama_integrate.scanorama_integrate"
-                            " and not 
scanpy.preprocessing._simple.filter_cells"))
-       #:phases
-       #~(modify-phases %standard-phases
-           ;; XXX This should not be necessary, but I noticed while building
-           ;; python-metacells that the anndata version check fails, resulting
-           ;; in the wrong module name to be loaded from anndata.  I cannot
-           ;; reproduce this in an interactive Python session.  We patch this
-           ;; here to ensure that the appropriate module name is used.
-           (add-after 'unpack 'patch-version-check
-             (lambda _
-               (substitute* "src/scanpy/_utils/__init__.py"
-                 (("Version\\(anndata_version\\) < Version\\(\"0.6.10\"\\):")
-                  "False:")
-                 (("Version\\(anndata_version\\) >= Version\\(\"0.10.0\"\\):")
-                  "True:"))))
-           (add-after 'unpack 'pretend-version
-             (lambda _
-               (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
-           (add-after 'unpack 'add-anndata-source
-             (lambda _
-               (setenv "PYTHONPATH"
-                       (string-append (getcwd) ":"
-                                      #$(this-package-native-input 
"python-anndata:source") ":"
-                                      (getenv "GUIX_PYTHONPATH")))))
-           (add-before 'check 'pre-check
-             (lambda _
-               ;; Numba needs a writable dir to cache functions.
-               (setenv "NUMBA_CACHE_DIR" "/tmp")
-               ;; For Matplotlib.
-               (setenv "HOME" "/tmp"))))))
+      #~(list "-m" "not gpu"
+              "--numprocesses" (number->string (min 8 (parallel-job-count)))
+              ;; Network access is required.
+              #$@(map (lambda (file) (string-append "--ignore=tests/" file))
+                      (list "test_aggregated.py"
+                            "test_highly_variable_genes.py"
+                            "test_normalization.py"
+                            "test_pca.py"
+                            "test_plotting.py"
+                            "test_plotting_embedded/test_embeddings.py"
+                            "test_preprocessing.py"
+                            "test_scaling.py"
+                            "test_score_genes.py"))
+              "--deselect=tests/test_datasets.py::test_download_failure"
+              "--deselect=tests/test_paga.py::test_paga_compare"
+              ;; AssertionError: Image files did not match.
+              #$@(map (lambda (test) (string-append "--deselect=tests/"
+                                                    "test_plotting_embedded/"
+                                                    "test_spatial.py::"
+                                                    test))
+                      (list "test_spatial_general"
+                            "test_spatial_external_img"
+                            "test_visium_empty_img_key"))
+              (string-append "--deselect=plotting/_tools/scatterplots.py::"
+                             "scanpy.plotting._tools.scatterplots.spatial")
+              "--deselect=get/_aggregated.py::scanpy.get._aggregated.aggregate"
+              ;; XXX: When python-dask is added some tests fail with error:
+              ;; ImportError: cannot import name 'as_sparse_dask_array' from
+              ;; 'anndata.tests.helpers'.
+              ;; 
+              ;; That functionality was removed from anndata: see
+              ;; <https://github.com/scverse/anndata/pull/2201>.
+              #$@(map (lambda (test) (string-append "--deselect=tests/"
+                                                    "test_utils.py::"
+                                                    test))
+                      (list "test_axis_sum[dask_array_sparse]"
+                            
"test_check_nonnegative_integers[middle-dask_array_sparse]"
+                            
"test_check_nonnegative_integers[normal-dask_array_sparse]"
+                            
"test_check_nonnegative_integers[poisson-float64-dask_array_sparse]"
+                            
"test_check_nonnegative_integers[poisson-uint32-dask_array_sparse]"
+                            "test_divide_by_zero[dask_array_sparse]"
+                            "test_elem_mul[dask_array_sparse]"
+                            "test_scale_column[mul-dask_array_sparse]"
+                            "test_scale_column[truediv-dask_array_sparse]"
+                            
"test_scale_out_with_dask_or_sparse_raises[dask_array_sparse]"
+                            "test_scale_rechunk[mul-0-dask_array_sparse]"
+                            "test_scale_rechunk[mul-1-dask_array_sparse]"
+                            "test_scale_rechunk[truediv-0-dask_array_sparse]"
+                            "test_scale_rechunk[truediv-1-dask_array_sparse]"
+                            "test_scale_row[mul-dask_array_sparse]"
+                            "test_scale_row[truediv-dask_array_sparse]"))
+              #$@(map (lambda (test) (string-append "--deselect=tests/"
+                                                    "test_qc_metrics.py::"
+                                                    test))
+                      (list "test_dask_against_in_memory[log1p]"
+                            "test_dask_against_in_memory[no_log1p]"
+                            "test_qc_metrics[dask_array_sparse]"
+                            "test_qc_metrics_idempotent[dask_array_sparse]"
+                            "test_qc_metrics_no_log1p[dask_array_sparse]")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-version
+            (lambda _
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Numba needs a writable dir to cache functions.
+              (setenv "NUMBA_CACHE_DIR" "/tmp")
+              ;; For Matplotlib.
+              (setenv "HOME" "/tmp"))))))
     (propagated-inputs
      (list python-anndata
-           python-dask
            python-h5py
-           python-igraph
            python-joblib
            python-legacy-api-wrap
-           python-louvain
            python-matplotlib
            python-natsort
            python-networkx
            python-numba
+           python-numpy
            python-packaging
            python-pandas
            python-patsy
-           python-pytoml
+           python-pynndescent
            python-scikit-learn
            python-scipy
            python-seaborn
            python-session-info2
-           python-setuptools ; For pkg_resources.
-           python-sinfo
            python-statsmodels
-           python-tables
            python-tqdm
-           python-umap-learn))
+           python-typing-extensions
+           python-umap-learn
+           ;; [optional]
+           python-dask
+           python-igraph
+           python-louvain
+           python-setuptools))                  ;for pkg_resources
     (native-inputs
-     `(;; This package needs anndata.tests, which is not installed.
-       ("python-anndata:source" ,(package-source python-anndata))
-       ("python-flaky" ,python-flaky)
-       ("python-flit" ,python-flit)
-       ("python-hatch-vcs" ,python-hatch-vcs)
-       ("python-hatchling" ,python-hatchling)
-       ("python-leidenalg" ,python-leidenalg)
-       ("python-pytest" ,python-pytest)
-       ("python-pytest-mock" ,python-pytest-mock)
-       ("python-pytest-nunit" ,python-pytest-nunit)
-       ("python-pytest-xdist" ,python-pytest-xdist)
-       ("python-scanorama" ,python-scanorama)
-       ("python-setuptools-scm" ,python-setuptools-scm)))
+     (list python-dependency-groups
+           python-hatch-vcs
+           python-hatchling
+           python-pytest
+           python-pytest-mock
+           python-pytest-randomly
+           python-pytest-rerunfailures
+           python-pytest-xdist
+           python-setuptools-scm
+           #;python-tuna))                      ;no packaged in Guix yet
     (home-page "https://github.com/theislab/scanpy";)
     (synopsis "Single-Cell Analysis in Python")
     (description "Scanpy is a scalable toolkit for analyzing single-cell gene

Reply via email to