Subject: [bug#41968] [PATCH 5/5] gnu: python-plotly: Update to 4.8.1.

From: Pierre Langlois <[email-masked]>
Date: Sat, 20 Jun 2020 20:31:07 +0200

>From a1526919f28d8ea4a958ef3b672b3187c8c3bd82 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <[email-masked]>
Date: Thu, 18 Jun 2020 00:59:09 +0200
Subject: [PATCH 5/5] gnu: python-plotly: Update to 4.8.1.

But keep version 2.4.1 around for packages that still need it and for python2
support.

* gnu/packages/graph.scm (python-plotly): Update to 4.8.1.
[source]: Use git-fetch so that tests are also included.
[arguments]: Enable tests.
[home-page]: Follow redirect.
(python-plotly-2.4.1): New variable.
(python2-plotly): Inherit from python-plotly-2.4.1.
* gnu/packages/bioinformatics.scm (python-deeptools)[native-inputs]: Depend on
python-plotly-2.4.1.
---
 gnu/packages/bioinformatics.scm |  2 +-
 gnu/packages/graph.scm          | 74 ++++++++++++++++++++++++++-------
 2 files changed, 61 insertions(+), 15 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 3ee134db77..ce54c613b0 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2431,7 +2431,7 @@ interval trees with associated meta-data.  It is primarily used by the
        ("python-pysam" ,python-pysam)
        ("python-scipy" ,python-scipy)
        ("python-deeptoolsintervals" ,python-deeptoolsintervals)
-       ("python-plotly" ,python-plotly)))
+       ("python-plotly" ,python-plotly-2.4.1)))
     (home-page "https://pypi.org/project/deepTools/")
     (synopsis "Useful tools for exploring deep sequencing data")
     (description "This package addresses the challenge of handling large amounts
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index dc8f2c64a2..762ee30632 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2019 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2019 Andreas Enge <[email-masked]>
 ;;; Copyright © 2020 Alexander Krotov <[email-masked]>
+;;; Copyright © 2020 Pierre Langlois <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -235,25 +236,49 @@ lines.")
 (define-public python-plotly
   (package
     (name "python-plotly")
-    (version "2.4.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "plotly" version))
-        (sha256
-         (base32
-          "0s9gk2fl53x8wwncs3fwii1vzfngr0sskv15v3mpshqmrqfrk27m"))))
+    (version "4.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/plotly/plotly.py.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "08ab677gr85m10zhixr6dnmlfws8q6sra7nhyb8nf3r8dx1ffqhz"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; The tests are not distributed in the release
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "packages/python/plotly")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "-x" "plotly/tests/test_core")
+             (invoke "pytest" "-x" "plotly/tests/test_io")
+             ;; FIXME: Add optional dependencies and enable their tests.
+             ;; (invoke "pytest" "-x" "plotly/tests/test_optional")
+             (invoke "pytest" "_plotly_utils/tests")))
+         (add-before 'reset-gzip-timestamps 'make-files-writable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (file) (chmod file #o644))
+                 (find-files out "\\.gz"))
+               #t))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-decorator" ,python-decorator)
-       ("python-nbformat" ,python-nbformat)
+       ("python-ipywidgets" ,python-ipywidgets)
        ("python-pandas" ,python-pandas)
-       ("python-pytz" ,python-pytz)
        ("python-requests" ,python-requests)
-       ("python-six" ,python-six)))
-    (home-page "https://plot.ly/python/")
+       ("python-retrying" ,python-retrying)
+       ("python-six" ,python-six)
+       ("python-statsmodels" ,python-statsmodels)
+       ("python-xarray" ,python-xarray)))
+    (home-page "https://plotly.com/python/")
     (synopsis "Interactive plotting library for Python")
     (description "Plotly's Python graphing library makes interactive,
 publication-quality graphs online.  Examples of how to make line plots, scatter
@@ -261,8 +286,29 @@ plots, area charts, bar charts, error bars, box plots, histograms, heatmaps,
 subplots, multiple-axes, polar charts, and bubble charts. ")
     (license license:expat)))
 
+(define-public python-plotly-2.4.1
+  (package (inherit python-plotly)
+    (version "2.4.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "plotly" version))
+        (sha256
+         (base32
+          "0s9gk2fl53x8wwncs3fwii1vzfngr0sskv15v3mpshqmrqfrk27m"))))
+   (native-inputs '())
+   (propagated-inputs
+    `(("python-decorator" ,python-decorator)
+      ("python-nbformat" ,python-nbformat)
+      ("python-pandas" ,python-pandas)
+      ("python-pytz" ,python-pytz)
+      ("python-requests" ,python-requests)
+      ("python-six" ,python-six)))
+    (arguments
+     '(#:tests? #f)))) ; The tests are not distributed in the release
+
 (define-public python2-plotly
-  (package-with-python2 python-plotly))
+  (package-with-python2 python-plotly-2.4.1))
 
 (define-public python-louvain
   (package
-- 
2.26.2