summaryrefslogtreecommitdiff
path: root/gnu/packages/jupyter.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/jupyter.scm')
-rw-r--r--gnu/packages/jupyter.scm266
1 files changed, 265 insertions, 1 deletions
diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
index 52869dbeeb..0de7ad998a 100644
--- a/gnu/packages/jupyter.scm
+++ b/gnu/packages/jupyter.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Ludovic Courtès <[email protected]>
;;; Copyright © 2021 Ricardo Wurmus <[email protected]>
+;;; Copyright © 2021 Hugo Lecomte <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,18 +25,26 @@
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
+ #:use-module (gnu packages bash)
#: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)
#:use-module (gnu packages time)
+ #:use-module (gnu packages xml)
#:use-module (gnu packages tls)
- #:use-module (gnu packages xml))
+ #:use-module (gnu packages sphinx)
+ #:use-module (gnu packages serialization)
+ #:use-module (gnu packages docker))
(define-public python-jupyter-protocol
(package
@@ -242,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)
+ ("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")
@@ -310,3 +386,191 @@ are interactive HTML widgets for Jupyter notebooks and the IPython kernel.")
"This package provides a client library for executing notebooks. Formerly
nbconvert's @code{ExecutePreprocessor.}")
(license license:bsd-3)))
+
+(define-public repo2docker
+ (package
+ (name "repo2docker")
+ (version "2021.03.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jupyterhub/repo2docker/")
+ (commit "2021.03.0")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "18w8rgf7fpf79kx36y2c3xi3d52i41z112l3sz719d8kg0bir16m"))))
+ (outputs '("out" "doc"))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'patch-shebangs 'fix-install-miniforge
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (substitute* (find-files
+ out "^(install-miniforge|install-nix|\
+nix-shell-wrapper|repo2docker-entrypoint)")
+ (("^#!(.*)/bin/bash")
+ "#!/bin/bash"))
+ (substitute* (find-files out "^freeze\\.py$")
+ (("^#!(.*)/bin/python3")
+ "#!/bin/python3\n")))))
+ (add-after 'install 'make-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "doc"))
+ (doc (string-append out "/share/doc/"
+ ,name)))
+ (setenv "PYTHONPATH"
+ (string-append (getcwd) ":"
+ (getenv "PYTHONPATH")))
+ (with-directory-excursion "docs"
+ (invoke "make" "html")
+ (copy-recursively "build/html"
+ (string-append doc "/html")))))))))
+ (inputs
+ `(("python-traitlets" ,python-traitlets)
+ ("python-toml" ,python-toml)
+ ("python-semver" ,python-semver)
+ ("python-ruamel.yaml" ,python-ruamel.yaml)
+ ("python-requests" ,python-requests)
+ ("python-json-logger" ,python-json-logger)
+ ("python-jinja2" ,python-jinja2)
+ ("python-escapism" ,python-escapism)
+ ("python-docker" ,python-docker)))
+ (native-inputs
+ `(("python-sphinx" ,python-sphinx)
+ ("python-recommonmark" ,python-recommonmark)
+ ("python-sphinxcontrib-autoprogram" ,python-sphinxcontrib-autoprogram)
+ ("python-pydata-sphinx-theme" ,python-pydata-sphinx-theme)))
+ (home-page "https://repo2docker.readthedocs.io/en/latest/index.html#")
+ (synopsis "Generate docker images from repositories")
+ (description
+ "repo2docker fetches a repository (from GitHub, GitLab, Zenodo, Figshare,
+Dataverse installations, a Git repository or a local directory) and builds a
+container image in which the code can be executed. The image build process is
+based on the configuration files found in the repository. repo2docker can be
+used to explore a repository locally by building and executing the constructed
+image of the repository, or as a means of building images that are pushed to a
+Docker registry.")
+ (license license:bsd-3)))
+
+(define-public python-bash-kernel
+ (package
+ (name "python-bash-kernel")
+ (version "0.7.2")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "bash_kernel" version))
+ (sha256
+ (base32
+ "0w0nbr3iqqsgpk83rgd0f5b02462bkyj2n0h6i9dwyc1vpnq9350"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'bash-references
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "bash_kernel/kernel.py"
+ (("\"bash\"")
+ (string-append "\"" (assoc-ref inputs "bash") "/bin/bash\""))
+ (("\\['bash', ")
+ (string-append "['" (assoc-ref inputs "bash") "/bin/bash', ")))
+ #t))
+ (add-after 'install 'install-kernelspec
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "HOME" "/tmp")
+ (invoke "python" "-m" "bash_kernel.install" "--prefix" out)
+ #t))))))
+ (inputs
+ `(("bash" ,bash)))
+ (propagated-inputs
+ `(("python-pexpect" ,python-pexpect)
+ ("python-ipykernel" ,python-ipykernel)
+ ("python-jupyter-client" ,python-jupyter-client)))
+ (home-page "https://github.com/takluyver/bash_kernel")
+ (synopsis "Jupyter kernel for Bash")
+ (description "A bash shell kernel for Jupyter.")
+ (license license:expat)))
+
+(define-public python-sparqlkernel
+ (package
+ (name "python-sparqlkernel")
+ (version "1.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sparqlkernel" version))
+ (sha256
+ (base32
+ "004v22nyi5cnpxq4fiws89p7i5wcnzv45n3n70axdd6prh6rkapx"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'no-custom-css
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "sparqlkernel/install.py"
+ (("install_custom_css\\( destd, PKGNAME \\)") ""))
+ #t))
+ (add-after 'install 'install-kernelspec
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "HOME" "/tmp")
+ (add-installed-pythonpath inputs outputs)
+ (invoke
+ (string-append out "/bin/jupyter-sparqlkernel")
+ "install"
+ (string-append "--InstallKernelSpec.prefix=" out))
+ #t))))))
+ (native-inputs
+ `(("python-traitlets" ,python-traitlets)
+ ("python-jupyter-client" ,python-jupyter-client)
+ ("python-notebook" ,python-notebook)
+ ("python-ipykernel" ,python-ipykernel)
+ ("python-html5lib" ,python-html5lib-0.9)))
+ (propagated-inputs
+ `(("python-sparqlwrapper" ,python-sparqlwrapper)
+ ("python-pygments" ,python-pygments)))
+ (home-page "https://github.com/paulovn/sparql-kernel")
+ (synopsis "Jupyter kernel for SPARQL")
+ (description "This module installs a Jupyter kernel for SPARQL. It allows
+sending queries to an SPARQL endpoint and fetching & presenting the results in
+a notebook.")
+ (license license:bsd-3)))
+
+(define-public python-voila
+ (package
+ (name "python-voila")
+ (version "0.2.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "voila" version))
+ (sha256
+ (base32
+ "0krfc95yjlhjdmrsladhy6lpf4xs1zw49nmkyl4pkykndglvwa1m"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-jupyter-client" ,python-jupyter-client)
+ ("python-jupyter-server" ,python-jupyter-server)
+ ("python-nbclient" ,python-nbclient)
+ ("python-nbconvert" ,python-nbconvert)))
+ (native-inputs
+ `(("python-ipywidgets" ,python-ipywidgets)
+ ("python-jupyter-packaging" ,python-jupyter-packaging)
+ ("python-matplotlib" ,python-matplotlib)
+ ("python-mock" ,python-mock)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-tornasync" ,python-pytest-tornasync)
+ ("python-setuptools" ,python-setuptools)
+ ("python-tornado" ,python-tornado-6)))
+ (home-page "https://github.com/voila-dashboards/voila")
+ (synopsis "Render live Jupyter notebooks with interactive widgets")
+ (description
+ "Voilà turns Jupyter notebooks into standalone web applications. Unlike
+the usual HTML-converted notebooks, each user connecting to the Voilà tornado
+application gets a dedicated Jupyter kernel which can execute the callbacks to
+changes in Jupyter interactive widgets.")
+ (license license:bsd-3)))