notebook Documentation

Jupyter Interactive Notebook

13,279 stars Jupyter Notebook 1 file Β· ~6,093 tokens #closember#jupyter#jupyter-notebook#notebook
RAW Doc

1. Project Overview & Quickstart (jupyter/notebook)

File: README.md

Jupyter Notebook


The Jupyter notebook is a web-based notebook environment for interactive
computing.

Maintained versions

We maintain the two most recently released major versions of Jupyter Notebook,
Classic Notebook v6 and Notebook v7. Notebook v5 is no longer maintained.
All Notebook v5 users are strongly advised to upgrade to Classic Notebook v6 as soon as possible.

Upgrading to Notebook v7 may require more work, if you use custom extensions, as extensions written
for Notebook v5 or Classic Notebook v6 are not compatible with Notebook v7.

Notebook v7

The newest major version of Notebook is based on:

  • JupyterLab components for the frontend
  • Jupyter Server for the Python server

This represents a significant change to the jupyter/notebook code base.

To learn more about Notebook v7: https://jupyter.org/enhancement-proposals/notebook-v7/

Classic Notebook v6

Maintenance and security-related issues only are now being addressed in the 6.5.x branch.
It depends on nbclassic for the HTML/JavaScript/CSS assets.

New features and continuous improvement is now focused on Notebook v7 (see section above).

If you have an open pull request with a new feature or if you were planning to open one, we encourage switching over to the Jupyter Server and JupyterLab architecture, and distribute it as a server extension and / or JupyterLab prebuilt extension. That way your new feature will also be compatible with the new Notebook v7.

Jupyter notebook, the language-agnostic evolution of IPython notebook

Jupyter notebook is a language-agnostic HTML notebook application for
Project Jupyter. In 2015, Jupyter notebook was released as a part of
The Big Splitβ„’ of the IPython codebase. IPython 3 was the last major monolithic
release containing both language-agnostic code, such as the IPython notebook,
and language specific code, such as the IPython kernel for Python. As
computing spans across many languages, Project Jupyter will continue to develop the
language-agnostic Jupyter notebook in this repo and with the help of the
community develop language specific kernels which are found in their own
discrete repos.

Installation

You can find the installation documentation for the
Jupyter platform, on ReadTheDocs.
The documentation for advanced usage of Jupyter notebook can be found
here.

For a local installation, make sure you have
pip installed and run:

bash
pip install notebook

Usage - Running Jupyter notebook

Running in a local installation

Launch with:

bash
jupyter notebook

Running in a remote installation

You need some configuration before starting Jupyter notebook remotely. See Running a notebook server.

Development Installation

See CONTRIBUTING.md for how to set up a local development installation.

Contributing

If you are interested in contributing to the project, see CONTRIBUTING.md.

Community Guidelines and Code of Conduct

This repository is a Jupyter project and follows the Jupyter
Community Guides and Code of Conduct.

Resources

About the Jupyter Development Team

The Jupyter Development Team is the set of all contributors to the Jupyter project.
This includes all of the Jupyter subprojects.

The core team that coordinates development on GitHub can be found here:
https://github.com/jupyter/.

Jupyter uses a shared copyright model. Each contributor maintains copyright
over their contributions to Jupyter. But, it is important to note that these
contributions are typically only changes to the repositories. Thus, the Jupyter
source code, in its entirety is not the copyright of any single person or
institution. Instead, it is the collective copyright of the entire Jupyter
Development Team. If individual contributors want to maintain a record of what
changes/contributions they have specific copyright on, they should indicate
their copyright in the commit message of the change, when they commit the
change to one of the Jupyter repositories.

With this in mind, the following banner should be used in any source code file
to indicate the copyright and license terms:

text
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

File: docs/source/configuring/config_overview.md

(configuration-overview)=

Configuration Overview

Beyond the default configuration settings, you can configure a rich array of
options to suit your workflow. Here are areas that are commonly configured
when using Jupyter Notebook:

  • {ref}Jupyter's common configuration system <configure-common>
  • {ref}Jupyter Server <configure-jupyter-server>
  • {ref}Notebook extensions <configure-nbextensions>

Let's look at highlights of each area.

