summary refs log tree commit diff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-09-12 21:59:10 +0200
committerRicardo Wurmus <rekado@elephly.net>2019-09-13 00:44:57 +0200
commit5ea654cfe030165efadf1f1dcfb2adef66a1f44f (patch)
treef3822b15d4c80afdb70bd6f92da2f2dfa9a1abc7
parent16fddf17f5ba90cd1b3c203a5fd8ec5b652fddb7 (diff)
downloadguix-5ea654cfe030165efadf1f1dcfb2adef66a1f44f.tar.gz
gnu: python-matplotlib: Update to 3.1.1.
* gnu/packages/python-xyz.scm (python-matplotlib): Update to 3.1.1.
[native-inputs]: Remove python-nose; add python-pytest and unzip; add
jquery-ui.
[arguments]: Add build phases "fix-and-disable-failing-tests" and
"install-jquery-ui", and move the "check" phase after the "install" phase;
use the default backend in setup.cfg.
(python2-matplotlib): Keep at version 2.2.3.
(python-matplotlib-documentation)[arguments]: Remove "check" phase.
-rw-r--r--gnu/packages/python-xyz.scm73
1 files changed, 66 insertions, 7 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 74abf336c8..1a4c804f37 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3806,14 +3806,14 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
 (define-public python-matplotlib
   (package
     (name "python-matplotlib")
-    (version "2.2.3")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "matplotlib" version))
        (sha256
         (base32
-         "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
+         "14qc109dibp32xfd9lah54djc0rc76fhbsj9cwyb328lzqmd5sqz"))))
     (build-system python-build-system)
     (propagated-inputs ; the following packages are all needed at run time
      `(("python-cycler" ,python-cycler)
@@ -3830,7 +3830,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ;; 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.
-       ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
+       ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
        ("python-pycairo" ,python-pycairo)
        ("python-cairocffi" ,python-cairocffi)))
     (inputs
@@ -3845,11 +3845,59 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ("tk" ,tk)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python-nose" ,python-nose)
-       ("python-mock" ,python-mock)))
+       ("python-pytest" ,python-pytest)
+       ("python-mock" ,python-mock)
+       ("unzip" ,unzip)
+       ("jquery-ui"
+        ,(origin
+           (method url-fetch)
+           (uri "https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip")
+           (sha256
+            (base32
+             "0kb21xf38diqgxcdi1z3s9ssq36pldvyqxy56hn6pcva6rs3c8zq"))))))
     (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" 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"
+                         ;; test_outward_ticks
+                         "lib/matplotlib/tests/test_tightlayout.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 ((dir (string-append (assoc-ref outputs "out")
+                                       "/lib/python3.7/site-packages/matplotlib/backends/web_backend/")))
+               (mkdir-p dir)
+               (invoke "unzip"
+                       (assoc-ref inputs "jquery-ui")
+                       "-d" dir))
+             #t))
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" "tests.py" "-v"
+                     "-m" "not network")))
          (add-before 'build 'configure-environment
            (lambda* (#:key outputs inputs #:allow-other-keys)
              (let ((cairo (assoc-ref inputs "cairo")))
@@ -3861,8 +3909,8 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
                  (lambda (port)
                    (format port "[directories]~%
 basedirlist = ~a,~a~%
- [rc_options]~%
-backend = TkAgg~%"
+[packages]~%
+tests = True~%"
                         (assoc-ref inputs "tcl")
                         (assoc-ref inputs "tk")))))
              #t)))))
@@ -3881,6 +3929,14 @@ toolkits.")
   (let ((matplotlib (package-with-python2
                      (strip-python2-variant python-matplotlib))))
     (package (inherit matplotlib)
+      (version "2.2.3")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (pypi-uri "matplotlib" version))
+         (sha256
+          (base32
+           "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
       ;; Make sure to use special packages for Python 2 instead
       ;; of those automatically rewritten by package-with-python2.
       (propagated-inputs
@@ -3930,6 +3986,9 @@ toolkits.")
      `(#:tests? #f ; we're only generating documentation
        #:phases
        (modify-phases %standard-phases
+         ;; The tests in python-matplotlib are run after the install phase, so
+         ;; we need to delete the extra phase here.
+         (delete 'check)
          (replace 'build
            (lambda _
              (chdir "doc")