summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-12-21 10:33:08 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-01-10 11:44:43 -0500
commitea0ed65c5928f49de3963911e8ec917e90a7941f (patch)
treec9e35e0c54593e577a973440d9f159eabc2ead3a
parente5e533c221eb6fa9551d834fa8a97c6c0309ef1e (diff)
downloadguix-patches-ea0ed65c5928f49de3963911e8ec917e90a7941f.tar
guix-patches-ea0ed65c5928f49de3963911e8ec917e90a7941f.tar.gz
gnu: python-matplotlib: Update to 3.5.1 and run tests in parallel.
* gnu/packages/python-xyz.scm (python-matplotlib): Update to 3.5.1. [propagated-inputs]: Add python-fonttools, python-wxpython and python-packaging. [native-inputs]: Remove python-mock, python-wheel, unzip and jquery-ui. Add python-pytest-timeout, python-pytest-xdist, python-setuptools-scm and python-setuptools-scm-git-archive. [phases]: Delete trailing #t. {pretend-version}: New phase. {install-jquery-ui}: Delete phase. {check}: Honor TESTS?. Do not skip webagg tests anymore. Invoke using '-n' argument to run tests in parallel via pytest-xdist. {configure-environment}: Do not set LD_LIBRARY_PATH nor HOME. Rename setup.cfg to mplsetup.cfg. Set the backend to Agg.
-rw-r--r--gnu/packages/python-xyz.scm169
1 files changed, 79 insertions, 90 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d3ca531f68..7d64e151be 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -6215,17 +6215,19 @@ comparison.
(define-public python-matplotlib
(package
(name "python-matplotlib")
- (version "3.4.3")
+ (version "3.5.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "matplotlib" version))
(sha256
- (base32 "06032j0ccjxldx4z9kf97qps2g36mfgvy1nap3b9n75kzmnm4kzw"))))
+ (base32 "076f8qi265x8jy89c03r3vv5h4is4ir5mawwrrrpp96314783sdj"))))
(build-system python-build-system)
- (propagated-inputs ; the following packages are all needed at run time
+ (propagated-inputs ; the following packages are all needed at run time
`(("python-cycler" ,python-cycler)
+ ("python-fonttools" ,python-fonttools)
("python-kiwisolver" ,python-kiwisolver)
+ ("python-packaging" ,python-packaging)
("python-pyparsing" ,python-pyparsing)
("python-pygobject" ,python-pygobject)
("python-certifi" ,python-certifi)
@@ -6236,6 +6238,7 @@ comparison.
("python-pillow" ,python-pillow)
("python-pytz" ,python-pytz)
("python-six" ,python-six)
+ ("python-wxpython" ,python-wxpython)
;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
;; object. For this reason we need to import both libraries.
@@ -6248,101 +6251,87 @@ comparison.
qhull
cairo
glib
- ;; FIXME: Add backends when available.
- ;("python-wxpython" ,python-wxpython)
tcl
tk))
(native-inputs
`(("pkg-config" ,pkg-config)
("python-pytest" ,python-pytest)
- ("python-mock" ,python-mock)
- ("python-wheel" ,python-wheel)
- ("unzip" ,unzip)
- ("jquery-ui"
- ,(origin
- (method url-fetch)
- (uri "https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip")
- (sha256
- (base32
- "0kb21xf38diqgxcdi1z3s9ssq36pldvyqxy56hn6pcva6rs3c8zq"))))))
+ ("python-pytest-timeout" ,python-pytest-timeout)
+ ("python-pytest-xdist" ,python-pytest-xdist)
+ ("python-setuptools-scm" ,python-setuptools-scm)
+ ("python-setuptools-scm-git-archive" ,python-setuptools-scm-git-archive)))
(arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; XXX We disable all image comparison tests because we're using a
- ;; newer version of FreeType than matplotlib expects. This leads to
- ;; minor differences throughout the tests.
- (add-after 'unpack 'fix-and-disable-failing-tests
- (lambda _
- (substitute* (append (find-files "lib/matplotlib/tests/"
- "test_.*\\.py$")
- (find-files "lib/mpl_toolkits/tests"
- "test_.*\\.py$"))
- (("^from matplotlib" match)
- (string-append "import pytest\n" match))
- (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match
- indent)
- (string-append indent
- "@pytest.mark.skip(reason=\"unknown minor image differences\")\n"
- match)))
- (substitute* "lib/matplotlib/tests/test_animation.py"
- (("/bin/sh") (which "sh")))
- (for-each delete-file
- ;; test_normal_axes, test_get_tightbbox_polar
- '("lib/matplotlib/tests/test_axes.py"
- "lib/matplotlib/tests/test_polar.py"
- ;; We don't use the webagg backend and this test
- ;; forces it.
- "lib/matplotlib/tests/test_backend_webagg.py"
- ;; test_outward_ticks
- "lib/matplotlib/tests/test_tightlayout.py"
- ;; test_hidden_axes fails with minor extent
- ;; differences, possibly due to the use of a
- ;; different version of FreeType.
- "lib/matplotlib/tests/test_constrainedlayout.py"
- ;; Fontconfig returns no fonts.
- "lib/matplotlib/tests/test_font_manager.py"))
- #t))
- (add-before 'install 'install-jquery-ui
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((python-version (python-version
- (assoc-ref inputs "python")))
- (dir
- (string-append (assoc-ref outputs "out")
- "/lib/python" python-version
- "/site-packages"
- "/matplotlib/backends/web_backend/")))
- (mkdir-p dir)
- (invoke "unzip"
- (assoc-ref inputs "jquery-ui")
- "-d" dir))
- #t))
- (replace 'check
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "tests.py" "-v"
- "-m" "not network and not webagg")))
- (add-before 'build 'configure-environment
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let ((cairo (assoc-ref inputs "cairo")))
- ;; Setting this directory in the 'basedirlist' of 'setup.cfg'
- ;; has not effect.
- (setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
- (setenv "HOME" (getcwd))
- ;; Fix rounding errors when using the x87 FPU.
- (when (string-prefix? "i686" ,(%current-system))
- (setenv "CFLAGS" "-ffloat-store"))
- (call-with-output-file "setup.cfg"
- (lambda (port)
- (format port "[libs]~%
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'pretend-version
+ ;; The version string is usually derived via setuptools-scm, but
+ ;; without the git metadata available, the version string is set to
+ ;; '0.0.0'.
+ (lambda _
+ (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
+ (add-after 'unpack 'fix-and-disable-failing-tests
+ ;; XXX: Disable all image comparison tests because we're using a
+ ;; newer version of FreeType than matplotlib expects. This leads
+ ;; to minor differences throughout the tests.
+ (lambda _
+ (substitute* (append (find-files "lib/matplotlib/tests/"
+ "test_.*\\.py$")
+ (find-files "lib/mpl_toolkits/tests"
+ "test_.*\\.py$"))
+ (("^from matplotlib" match)
+ (string-append "import pytest\n" match))
+ (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match
+ indent)
+ (string-append indent "@pytest.mark.skip(\
+reason=\"unknown minor image differences\")\n" match)))
+ (substitute* "lib/matplotlib/tests/test_animation.py"
+ (("/bin/sh") (which "sh")))
+ (for-each delete-file
+ ;; test_normal_axes, test_get_tightbbox_polar
+ '("lib/matplotlib/tests/test_axes.py"
+ "lib/matplotlib/tests/test_polar.py"
+ ;; We don't use the webagg backend and this test
+ ;; forces it.
+ "lib/matplotlib/tests/test_backend_webagg.py"
+ ;; test_outward_ticks
+ "lib/matplotlib/tests/test_tightlayout.py"
+ ;; test_hidden_axes fails with minor extent
+ ;; differences, possibly due to the use of a
+ ;; different version of FreeType.
+ "lib/matplotlib/tests/test_constrainedlayout.py"
+ ;; Fontconfig returns no fonts.
+ "lib/matplotlib/tests/test_font_manager.py"))))
+ (add-before 'build 'configure-environment
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Fix rounding errors when using the x87 FPU.
+ (when (string-prefix? "i686" #$(%current-system))
+ (setenv "CFLAGS" "-ffloat-store"))
+ (call-with-output-file "mplsetup.cfg"
+ (lambda (port)
+ (format port "\
+[libs]
system_freetype = true
system_qhull = true
-[directories]~%
-basedirlist = ~a,~a~%
-[packages]~%
-tests = True~%"
- (assoc-ref inputs "tcl")
- (assoc-ref inputs "tk")))))
- #t)))))
+
+[rc_options]
+backend=Agg
+
+[directories]
+basedirlist = ~a,~a
+
+[packages]
+tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk"))))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; Step out of the source directory to avoid interference.
+ (with-directory-excursion "/tmp"
+ ;; Run the installed tests, which is what we want since not
+ ;; everything gets built in the source directory.
+ (invoke "pytest"
+ "-n" (number->string (parallel-job-count))
+ "-m" "not network" "--pyargs" "matplotlib"))))))))
(home-page "https://matplotlib.org/")
(synopsis "2D plotting library for Python")
(description