(configure-common)=

Jupyter's Common Configuration system

Jupyter applications, from the Notebook to JupyterHub to nbgrader, share a
common configuration system. The process for creating a configuration file
and editing settings is similar for all the Jupyter applications.

Disabling Custom CSS

Custom CSS is loaded by default as was done with Jupyter Notebook 6. In the jupyter configuration directory, the /.jupyter/custom/custom.css file will be loaded unless the application is initialized with the custom_css flag with the argument set to False as in --JupyterNotebookApp.custom_css=False.

(configure-jupyter-server)=

Jupyter server

The Jupyter Server runs the language kernel and communicates with the
front-end Notebook client (i.e. the familiar notebook interface).

  • Configuring the Jupyter Server

    To create a jupyter_server_config.py file in the .jupyter
    directory, with all the defaults commented out, use the following
    command:

    text
    $ jupyter server --generate-config
  • Running a Jupyter Server

  • Related: Configuring a language kernel
    to run in the Jupyter Server enables your server to run other languages, like R or Julia.

{warning}
Jupyter Notebook 7 is now based on Jupyter Server. This may break some previous `notebook` imports you may have been using, such as `notebook.auth` or `notebook.notebookapp`.

Check out the [migration guide](../migrating/server-imports.md) to learn more on how to update these server imports.

(configure-nbextensions)=

Notebook extensions

The Notebook frontend can be extended with JupyterLab extensions.

See the {ref}Frontend Extension Guide <frontend-extensions> for more information.

Security in Jupyter notebooks:
Since security policies vary from organization to organization, we encourage you to
consult with your security team on settings that would be best for your use
cases. Our documentation offers some responsible security practices, and we
recommend becoming familiar with the practices.


File: docs/source/configuring/interface_customization.md

Interface Customization

Multiple elements in the Notebook interface can be customized via the Settings Editor.

Layout

By default some widgets are displayed in pre-defined parts of the user interface, which are often called "areas" or "regions".
For example the table of contents will be displayed in the left area by default, while the debugger will be displayed in the right area.

However the positioning of some of these components can also be customized via the Settings Editor. Below are a few examples of how to do this.

Open the Markdown Preview on the left

It is often useful to be able to see a rendered preview of a Markdown document while editing it.

By default the Markdown Preview opens on the right side of the application. However it is also possible to open it on the left side by changing the Notebook Shell settings in the Advanced Settings Editor:

json
{
  "layout": {
    "Markdown Preview": {
      "area": "left"
    }
  }
}

Configuring a third-party widget

Third-party extensions can also add widgets to the application shell. This is for example the case with the Voila extension, which adds a preview widget to visualize a notebook as a dashboard.

By default in JupyterLab the Voila Preview is added to the main area next to the corresponding notebook. With Notebook 7 it is possible to move the Voila Preview to the right area by changing the Notebook Shell setting in the Advanced Settings Editor as follows:

