Merge pull request #2148 from takluyver/changelog-50

Work on changelog for 5.0
pull/2159/head
Matthias Bussonnier 9 years ago committed by GitHub
commit 6bf2aabda2

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -24,52 +24,93 @@ Upgrade to version 9+ of pip before upgrading ``notebook`` is strongly recommend
.. _release-5.0.0:
Notebook version 5.0
====================
--------------------
This is the first major release of the Notebook Application and Server after
the version 4.0 created by the "Big Split" of IPython into IPython and Jupyter.
This is the first major release of the Jupyter Notebook since version 4.0 was
created by the "Big Split" of IPython and Jupyter.
We encourage users to start trying JupyterLab in preparation for a future
transition.
The Notebook Web Application and Server have seen more than 200 pull requests
merged since the 4.x series. This only covers a small subset of the new
features available on this new version; bugfixes are omitted.
We have merged more than 200 pull requests since the 4.x series. Some of the
major user-facing changes are described here.
- Dashboard/tree can now be ordered by ``last-modified`` and ``name``,
(:ghpull:`943`)
Cell tags
*********
- Keyboard shortcuts for command mode are now editable from within the UI, see
the ``Help > Edit Keyboard Shortcuts`` Menu item and follow instructions.
(:ghpull:`1347`)
There is a new cell toolbar for adding *cell tags* (:ghpull:`2048`):
.. image:: /_static/images/cell-tags-toolbar.png
:align: center
- Markdown cells now supports attachments. Simply drag and drop an image from
Cell tags are a lightweight way to customise the behaviour of tools working with
notebooks; we're working on building support for them into tools like `nbconvert
<http://nbconvert.readthedocs.io/en/latest/>`__ and `nbval
<https://github.com/computationalmodelling/nbval>`__.
The UI for editing cell tags is basic for now; we hope to improve it in future
releases.
Table style
***********
The default styling for tables in the notebook has been updated (:ghpull:`1776`):
.. image:: /_static/images/table-style-change.png
:align: center
Customise keyboard shortcuts
****************************
You can now edit keyboard shortcuts for command mode within the UI
(:ghpull:`1347`):
.. image:: /_static/images/shortcut-editor.png
:align: center
See the ``Help > Edit Keyboard Shortcuts`` menu item and follow the instructions.
Other additions
***************
- You can copy and paste cells between notebooks, using :kbd:`Ctrl-C` and
:kbd:`Ctrl-V` (:kbd:`Cmd-C` and :kbd:`Cmd-V` on Mac).
- It's easier to configure a password for the notebook with the new
``jupyter notebook password`` command (:ghpull:`2007`).
- The file list can now be ordered by *last modified* or by *name*
(:ghpull:`943`).
- Markdown cells now support attachments. Simply drag and drop an image from
your desktop to a markdown cell to add it. Unlike relative links that you
enter manually, attachments are embedded in the notebook itself. A
non-referenced attachment will be automatically scrubbed from the notebook on
save. :ghpull:`621`
enter manually, attachments are embedded in the notebook itself. An
unreferenced attachment will be automatically scrubbed from the notebook on
save (:ghpull:`621`).
- Undoing cell deletion now supports undeleting multiple cells. Cells may not be
in the same order as before their deletion, depending on the actions you did
on the meantime, but this should should help reduce the impact of
accidentally deleting code.
- Undoing cell deletion now supports undeleting multiple cells. Cell may not be
in the same order as before their deletion depending on the actions you did
on the meantime, but this should should help minimize the impact of
accidental code deletion.
- The file browser now has *Edit* and *View* buttons.
- Dashboard now has ``edit`` and ``view`` buttons.
- The file browser now supports moving multiple files at once
(:ghpull:`1088`).
- The Dashboard/Tree view now supports moving multiple files at once.
:ghpull:`1088`
- The Notebook will refuse to run as root unless the ``--allow-root`` flag is
given (:ghpull:`1115`).
- Notebook refuses to run as root user (unless forced to) :ghpull:`1115`
- Keyboard shortcuts are now declarative (:ghpull:`1234`).
- Keyboard shortcuts are now declarative (:ghpull:`1234`)
- Toggling line numbers can now affect all cells (:ghpull:`1312`).
- Toggling line numbers can now affect all cells (:ghpull:`1312`)
- Add more visible *Trusted* and *Untrusted* notifications (:ghpull:`1658`).
- Add more visible ``Trusted`` and ``Untrusted`` notifications :ghpull:`1658`
- The tab icon in the browser now changes to indicate when the kernel is busy
(:ghpull:`1837`).
We remind readers that upgrading ``notebook`` only affect part of the user
Remember that upgrading ``notebook`` only affects the user
interface. Upgrading kernels and libraries may also provide new features,
better stability and integration with the notebook interface.
@ -161,7 +202,7 @@ Bug fixes:
Other improvements:
- Allow JSON output data with mime type "application/*+json"
- Allow JSON output data with mime type ``application/*+json``
- Allow kernelspecs to have spaces in them for backward compat
- Allow websocket connections from scripts
- Allow :code:`None` for post_save_hook

@ -30,6 +30,8 @@ for item in sys.path:
# add repo root to sys.path
# here = root/docs/source
here = os.path.abspath(os.path.dirname(__file__))
sphinxext = os.path.join(os.path.dirname(here), 'sphinxext')
sys.path.insert(0, sphinxext)
repo_root = os.path.dirname(os.path.dirname(here))
sys.path.insert(0, repo_root)
@ -70,6 +72,7 @@ extensions = [
'sphinx.ext.mathjax',
'IPython.sphinxext.ipython_console_highlighting',
'nbsphinx',
'github',
]
# Add any paths that contain templates here, relative to this directory.
@ -91,6 +94,9 @@ project = 'Jupyter Notebook'
copyright = '2015, Jupyter Team, https://jupyter.org'
author = 'The Jupyter Team'
# ghissue config
github_project_url = "https://github.com/jupyter/notebook"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.

@ -0,0 +1,157 @@
"""Define text roles for GitHub
* ghissue - Issue
* ghpull - Pull Request
* ghuser - User
Adapted from bitbucket example here:
https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/bitbucket/sphinxcontrib/bitbucket.py
Authors
-------
* Doug Hellmann
* Min RK
"""
#
# Original Copyright (c) 2010 Doug Hellmann. All rights reserved.
#
from docutils import nodes, utils
from docutils.parsers.rst.roles import set_classes
def make_link_node(rawtext, app, type, slug, options):
"""Create a link to a github resource.
:param rawtext: Text being replaced with link node.
:param app: Sphinx application context
:param type: Link type (issues, changeset, etc.)
:param slug: ID of the thing to link to
:param options: Options dictionary passed to role func.
"""
try:
base = app.config.github_project_url
if not base:
raise AttributeError
if not base.endswith('/'):
base += '/'
except AttributeError as err:
raise ValueError('github_project_url configuration value is not set (%s)' % str(err))
ref = base + type + '/' + slug + '/'
set_classes(options)
prefix = "#"
if type == 'pull':
prefix = "PR " + prefix
node = nodes.reference(rawtext, prefix + utils.unescape(slug), refuri=ref,
**options)
return node
def ghissue_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
"""Link to a GitHub issue.
Returns 2 part tuple containing list of nodes to insert into the
document and a list of system messages. Both are allowed to be
empty.
:param name: The role name used in the document.
:param rawtext: The entire markup snippet, with role.
:param text: The text marked with the role.
:param lineno: The line number where rawtext appears in the input.
:param inliner: The inliner instance that called us.
:param options: Directive options for customization.
:param content: The directive content for customization.
"""
try:
issue_num = int(text)
if issue_num <= 0:
raise ValueError
except ValueError:
msg = inliner.reporter.error(
'GitHub issue number must be a number greater than or equal to 1; '
'"%s" is invalid.' % text, line=lineno)
prb = inliner.problematic(rawtext, rawtext, msg)
return [prb], [msg]
app = inliner.document.settings.env.app
#app.info('issue %r' % text)
if 'pull' in name.lower():
category = 'pull'
elif 'issue' in name.lower():
category = 'issues'
else:
msg = inliner.reporter.error(
'GitHub roles include "ghpull" and "ghissue", '
'"%s" is invalid.' % name, line=lineno)
prb = inliner.problematic(rawtext, rawtext, msg)
return [prb], [msg]
node = make_link_node(rawtext, app, category, str(issue_num), options)
return [node], []
def ghuser_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
"""Link to a GitHub user.
Returns 2 part tuple containing list of nodes to insert into the
document and a list of system messages. Both are allowed to be
empty.
:param name: The role name used in the document.
:param rawtext: The entire markup snippet, with role.
:param text: The text marked with the role.
:param lineno: The line number where rawtext appears in the input.
:param inliner: The inliner instance that called us.
:param options: Directive options for customization.
:param content: The directive content for customization.
"""
app = inliner.document.settings.env.app
#app.info('user link %r' % text)
ref = 'https://www.github.com/' + text
node = nodes.reference(rawtext, text, refuri=ref, **options)
return [node], []
def ghcommit_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
"""Link to a GitHub commit.
Returns 2 part tuple containing list of nodes to insert into the
document and a list of system messages. Both are allowed to be
empty.
:param name: The role name used in the document.
:param rawtext: The entire markup snippet, with role.
:param text: The text marked with the role.
:param lineno: The line number where rawtext appears in the input.
:param inliner: The inliner instance that called us.
:param options: Directive options for customization.
:param content: The directive content for customization.
"""
app = inliner.document.settings.env.app
#app.info('user link %r' % text)
try:
base = app.config.github_project_url
if not base:
raise AttributeError
if not base.endswith('/'):
base += '/'
except AttributeError as err:
raise ValueError('github_project_url configuration value is not set (%s)' % str(err))
ref = base + text
node = nodes.reference(rawtext, text[:6], refuri=ref, **options)
return [node], []
def setup(app):
"""Install the plugin.
:param app: Sphinx application context.
"""
app.info('Initializing GitHub plugin')
app.add_role('ghissue', ghissue_role)
app.add_role('ghpull', ghissue_role)
app.add_role('ghuser', ghuser_role)
app.add_role('ghcommit', ghcommit_role)
app.add_config_value('github_project_url', None, 'env')
metadata = {'parallel_read_safe': True, 'parallel_write_safe': True}
return metadata
Loading…
Cancel
Save