rekado pushed a commit to branch master
in repository guix.

commit d4baa43992477835647619a542dfd2bd1944933b
Author: Ricardo Wurmus <[email protected]>
AuthorDate: Fri Jan 10 16:20:05 2025 +0100

    gnu: python-voila: Update to 0.5.8.
    
    * gnu/packages/jupyter.scm (python-voila): Update to 0.5.8.
    [build-system]: Use pyproject-build-system.
    [arguments]: Disable one test; remove phase 'relax-requirements; remove 
custom
    'check phase; add phases 'prepare-css and 'install-extensions.
    [native-inputs]: Add python-hatchling, python-hatch-jupyter-builder, and a
    number of additional origins.
    
    Change-Id: Id09a8cec5fedc77596315ffc662f0789a84e179a
---
 gnu/packages/jupyter.scm | 116 +++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 97 insertions(+), 19 deletions(-)

diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
index 901d27a44f..06ae1cc29c 100644
--- a/gnu/packages/jupyter.scm
+++ b/gnu/packages/jupyter.scm
@@ -1199,7 +1199,7 @@ analyzing Jupyter Notebooks.")
 (define-public python-voila
   (package
     (name "python-voila")
-    (version "0.3.5")
+    (version "0.5.8")
     (source
      (origin
        (method git-fetch)               ;no tests in pypi archive
@@ -1209,26 +1209,65 @@ analyzing Jupyter Notebooks.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "10qn34ddmcwcl9zxa0gwxarxr64k8hx4yysdwrf0iqvmzmkwmbbj"))))
-    (build-system python-build-system)
+         "1fxw7m03iqd4bj1075mx6bspl48nj1rddi4mbs9jkziadc5yv7in"))))
+    (build-system pyproject-build-system)
     (arguments
      (list
+      ;; Many tests depend on Node JavaScript dependencies and a running HTTP
+      ;; server; ignore them.
+      #:test-flags
+      '(list "--ignore" "tests/app"
+             "--ignore" "tests/server"
+             ;; No python3 jupyter kernel in the build environment.
+             "-k" "not test_execute_output")
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'relax-requirements
-            (lambda _
-              (substitute* "setup.cfg"
-                (("nbclient>=0.4.0,<0.6")
-                 "nbclient"))))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (when tests?
-                (setenv "HOME" "/tmp")
-                (invoke "pytest" "-vv"
-                        ;; Many tests depend on Node JavaScript dependencies
-                        ;; and a running HTTP server; ignore them.
-                        "--ignore" "tests/app"
-                        "--ignore" "tests/server")))))))
+          (add-after 'unpack 'prepare-css
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; FIXME: we skip the build of the JavaScript extension.  We
+              ;; hadn't built it in previous versions, because we could easily
+              ;; get away with it, but in this version we have to patch the
+              ;; build system.
+              (substitute* "pyproject.toml"
+                
(("\"voila/labextensions/jupyterlab-preview/static/style.js\",") "")
+                
(("\"share/jupyter/voila/themes/@jupyterlab/theme-dark-extension/index.css\"") 
""))
+              (copy-file (assoc-ref inputs "variables.css")
+                         
"share/jupyter/voila/templates/base/static/labvariables.css")
+              (copy-file (assoc-ref inputs "materialcolors.css")
+                         
"share/jupyter/voila/templates/base/static/materialcolors.css")))
+          ;; FIXME: This is likely wrong.  The official wheel has very
+          ;; different contents, which must be the result of actually running
+          ;; jlpm and building the JavaScript packages.
+          (add-after 'install 'install-extensions
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((dir (string-append #$output
+                                        "/share/jupyter/voila/labextensions/"
+                                        "@voila-dashboards/widgets-manager7")))
+                (mkdir-p dir)
+                (invoke "tar" "xf"
+                        (assoc-ref inputs
+                                   (string-append 
"voila-dashboards-widgets-manager7-"
+                                                  #$version ".tgz"))
+                        "--strip-components=1" "-C" dir))
+              (let ((dir (string-append #$output
+                                        "/share/jupyter/voila/labextensions/"
+                                        "@voila-dashboards/widgets-manager8")))
+                (mkdir-p dir)
+                (invoke "tar" "xf"
+                        (assoc-ref inputs
+                                   (string-append 
"voila-dashboards-widgets-manager8-"
+                                                  #$version ".tgz"))
+                        "--strip-components=1" "-C" dir))
+              (let ((dir (string-append #$output
+                                        "/share/jupyter/voila/labextensions/"
+                                        
"@voila-dashboards/jupyterlab-preview")))
+                (mkdir-p dir)
+                (invoke "tar" "xf"
+                        (assoc-ref inputs
+                                   
"voila-dashboards-jupyterlab-preview-2.3.8.tgz")
+                        "--strip-components=1" "-C" dir))))
+          (add-before 'check 'set-HOME
+            (lambda _ (setenv "HOME" "/tmp"))))))
     (propagated-inputs
      (list python-jupyter-client
            python-jupyter-server
@@ -1238,14 +1277,53 @@ analyzing Jupyter Notebooks.")
            python-traitlets
            python-websockets))
     (native-inputs
-     (list python-ipywidgets
+     (list python-hatchling
+           python-hatch-jupyter-builder
+           python-ipywidgets
            python-matplotlib
            python-mock
            python-numpy
            python-pandas
            python-pytest
            python-pytest-tornasync
-           python-tornado-6))
+           python-tornado-6
+           (origin
+             (method url-fetch)
+             (uri 
"https://unpkg.com/@jupyterlab/[email protected]/style/materialcolors.css";)
+             (sha256
+              (base32
+               "1kvb24r3hbhmjdiip09w9pgzv6xmjzndch279r3ppf7rkgdcgirs")))
+           (origin
+             (method url-fetch)
+             (uri 
"https://unpkg.com/@jupyterlab/[email protected]/style/variables.css";)
+             (sha256
+              (base32
+               "1mq6pr8w1r4jb2jgav15kkmjbca0x3nfsdv7q40xai994gsw5ygi")))
+           (origin
+             (method url-fetch)
+             (uri (string-append
+                   
"https://github.com/voila-dashboards/voila/releases/download/v";
+                   version "/voila-dashboards-widgets-manager7-" version 
".tgz"))
+             (sha256
+              (base32
+               "14fzn89nd6fnixzsy8jhz1y40z82msj5n44242zsjfxhlq8203rm")))
+           (origin
+             (method url-fetch)
+             (uri (string-append
+                   
"https://github.com/voila-dashboards/voila/releases/download/v";
+                   version "/voila-dashboards-widgets-manager8-" version 
".tgz"))
+             (sha256
+              (base32
+               "09kdrzpiw5psdq0ybrmmav1bwbli9gb4bdg0507069sipkap1nh4")))
+           ;; FIXME: we are not yet using this release tarball.
+           (origin
+             (method url-fetch)
+             (uri (string-append
+                   
"https://github.com/voila-dashboards/voila/releases/download/v";
+                   version "/voila-dashboards-jupyterlab-preview-2.3.8.tgz"))
+             (sha256
+              (base32
+               "1bj2v03183aksn0qcqvb6p6kh8p992pk0zyz1x4s2xpijyh0fxpm")))))
     (home-page "https://github.com/voila-dashboards/voila";)
     (synopsis "Render live Jupyter notebooks with interactive widgets")
     (description

Reply via email to