json
{
  "layout": {
    "Voila Preview": {
      "area": "right"
    }
  }
}
{note}
Refer to the [JupyterLab Layout Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html#layout)
to learn more about the default positioning of other UI elements.

Toolbars, Menu bar and Context Menu

It is also possible to customize toolbars, menus and context menu entries via the Settings Editor.

For example the items of the notebook toolbar can be reordered, or some menu entries can be hidden.

{note}
Refer to the [JupyterLab Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html)
to learn more about general interface customization via the settings editor.

File: docs/source/configuring/plugins.md

Managing plugins

Notebook 7 uses the same extension system as JupyterLab. An extension can provide multiple plugins.

{note}
See the [JupyterLab documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html) to learn more about the extension system.

Examples

Disabling the download button

By default Notebook 7 provides a way to download files from the file browser. This functionality consists of a context menu entry and a main menu entry. They are provided by an application plugin that can be disabled.

To disable the download entry of file browser context menus, open a terminal and run the following command:

text
jupyter labextension disable @jupyterlab/filebrowser-extension:download

Then restart the application and refresh the page.


File: docs/source/examples/Notebook/examples_index.rst

================= Notebook Examples

The pages in this section are all converted notebook files. You can also
view these notebooks on nbviewer__.

__ https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/
docs/source/examples/Notebook/

.. toctree::
:maxdepth: 2

What is the Jupyter Notebook
Notebook Basics
Running Code
Working With Markdown Cells
Custom Keyboard Shortcuts
Importing Notebooks
Connecting with the Qt Console
Typesetting Equations


File: docs/source/extending/frontend_extensions.md

(frontend-extensions)=

Custom front-end extensions

This describes the basic steps to write a TypeScript extension for the Jupyter
notebook front-end. This allows you to customize the behaviour of the various
pages like the dashboard, the notebook, or the text editor.

Starting with Notebook 7, front-end extensions for the notebook can be developed
as prebuilt JupyterLab extensions.

This means Notebook 7 is able to reuse many of the existing extensions from the JupyterLab ecosystem as is.

If you would like to develop a prebuilt extension for Notebook 7, check out:


File: docs/source/extending/index.md

Extending the Notebook

{warning}
Please note that the extension system for Notebook 7 is radically different
from the one used in Notebook 6.5.x and earlier. If you are looking for
information on how to extend the classic Notebook, please refer to the
[documentation for NbClassic](https://nbclassic.readthedocs.io/en/latest/extending/index.html).
{note}
With Notebook 7 being developed on top of JupyterLab and Jupyter Server, the
frontend extension system is now based on the same extension system used by JupyterLab.

Server extensions are also now based on the same system used by Jupyter Server.
You will find below a link to the relevant documentations.

Certain subsystems of the notebook server are designed to be extended or
overridden by users. These documents explain these systems, and show how to
override the notebook's defaults with your own custom behavior.

{toctree}
:maxdepth: 2

Extending the Jupyter Server <https://jupyter-server.readthedocs.io/en/stable/developers/index.html>
frontend_extensions

File: docs/source/migrating/custom-themes.md

Custom themes in Notebook 7

In Notebook 7, the way to create custom themes has changed. This means that custom themes developed for Notebook 6 or earlier will not work with Notebook 7 and upwards.

This is for example the case for community contributed themes such as jupyter-themes.

Using a custom theme

Fortunately installing a custom theme for Notebook 7 is very easy. It is the same process as installing a regular extension.

For example let's say you want to install the JupyterLab Night theme. You can do so by running the following command:

bash
pip install jupyterlab-night

Then refresh the page and you should see the new theme available in the settings menu:

There are already many themes available on PyPI.

You can also find other themes using the jupyterlab-theme topic on GitHub: https://github.com/topics/jupyterlab-theme

For example:

Creating a custom theme

Creating a custom theme for Notebook 7 follows the same process as creating a custom theme for JupyterLab 4.

See the {ref}Frontend Extension Guide <frontend-extensions> to get you started. When creating the extension, select the Theme option in the cookiecutter prompt.


File: docs/source/migrating/frontend-extensions.md

Frontend Extensions in Notebook 7

{warning}
Any extension developed for Notebook \< 7 or NbClassic will not be
compatible with Notebook 7 and upwards.

Some extensions like nbgrader have already been ported. We invite you to
check if the extensions you are using have already been ported.

You can check the following resources to see if your extension is available for Notebook 7:

List of available Notebook 7 extensions

To get an idea of the extensions available for Notebook 7, you can check the following resources:

These resources are for JupyterLab, but many of them are compatible with Notebook 7 since Notebook 7 is based on JupyterLab.

JupyterLab equivalent extensions to the Classic Notebook

The jupyterlab-contrib organization maintains a list of extensions to ease the transition from the Classic Notebook to Notebook 7 and / or JupyterLab.

The list is available at the following URL: Migrating from the Classic Notebook


File: docs/source/migrating/multiple-interfaces.md

Simultaneous usage of different versions of Notebook 7 and the Classic Notebook UI

With the release of Notebook 7, the classic Notebook UI is now
available as a Jupyter Server extension, NbClassic. This means that
NbClassic can be installed independently of Notebook 7, and can be also
installed alongside Notebook 7.

Below are different scenarios that you might consider when updating to Notebook 7.

Try it on Binder

You can try JupyterLab, Notebook 7 and NBClassic installed together using this gist on Binder:

Using the `Interface` dropdown

Notebook 7 provides a dropdown menu to switch between the different user interfaces available on the same server.

It is available in the Notebook toolbar:

{note}
This dropdown is only available when using Notebook 7 or JupyterLab.
It is not displayed when using NbClassic.

NbClassic and Notebook 7

You can install NbClassic, Notebook 7 and JupyterLab, all three of
which will provide different user interfaces
on the same server. When Notebook 7 is available, the NbClassic UI, will
be served at the /nbclassic/tree base path rather than the
base path /tree used otherwise. If you are using Notebook 7 along
with NbClassic, you will also have JupyterLab installed as it is a
dependency of Notebook 7, and these front ends will be available
through the following base paths: JupyterLab at /lab, Notebook 7 at
/tree, and NbClassic at /nbclassic/tree.

NbClassic and Notebook 6.5.x

As NbClassic provides the static assets for Notebook 6.5.x, while
having both installed should cause no issues, the user interface provided
by these two packages will be the same. These UIs will be served by
different back end servers. An NbClassic instance will be at a server with the
/tree path and opening a Notebook 6.5.x instance will open on a
different server with the /tree path as well, presenting the same
static assets. When starting an instance of JupyterLab you will be able
to access the classic view of Notebook with NbClassic served on the same
server at /tree.

NbClassic and Notebook \<= 6.4.x

When using NbClassic and Notebook <= 6.4.x you can expect that these UIs
will not be only presented at different servers, meaning they will both
be available at their respective server under /tree but they
may also differ as potential changes to the NbClassic UI will not be
reflected in Notebook versions <= 6.4.x. In this case as well, you would
be able to access the classic view of Notebook with NbClassic served on
the same server, at /tree.

NbClassic and JupyterLab 3.x

When only JupyterLab 3.x is installed, then NbClassic does not have to be
explicitly installed as JupyterLab 3.x depends on it. They will run on
the same server, and are reachable via /tree for NbClassic and
/lab for JupyterLab.

NbClassic and JupyterLab 4.x

When only JupyterLab 4.x is installed, then NbClassic has to be installed
explicitly. They will run on the same server, and are reachable via
/tree for NbClassic, and /lab for JupyterLab.

NbClassic Independently

When you choose to install only NbClassic via pip install nbclassic,
the classic Notebook UI will be presented at the /tree path. As the
other frontends are not installed, attempting to access the other paths
will return errors. Note that NbClassic being a Jupyter Server extension,
indicated Jupyter Server will be available. This provides an additional
way to view the NbClassic frontend. You would be able to manually
enable the extension when running an instance of Jupyter Server,
> jupyter server --ServerApp.jpserver_extensions="nbclassic=True",
which will provide the NbClassic frontend at /tree path when visited.

2. Official Technical Reference & Guides (jupyter/docs)

Jupyter Documentation Working Group

The Docs Working Group serves as a support, helper, and advisory body to Jupyter subprojects on all aspects of documentation. The core pillars of our mission:

  • Improve all aspects of documentation across the Jupyter ecosystem
  • Make high quality documentation that is clear, comprehensive, inclusive, and serves the varying needs of Jupyter's diverse community
  • Engage with the community to help users with Jupyter products, discover their needs, and connect them with relevant information, expertise and resources

If you'd like to contact the members, you can email [email protected].

Welcome Everyone!

The Docs Working Group welcomes everyone who wants to participate. Newcomers, writers, programmers, community members, please join us! You can find more information about participating below.

Weekly Meetings

We have videoconference meetings every week where we discuss what we have been working on and get feedback from one another.

Anyone is welcome to attend, if they would like to discuss a topic or just listen in.

  • When: Wednesdays 8:00 AM Pacific Time (USA)
  • Where: jovyan Zoom
  • What: Meeting notes

Meeting notes (HackMD)

You can find a collaborative document at HackMD used for driving meeting discussion topics, and capturing notes. Please
feel free to come to the meetings and add agenda items for any items you'd like to discuss.

https://hackmd.io/Z5ITYv74Rde12drdpHW5PA

Existing Discussion Threads

Please add additional items here.

Read more about the Docs Working Group's founding (and related discussions) at these links: