All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added a basic, styled
login.html
template. (220, 295) - Added new extension manager API for handling server extensions. (248, 265, 275, 303)
- The favicon and Jupyter logo are now available under jupyter_server's static namespace. (284)
load_jupyter_server_extension
should be renamed to_load_jupyter_server_extension
in server extensions. Server now throws a warning when the old name is used. (213)- Docs for server extensions now recommend using
authenticated
decorator for handlers. (219) _load_jupyter_server_paths
should be renamed to_load_jupyter_server_points
in server extensions. (277)static_url_prefix
in ExtensionApps is now a configurable trait. (289)extension_name
trait was removed in favor ofname
. (232)- Dropped support for Python 3.5. (296)
- Made the
config_dir_name
trait configurable inConfigManager
. (297)
- Removed ipykernel as a dependency of jupyter_server. (255)
- Prevent a re-definition of prometheus metrics if
notebook
package already imports them. (#210) - Fixed
terminals
REST API unit tests that weren't shutting down properly. (221) - Fixed jupyter_server on Windows for Python < 3.7. Added patch to handle subprocess cleanup. (240)
base_url
was being duplicated when getting a url path from theServerApp
. (280)- Extension URLs are now properly prefixed with
base_url
. Previously, allstatic
paths were not. (285) - Changed ExtensionApp mixin to inherit from
HasTraits
. This broke in traitlets 5.0 (294) - Replaces
urlparse
withurl_path_join
to prevent URL squashing issues. (304)
- (#191) Async kernel managment is now possible using the
AsyncKernelManager
fromjupyter_client
- (#201) Parameters can now be passed to new terminals created by the
terminals
REST API.
- (#196) Documentation was rewritten + refactored to use pydata_sphinx_theme.
- (#174)
ExtensionHandler
was changed to an Mixin class, i.e.ExtensionHandlerMixin
- (#194) The bundlerextension entry point was removed.
- pytest-plugin for Jupyter Server.
- Allows one to write async/await syntax in tests functions.
- Some particularly useful fixtures include:
serverapp
: a default ServerApp instance that handles setup+teardown.configurable_serverapp
: a function that returns a ServerApp instance.fetch
: an awaitable function that tests makes requests to the server APIcreate_notebook
: a function that writes a notebook to a given temporary file path.
extension
submodule (#48)- ExtensionApp - configurable JupyterApp-subclass for server extensions
- Most useful for Jupyter frontends, like Notebook, JupyterLab, nteract, voila etc.
- Launch with entrypoints
- Configure from file or CLI
- Add custom templates, static assets, handlers, etc.
- Static assets are served behind a
/static/<extension_name>
endpoint. - Run server extensions in "standalone mode" (#70 and #76)
- ExtensionHandler - tornado handlers for extensions.
- Finds static assets at
/static/<extension_name>
- Finds static assets at
- ExtensionApp - configurable JupyterApp-subclass for server extensions
jupyter serverextension <command>
entrypoint has been changed tojupyter server extension <command>
.toggle_jupyter_server
andvalidate_jupyter_server
function no longer take a Logger object as an argument.- Changed testing framework from nosetests to pytest (#152)
- Depend on pytest-tornasync extension for handling tornado/asyncio eventloop
- Depend on pytest-console-scripts for testing CLI entrypoints
- Added Github actions as a testing framework along side Travis and Azure (#146)
- Removed the option to update
root_dir
trait in FileContentsManager and MappingKernelManager in ServerApp (#135)
- Synced Jupyter Server with Notebook PRs in batches (ended on 2019-09-27)
- Added a "secure_write to function for cookie/token saves (#77)