Metadata-Version: 2.4
Name: jupyverse
Version: 0.13.2
Summary: A set of FPS plugins implementing a Jupyter server
Keywords: jupyter,server,fastapi,plugins
Author: Jupyter Development Team
Author-email: Jupyter Development Team <jupyter@googlegroups.com>
License-Expression: BSD-3-Clause
License-File: COPYING.md
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: fps[click,fastapi,anycorn]>=0.6.0,<0.7.0
Requires-Dist: fps-contents>=0.10.3,<0.11.0
Requires-Dist: fps-file-id>=0.3.4,<0.4.0
Requires-Dist: fps-file-watcher>=0.1.3,<0.2.0
Requires-Dist: fps-kernel-subprocess>=0.1.5,<0.2.0
Requires-Dist: fps-kernels>=0.10.11,<0.11.0
Requires-Dist: fps-terminals>=0.9.3,<0.10.0
Requires-Dist: fps-nbconvert>=0.9.3,<0.10.0
Requires-Dist: fps-lab>=0.10.2,<0.11.0
Requires-Dist: fps-frontend>=0.9.3,<0.10.0
Requires-Dist: jupyverse-api>=0.14.0,<0.15.0
Requires-Dist: rich-click>=1.6.1,<2
Requires-Dist: fps-auth>=0.9.3,<0.10.0 ; extra == 'auth'
Requires-Dist: fps-login>=0.9.3,<0.10.0 ; extra == 'auth'
Requires-Dist: fps-auth-fief>=0.9.4,<0.10.0 ; extra == 'auth-fief'
Requires-Dist: fps-auth-jupyterhub>=0.9.4,<0.10.0 ; extra == 'auth-jupyterhub'
Requires-Dist: jupyter-collaboration-ui ; extra == 'collaboration'
Requires-Dist: jupyter-docprovider ; extra == 'collaboration'
Requires-Dist: fps-yjs>=0.13.0,<0.14.0 ; extra == 'collaboration'
Requires-Dist: fps-ystore-sqlite>=0.1.0,<0.2.0 ; extra == 'collaboration'
Requires-Dist: fps-yrooms>=0.1.2,<0.2.0 ; extra == 'collaboration'
Requires-Dist: fps-file-watcher-poll>=0.1.4,<0.2.0 ; extra == 'file-watcher-poll'
Requires-Dist: fps-jupyterlab>=0.10.5,<0.11.0 ; extra == 'jupyterlab'
Requires-Dist: fps-kernel-web-worker>=0.1.7,<0.2.0 ; extra == 'kernel-web-worker'
Requires-Dist: fps-noauth>=0.9.4,<0.10.0 ; extra == 'noauth'
Requires-Dist: fps-notebook>=0.9.7,<0.10.0 ; extra == 'notebook'
Requires-Dist: fps-resource-usage>=0.9.4,<0.10.0 ; extra == 'resource-usage'
Requires-Dist: fps-webdav>=0.9.4,<0.10.0 ; extra == 'webdav'
Requires-Python: >=3.10
Project-URL: Homepage, https://jupyter.org
Provides-Extra: auth
Provides-Extra: auth-fief
Provides-Extra: auth-jupyterhub
Provides-Extra: collaboration
Provides-Extra: file-watcher-poll
Provides-Extra: jupyterlab
Provides-Extra: kernel-web-worker
Provides-Extra: noauth
Provides-Extra: notebook
Provides-Extra: resource-usage
Provides-Extra: webdav
Description-Content-Type: text/markdown

[![Build Status](https://github.com/jupyter-server/jupyverse/workflows/test/badge.svg)](https://github.com/jupyter-server/jupyverse/actions)

# Jupyverse

A set of [FPS](https://github.com/jupyter-server/fps) modules implementing a Jupyter server.

Try it online:
- JupyterLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-jupyterlab)
- Jupyter Notebook frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-notebook)

Documentation is available [here](https://jupyter-server.github.io/jupyverse).

## Install

### From PyPI

Jupyverse can be installed with `pip`, for instance the following:

```bash
pip install "jupyverse[jupyterlab,auth]"
```

will install jupyverse with the JupyterLab frontend and the [auth](https://github.com/jupyter-server/jupyverse/tree/main/plugins/auth) plugin.

### From conda-forge

Jupyverse can be installed with `micromamba`:

```bash
micromamba create -n jupyverse
micromamba activate jupyverse
micromamba install jupyverse fps-jupyterlab fps-auth
```

### Development install

Clone or fork this repository:

```bash
git clone https://github.com/jupyter-server/jupyverse.git
cd jupyverse
```

Then either use `uv` or `pip` to install in development mode.

#### Using `uv`

Install all plugins:

```bash
uv venv
uv pip install --group test -e ".[ \
    jupyterlab, \
    notebook, \
    auth, \
    auth-fief, \
    auth-jupyterhub, \
    noauth, \
    file-watcher-poll, \
    kernel-web-worker, \
    resource-usage, \
    webdav \
]"
```

Run tests with:

```bash
uv run pytest -v
```

For testing, all the plugins are installed in the same environment. Jupyverse will automatically start all plugins
registered in the `jupyverse.modules` entry point. Some of them should be disabled, for instance there should be only
one authentication plugin:

```bash
uv run jupyverse \
    --disable auth_fief \
    --disable auth_jupyterhub \
    --disable noauth \
    --disable file_watcher_poll \
    --disable notebook
```

#### Using `pip`

Using `pip` sometimes gives more control, for instance if you want to install third-party libraries
in development mode too. It is recommended to create a virtual environment before running the
following commands:

```bash
pip install --group test \
    -e jupyverse_api \
    -e plugins/auth \
    -e plugins/auth_fief \
    -e plugins/auth_jupyterhub \
    -e plugins/contents \
    -e plugins/file_id \
    -e plugins/file_watcher \
    -e plugins/file_watcher_poll \
    -e plugins/frontend \
    -e plugins/jupyterlab \
    -e plugins/kernel_subprocess \
    -e plugins/kernel_web_worker \
    -e plugins/kernels \
    -e plugins/lab \
    -e plugins/login \
    -e plugins/nbconvert \
    -e plugins/noauth \
    -e plugins/notebook \
    -e plugins/resource_usage \
    -e plugins/terminals \
    -e plugins/webdav \
    -e plugins/yjs \
    -e .
```

Run tests with:

```bash
pytest -v
```

Run jupyverse with:

```bash
jupyverse \
    --disable auth_fief \
    --disable auth_jupyterhub \
    --disable noauth \
    --disable file_watcher_poll \
    --disable notebook
```
