summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/jupyter.scm69
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
index 8cb95f4681..1900c774db 100644
--- a/gnu/packages/jupyter.scm
+++ b/gnu/packages/jupyter.scm
@@ -29,11 +29,13 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages monitoring)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages rdf)
@@ -249,6 +251,73 @@ Jupyter Python packages that require a pre-build step that may include
 JavaScript build steps.")
     (license license:bsd-3)))
 
+(define-public python-jupyter-server
+  (package
+    (name "python-jupyter-server")
+    (version "1.10.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jupyter_server" version))
+       (sha256
+        (base32
+         "1gvjbsw5nl94hz02rnkr4g4kkvh9fz7i45vz17hzwyvdpj7bd8yk"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (let ((home (string-append (getcwd) "/guix-home")))
+                 (setenv "HOME" home))
+               ;; Add jupyter-server executable to PATH.
+               (setenv "PATH"
+                       (string-append (assoc-ref outputs "out") "/bin:"
+                                      (getenv "PATH")))
+               (with-directory-excursion "jupyter_server"
+                 ;; The pytest fixtures are only loaded when the file is
+                 ;; called conftest.py.
+                 (rename-file "pytest_plugin.py" "conftest.py")
+                 (invoke "pytest" "-vv"
+                         ;; Fails with internal server error
+                         "-k" "not test_list_formats"
+                         ;; Integration tests require a server.
+                         "-m" "not integration_test"))))))))
+    (propagated-inputs
+     `(("python-anyio" ,python-anyio)
+       ("python-argon2-cffi" ,python-argon2-cffi)
+       ("python-ipython-genutils" ,python-ipython-genutils)
+       ("python-jinja2" ,python-jinja2)
+       ("python-jupyter-client" ,python-jupyter-client)
+       ("python-jupyter-core" ,python-jupyter-core)
+       ("python-nbconvert" ,python-nbconvert)
+       ("python-nbformat" ,python-nbformat)
+       ("python-prometheus-client" ,python-prometheus-client)
+       ("python-pyzmq" ,python-pyzmq)
+       ("python-requests-unixsocket" ,python-requests-unixsocket)
+       ("python-send2trash" ,python-send2trash)
+       ("python-terminado" ,python-terminado)
+       ("python-tornado" ,python-tornado-6)
+       ("python-traitlets" ,python-traitlets)
+       ("python-websocket-client" ,python-websocket-client)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-ipykernel" ,python-ipykernel)
+       ("python-pytest" ,python-pytest-6)
+       ("python-pytest-console-scripts" ,python-pytest-console-scripts)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-mock" ,python-pytest-mock)
+       ("python-pytest-tornasync" ,python-pytest-tornasync)
+       ("python-requests" ,python-requests)))
+    (home-page "https://jupyter.org")
+    (synopsis "Core services, APIs, and REST endpoints for Jupyter web applications")
+    (description
+     "This package provides the backend—i.e. core services, APIs, and REST
+endpoints—to Jupyter web applications.")
+    (license license:expat)))
+
 (define-public python-jupyterlab-widgets
   (package
     (name "python-jupyterlab-widgets")