From 5a3634f46127482c18bdeb2cc332af045c852e50 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 6 Apr 2022 20:53:31 -0400 Subject: gnu: python-scipy: Move input fields below arguments field. * gnu/packages/python-science.scm (python-scipy): Move inputs fields below the arguments field. [phases]: Use gexp. {configure-openblas}: Use this-package-input. {check}: Remove extraneous 'add-installed-pythonpath' call. {install-doc}: Adjust accordingly. --- gnu/packages/python-science.scm | 155 ++++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 78 deletions(-) (limited to 'gnu/packages/python-science.scm') diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 2eb3b344c73..d192543f5c1 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2022 Efraim Flashner ;;; Copyright © 2016-2020, 2022 Marius Bakke ;;; Copyright © 2019 Tobias Geerinckx-Rice -;;; Copyright © 2019, 2021 Maxim Cournoyer +;;; Copyright © 2019, 2021, 2022 Maxim Cournoyer ;;; Copyright © 2019 Giacomo Leidi ;;; Copyright © 2020 Pierre Langlois ;;; Copyright © 2020, 2021, 2022 Vinicius Monego @@ -80,49 +80,36 @@ (uri (pypi-uri "scipy" version)) (sha256 (base32 "1gxsnw6viz2j3sm8ak2a8l7fcn4b2zm3kzfm8w57xxyyrzx7an5b")))) - (build-system python-build-system) - (propagated-inputs - (list python-numpy python-matplotlib python-pyparsing)) - (inputs - (list openblas pybind11)) - (native-inputs - (list python-cython - python-pydata-sphinx-theme - python-pytest - python-sphinx - python-sphinx-panels - python-numpydoc - gfortran - perl - which)) (outputs '("out" "doc")) + (build-system python-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-pythran - (lambda _ - (setenv "SCIPY_USE_PYTHRAN" "0"))) - (add-before 'build 'change-home-dir - (lambda _ - ;; Change from /homeless-shelter to /tmp for write permission. - (setenv "HOME" "/tmp"))) - (add-after 'unpack 'disable-broken-tests - (lambda _ - (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py" - (("^( +)def test_threads_parallel\\(self\\):" m indent) - (string-append indent - "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - m))) - (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py" - (("^def test_parallel_threads\\(\\):" m) - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - m))))) - (add-before 'build 'configure-openblas - (lambda* (#:key inputs #:allow-other-keys) - (call-with-output-file "site.cfg" - (lambda (port) - (format port - "[blas] + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-pythran + (lambda _ + (setenv "SCIPY_USE_PYTHRAN" "0"))) + (add-before 'build 'change-home-dir + (lambda _ + ;; Change from /homeless-shelter to /tmp for write permission. + (setenv "HOME" "/tmp"))) + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py" + (("^( +)def test_threads_parallel\\(self\\):" m indent) + (string-append indent + "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))) + (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py" + (("^def test_parallel_threads\\(\\):" m) + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))))) + (add-before 'build 'configure-openblas + (lambda _ + (call-with-output-file "site.cfg" + (lambda (port) + (format port + "[blas] libraries = openblas library_dirs = ~a/lib include_dirs = ~a/include @@ -132,42 +119,54 @@ include_dirs = ~a/include library_dirs = ~a/lib atlas_libs = openblas " - (assoc-ref inputs "openblas") - (assoc-ref inputs "openblas") - (assoc-ref inputs "openblas")))))) - (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((data (string-append (assoc-ref outputs "doc") "/share")) - (doc (string-append data "/doc/" ,name "-" ,version)) - (html (string-append doc "/html")) - (pyver ,(string-append "PYVER=" (version-major+minor - (package-version python)))) - ;; By default it tries to run sphinx-build through the Python - ;; interpreter which won't work with our shell wrapper. - (sphinxbuild "SPHINXBUILD=LANG=C sphinx-build")) - ;; Make installed package available for building the - ;; documentation - (add-installed-pythonpath inputs outputs) - (with-directory-excursion "doc" - ;; Fix generation of images for mathematical expressions. - (substitute* (find-files "source" "conf\\.py") - (("pngmath_use_preview = True") - "pngmath_use_preview = False")) - (mkdir-p html) - (invoke "make" "html" pyver sphinxbuild) - (with-directory-excursion "build/html" - (for-each (lambda (file) - (let* ((dir (dirname file)) - (tgt-dir (string-append html "/" dir))) - (install-file file html))) - (find-files "."))))))) - (replace 'check - (lambda* (#:key tests? inputs outputs #:allow-other-keys) - (when tests? - (add-installed-pythonpath inputs outputs) - (with-directory-excursion "/tmp" - (invoke "python" "-c" - "import scipy; scipy.test(verbose=2)")))))))) + #$(this-package-input "openblas") + #$(this-package-input "openblas") + #$(this-package-input "openblas")))))) + (add-after 'install 'install-doc + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((data (string-append (assoc-ref outputs "doc") "/share")) + (doc (string-append data "/doc/" #$name "-" #$version)) + (html (string-append doc "/html")) + (pyver (string-append "PYVER=" + #$(version-major+minor + (package-version python)))) + ;; By default it tries to run sphinx-build through the Python + ;; interpreter which won't work with our shell wrapper. + (sphinxbuild "SPHINXBUILD=LANG=C sphinx-build")) + ;; Make installed package available for building the + ;; documentation + (add-installed-pythonpath inputs outputs) + (with-directory-excursion "doc" + ;; Fix generation of images for mathematical expressions. + (substitute* (find-files "source" "conf\\.py") + (("pngmath_use_preview = True") + "pngmath_use_preview = False")) + (mkdir-p html) + (invoke "make" "html" pyver sphinxbuild) + (with-directory-excursion "build/html" + (for-each (lambda (file) + (let* ((dir (dirname file)) + (tgt-dir (string-append html "/" dir))) + (install-file file html))) + (find-files "."))))))) + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (with-directory-excursion "/tmp" + (invoke "python" "-c" + "import scipy; scipy.test(verbose=2)")))))))) + (propagated-inputs (list python-numpy python-matplotlib python-pyparsing)) + (inputs (list openblas pybind11)) + (native-inputs + (list python-cython + python-pydata-sphinx-theme + python-pytest + python-sphinx + python-sphinx-panels + python-numpydoc + gfortran + perl + which)) (home-page "https://www.scipy.org/") (synopsis "The Scipy library provides efficient numerical routines") (description "The SciPy library is one of the core packages that make up -- cgit v1.3 From cddedb9c5b0b8417a2afcead164040787e6e1cde Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 6 Apr 2022 22:24:48 -0400 Subject: gnu: python-scipy: Update to 1.8.0 and enable parallel build. * gnu/packages/python-science.scm (python-scipy): Update to 1.8.0. [modules]: New argument. [phases]{disable-broken-tests}: Delete phase. {configure-openblas}: Streamline configuration template. {parallelize-build}: New phase. {install-doc}: Move before 'check phase. Remove now extraneous 'add-installed-pythonpath' call. Remove the SPHINXBUILD and PYVER Make variables, as well as conf.py patching. Provide SPHINXOPTS to build doc in parallel. Simply recursively copy the 'html' output directory to install the doc. {check}: Remove extraneous INPUTS and OUTPUTS arguments. Start tests with the 'runtests.py' launcher, which accepts a '-j' argument to run the tests in parallel. [native-inputs]: Sort inputs. Add python-pytest-xdist and python-threadpoolctl. [home-page]: Update. --- gnu/packages/python-science.scm | 91 ++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 55 deletions(-) (limited to 'gnu/packages/python-science.scm') diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index d192543f5c1..2cabdb490ca 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -73,17 +73,20 @@ (define-public python-scipy (package (name "python-scipy") - (version "1.7.3") + (version "1.8.0") (source (origin (method url-fetch) (uri (pypi-uri "scipy" version)) (sha256 - (base32 "1gxsnw6viz2j3sm8ak2a8l7fcn4b2zm3kzfm8w57xxyyrzx7an5b")))) + (base32 "1gghkwn93niyasm36333xbqrnn3yiadq9d97wnc9mg14nzbg5m1i")))) (outputs '("out" "doc")) (build-system python-build-system) (arguments (list + #:modules '((guix build utils) + (guix build python-build-system) + (ice-9 format)) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'disable-pythran @@ -93,81 +96,59 @@ (lambda _ ;; Change from /homeless-shelter to /tmp for write permission. (setenv "HOME" "/tmp"))) - (add-after 'unpack 'disable-broken-tests - (lambda _ - (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py" - (("^( +)def test_threads_parallel\\(self\\):" m indent) - (string-append indent - "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - m))) - (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py" - (("^def test_parallel_threads\\(\\):" m) - (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" - m))))) (add-before 'build 'configure-openblas (lambda _ (call-with-output-file "site.cfg" (lambda (port) (format port - "[blas] + "\ +[blas] libraries = openblas library_dirs = ~a/lib -include_dirs = ~a/include +include_dirs = ~:*~a/include -# backslash-n to make emacs happy -\n[atlas] -library_dirs = ~a/lib -atlas_libs = openblas -" - #$(this-package-input "openblas") - #$(this-package-input "openblas") - #$(this-package-input "openblas")))))) - (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) +[atlas] +library_dirs = ~:*~a/lib +atlas_libs = openblas~%" #$(this-package-input "openblas")))))) + (add-before 'build 'parallelize-build + (lambda _ + (setenv "NPY_NUM_BUILD_JOBS" + (number->string (parallel-job-count))))) + (add-before 'check 'install-doc + (lambda* (#:key outputs #:allow-other-keys) (let* ((data (string-append (assoc-ref outputs "doc") "/share")) (doc (string-append data "/doc/" #$name "-" #$version)) - (html (string-append doc "/html")) - (pyver (string-append "PYVER=" - #$(version-major+minor - (package-version python)))) - ;; By default it tries to run sphinx-build through the Python - ;; interpreter which won't work with our shell wrapper. - (sphinxbuild "SPHINXBUILD=LANG=C sphinx-build")) - ;; Make installed package available for building the - ;; documentation - (add-installed-pythonpath inputs outputs) + (html (string-append doc "/html"))) (with-directory-excursion "doc" - ;; Fix generation of images for mathematical expressions. - (substitute* (find-files "source" "conf\\.py") - (("pngmath_use_preview = True") - "pngmath_use_preview = False")) + ;; Build doc. + (invoke "make" "html" + ;; Building the documentation takes a very long time. + ;; Parallelize it. + (string-append "SPHINXOPTS=-j" + (number->string (parallel-job-count)))) + ;; Install doc. (mkdir-p html) - (invoke "make" "html" pyver sphinxbuild) - (with-directory-excursion "build/html" - (for-each (lambda (file) - (let* ((dir (dirname file)) - (tgt-dir (string-append html "/" dir))) - (install-file file html))) - (find-files "."))))))) + (copy-recursively "build/html" html))))) (replace 'check - (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (lambda* (#:key tests? #:allow-other-keys) (when tests? - (with-directory-excursion "/tmp" - (invoke "python" "-c" - "import scipy; scipy.test(verbose=2)")))))))) + (invoke "./runtests.py" "-vv" "--no-build" "--mode=fast" + "-j" (number->string (parallel-job-count))))))))) (propagated-inputs (list python-numpy python-matplotlib python-pyparsing)) (inputs (list openblas pybind11)) (native-inputs - (list python-cython + (list gfortran + perl + python-cython + python-numpydoc python-pydata-sphinx-theme python-pytest + python-pytest-xdist python-sphinx python-sphinx-panels - python-numpydoc - gfortran - perl + python-threadpoolctl which)) - (home-page "https://www.scipy.org/") + (home-page "https://scipy.org/") (synopsis "The Scipy library provides efficient numerical routines") (description "The SciPy library is one of the core packages that make up the SciPy stack. It provides many user-friendly and efficient numerical -- cgit v1.3 From 8b390a8750b9d47924cdb49d3459668f0703fcea Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 18 Apr 2022 15:27:38 -0400 Subject: gnu: python-pandas: Build and run tests in parallel. * gnu/packages/python-science.scm (python-pandas) [phases]{enable-parallel-build}: New phase. {check}: Add xdist -n option. Skip test_memory_usage test. [native-inputs]: Add python-pytest-xdist. --- gnu/packages/python-science.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'gnu/packages/python-science.scm') diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 2cabdb490ca..21ed2c7694a 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -413,6 +413,12 @@ library.") (srfi srfi-26)) #:phases (modify-phases %standard-phases + (add-after 'unpack 'enable-parallel-build + (lambda _ + (substitute* "setup.py" + (("\"-j\", type=int, default=1") + (format #f "\"-j\", type=int, default=~a" + (parallel-job-count)))))) (add-after 'unpack 'patch-which (lambda* (#:key inputs #:allow-other-keys) (let ((which (assoc-ref inputs "which"))) @@ -439,6 +445,7 @@ library.") (when tests? (invoke "pytest" "-vv" "pandas" "--skip-slow" "--skip-network" + "-n" (number->string (parallel-job-count)) "-k" (string-append ;; These test access the internet (see: @@ -448,7 +455,11 @@ library.") "not test_wrong_url" ;; TODO: Missing input " and not TestS3" - " and not s3")))))))))) + " and not s3" + ;; This test fails when run with pytest-xdist + ;; (see: + ;; https://github.com/pandas-dev/pandas/issues/39096). + " and not test_memory_usage")))))))))) (propagated-inputs (list python-jinja2 python-numpy @@ -466,6 +477,7 @@ library.") python-html5lib python-pytest python-pytest-mock + python-pytest-xdist ;; Needed to test clipboard support. xorg-server-for-tests)) (home-page "https://pandas.pydata.org") -- cgit v1.3 From c359a4fabba7c6fab2498d602f5a63d4cebcc5e4 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 18 Apr 2022 15:55:35 -0400 Subject: gnu: python-pandas: Update to 1.4.2. * gnu/packages/python-science.scm (python-pandas): Update to 1.4.2. --- gnu/packages/python-science.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu/packages/python-science.scm') diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 21ed2c7694a..0ff971e46c5 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -397,13 +397,13 @@ library.") (define-public python-pandas (package (name "python-pandas") - (version "1.3.5") + (version "1.4.2") (source (origin (method url-fetch) (uri (pypi-uri "pandas" version)) (sha256 - (base32 "1wd92ra8xcjgigbypid53gvby89myg68ica6r8hdw4hhvvsqahhy")))) + (base32 "04lsak3j5hq2hk0vfjf532rdxdqmg2akamdl4yl3qipihp2izg4j")))) (build-system python-build-system) (arguments `(#:modules ((guix build utils) -- cgit v1.3 From cecf1953475719b36716630f6765ae6b12631bb4 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 20 Apr 2022 01:20:37 -0400 Subject: gnu: python-pingouin: Update to 0.5.1. * gnu/packages/python-science.scm (python-pingouin): Update to 0.5.1. --- gnu/packages/python-science.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu/packages/python-science.scm') diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 0ff971e46c5..bf7c7ce45f4 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -945,7 +945,7 @@ of Pandas (define-public python-pingouin (package (name "python-pingouin") - (version "0.5.0") + (version "0.5.1") (source ;; The PyPI tarball does not contain the tests. (origin @@ -956,7 +956,7 @@ of Pandas (file-name (git-file-name name version)) (sha256 (base32 - "01aaq023q4bymffrc2wm56af87da32wcvy5d5156i4g7qgvh346r")))) + "10v3mwcmyc7rd2957cbmfcw66yw2y0fz7zcfyx46q8slbmd1d8d4")))) (build-system python-build-system) (arguments `(#:phases -- cgit v1.3