##// END OF EJS Templates
release notes for 3.1
Min RK -
Show More
@@ -1,173 +1,220 b''
1 .. _issues_list_3:
1 .. _issues_list_3:
2
2
3 Issues closed in the 3.x development cycle
3 Issues closed in the 3.x development cycle
4 ==========================================
4 ==========================================
5
5
6 Issues closed in 3.1
7 --------------------
8
9 GitHub stats for 2015/02/27 - 2015/04/03 (since 3.0)
10
11 These lists are automatically generated, and may be incomplete or contain duplicates.
12
13 We closed 46 issues and merged 133 pull requests.
14 The full list can be seen `on GitHub <https://github.com/ipython/ipython/milestones/3.1>`_.
15
16 The following 33 authors contributed 344 commits:
17
18 * Abe Guerra
19 * Adal Chiriliuc
20 * Benjamin Ragan-Kelley
21 * Brian Drawert
22 * Fernando Perez
23 * Gareth Elston
24 * Gert-Ludwig Ingold
25 * Giuseppe Venturini
26 * Jakob Gager
27 * Jan Schulz
28 * Jason Grout
29 * Jessica B. Hamrick
30 * Jonathan Frederic
31 * Justin Tyberg
32 * Lorena Pantano
33 * mashenjun
34 * Mathieu
35 * Matthias Bussonnier
36 * Morten Enemark Lund
37 * Naveen Nathan
38 * Nicholas Bollweg
39 * onesandzeroes
40 * Patrick Snape
41 * Peter Parente
42 * RickWinter
43 * Robert Smith
44 * Ryan Nelson
45 * Scott Sanderson
46 * Sylvain Corlay
47 * Thomas Kluyver
48 * tmtabor
49 * Wieland Hoffmann
50 * Yuval Langer
51
52
6 Issues closed in 3.0
53 Issues closed in 3.0
7 ----------------------
54 --------------------
8
55
9 GitHub stats for 2014/04/02 - 2015/02/13 (since 2.0)
56 GitHub stats for 2014/04/02 - 2015/02/13 (since 2.0)
10
57
11 These lists are automatically generated, and may be incomplete or contain duplicates.
58 These lists are automatically generated, and may be incomplete or contain duplicates.
12
59
13 We closed 469 issues and merged 925 pull requests.
60 We closed 469 issues and merged 925 pull requests.
14 The full list can be seen `on GitHub <https://github.com/ipython/ipython/milestones/3.0>`_.
61 The full list can be seen `on GitHub <https://github.com/ipython/ipython/milestones/3.0>`_.
15
62
16 The following 155 authors contributed 5975 commits.
63 The following 155 authors contributed 5975 commits.
17
64
18 * A.J. Holyoake
65 * A.J. Holyoake
19 * abalkin
66 * abalkin
20 * Adam Hodgen
67 * Adam Hodgen
21 * Adrian Price-Whelan
68 * Adrian Price-Whelan
22 * Amin Bandali
69 * Amin Bandali
23 * Andreas Amann
70 * Andreas Amann
24 * Andrew Dawes
71 * Andrew Dawes
25 * Andrew Jesaitis
72 * Andrew Jesaitis
26 * Andrew Payne
73 * Andrew Payne
27 * AnneTheAgile
74 * AnneTheAgile
28 * Aron Ahmadia
75 * Aron Ahmadia
29 * Ben Duffield
76 * Ben Duffield
30 * Benjamin ABEL
77 * Benjamin ABEL
31 * Benjamin Ragan-Kelley
78 * Benjamin Ragan-Kelley
32 * Benjamin Schultz
79 * Benjamin Schultz
33 * Björn Grüning
80 * Björn Grüning
34 * Björn Linse
81 * Björn Linse
35 * Blake Griffith
82 * Blake Griffith
36 * Boris Egorov
83 * Boris Egorov
37 * Brian E. Granger
84 * Brian E. Granger
38 * bsvh
85 * bsvh
39 * Carlos Cordoba
86 * Carlos Cordoba
40 * Cedric GESTES
87 * Cedric GESTES
41 * cel
88 * cel
42 * chebee7i
89 * chebee7i
43 * Christoph Gohlke
90 * Christoph Gohlke
44 * CJ Carey
91 * CJ Carey
45 * Cyrille Rossant
92 * Cyrille Rossant
46 * Dale Jung
93 * Dale Jung
47 * Damián Avila
94 * Damián Avila
48 * Damon Allen
95 * Damon Allen
49 * Daniel B. Vasquez
96 * Daniel B. Vasquez
50 * Daniel Rocco
97 * Daniel Rocco
51 * Daniel Wehner
98 * Daniel Wehner
52 * Dav Clark
99 * Dav Clark
53 * David Hirschfeld
100 * David Hirschfeld
54 * David Neto
101 * David Neto
55 * dexterdev
102 * dexterdev
56 * Dimitry Kloper
103 * Dimitry Kloper
57 * dongweiming
104 * dongweiming
58 * Doug Blank
105 * Doug Blank
59 * drevicko
106 * drevicko
60 * Dustin Rodriguez
107 * Dustin Rodriguez
61 * Eric Firing
108 * Eric Firing
62 * Eric Galloway
109 * Eric Galloway
63 * Erik M. Bray
110 * Erik M. Bray
64 * Erik Tollerud
111 * Erik Tollerud
65 * Ezequiel (Zac) Panepucci
112 * Ezequiel (Zac) Panepucci
66 * Fernando Perez
113 * Fernando Perez
67 * foogunlana
114 * foogunlana
68 * Francisco de la Peña
115 * Francisco de la Peña
69 * George Titsworth
116 * George Titsworth
70 * Gordon Ball
117 * Gordon Ball
71 * gporras
118 * gporras
72 * Grzegorz Rożniecki
119 * Grzegorz Rożniecki
73 * Helen ST
120 * Helen ST
74 * immerrr
121 * immerrr
75 * Ingolf Becker
122 * Ingolf Becker
76 * Jakob Gager
123 * Jakob Gager
77 * James Goppert
124 * James Goppert
78 * James Porter
125 * James Porter
79 * Jan Schulz
126 * Jan Schulz
80 * Jason Goad
127 * Jason Goad
81 * Jason Gors
128 * Jason Gors
82 * Jason Grout
129 * Jason Grout
83 * Jason Newton
130 * Jason Newton
84 * jdavidheiser
131 * jdavidheiser
85 * Jean-Christophe Jaskula
132 * Jean-Christophe Jaskula
86 * Jeff Hemmelgarn
133 * Jeff Hemmelgarn
87 * Jeffrey Bush
134 * Jeffrey Bush
88 * Jeroen Demeyer
135 * Jeroen Demeyer
89 * Jessica B. Hamrick
136 * Jessica B. Hamrick
90 * Jessica Frazelle
137 * Jessica Frazelle
91 * jhemmelg
138 * jhemmelg
92 * Jim Garrison
139 * Jim Garrison
93 * Joel Nothman
140 * Joel Nothman
94 * Johannes Feist
141 * Johannes Feist
95 * John Stowers
142 * John Stowers
96 * John Zwinck
143 * John Zwinck
97 * jonasc
144 * jonasc
98 * Jonathan Frederic
145 * Jonathan Frederic
99 * Juergen Hasch
146 * Juergen Hasch
100 * Julia Evans
147 * Julia Evans
101 * Justyna Ilczuk
148 * Justyna Ilczuk
102 * Jörg Dietrich
149 * Jörg Dietrich
103 * K.-Michael Aye
150 * K.-Michael Aye
104 * Kalibri
151 * Kalibri
105 * Kester Tong
152 * Kester Tong
106 * Kyle Kelley
153 * Kyle Kelley
107 * Kyle Rawlins
154 * Kyle Rawlins
108 * Lev Abalkin
155 * Lev Abalkin
109 * Manuel Riel
156 * Manuel Riel
110 * Martin Bergtholdt
157 * Martin Bergtholdt
111 * Martin Spacek
158 * Martin Spacek
112 * Mateusz Paprocki
159 * Mateusz Paprocki
113 * Mathieu
160 * Mathieu
114 * Matthias Bussonnier
161 * Matthias Bussonnier
115 * Maximilian Albert
162 * Maximilian Albert
116 * mbyt
163 * mbyt
117 * MechCoder
164 * MechCoder
118 * Mohan Raj Rajamanickam
165 * Mohan Raj Rajamanickam
119 * mvr
166 * mvr
120 * Narahari
167 * Narahari
121 * Nathan Goldbaum
168 * Nathan Goldbaum
122 * Nathan Heijermans
169 * Nathan Heijermans
123 * Nathaniel J. Smith
170 * Nathaniel J. Smith
124 * ncornette
171 * ncornette
125 * Nicholas Bollweg
172 * Nicholas Bollweg
126 * Nick White
173 * Nick White
127 * Nikolay Koldunov
174 * Nikolay Koldunov
128 * Nile Geisinger
175 * Nile Geisinger
129 * Olga Botvinnik
176 * Olga Botvinnik
130 * Osada Paranaliyanage
177 * Osada Paranaliyanage
131 * Pankaj Pandey
178 * Pankaj Pandey
132 * Pascal Bugnion
179 * Pascal Bugnion
133 * patricktokeeffe
180 * patricktokeeffe
134 * Paul Ivanov
181 * Paul Ivanov
135 * Peter Odding
182 * Peter Odding
136 * Peter Parente
183 * Peter Parente
137 * Peter Würtz
184 * Peter Würtz
138 * Phil Elson
185 * Phil Elson
139 * Phillip Nordwall
186 * Phillip Nordwall
140 * Pierre Gerold
187 * Pierre Gerold
141 * Pierre Haessig
188 * Pierre Haessig
142 * Raffaele De Feo
189 * Raffaele De Feo
143 * Ramiro Gómez
190 * Ramiro Gómez
144 * Reggie Pierce
191 * Reggie Pierce
145 * Remi Rampin
192 * Remi Rampin
146 * Renaud Richardet
193 * Renaud Richardet
147 * Richard Everson
194 * Richard Everson
148 * Scott Sanderson
195 * Scott Sanderson
149 * Silvia Vinyes
196 * Silvia Vinyes
150 * Simon Guillot
197 * Simon Guillot
151 * Spencer Nelson
198 * Spencer Nelson
152 * Stefan Zimmermann
199 * Stefan Zimmermann
153 * Steve Chan
200 * Steve Chan
154 * Steven Anton
201 * Steven Anton
155 * Steven Silvester
202 * Steven Silvester
156 * sunny
203 * sunny
157 * Susan Tan
204 * Susan Tan
158 * Sylvain Corlay
205 * Sylvain Corlay
159 * Tarun Gaba
206 * Tarun Gaba
160 * Thomas Ballinger
207 * Thomas Ballinger
161 * Thomas Kluyver
208 * Thomas Kluyver
162 * Thomas Robitaille
209 * Thomas Robitaille
163 * Thomas Spura
210 * Thomas Spura
164 * Tobias Oberstein
211 * Tobias Oberstein
165 * Torsten Bittner
212 * Torsten Bittner
166 * unknown
213 * unknown
167 * v923z
214 * v923z
168 * vaibhavsagar
215 * vaibhavsagar
169 * W. Trevor King
216 * W. Trevor King
170 * weichm
217 * weichm
171 * Xiuming Chen
218 * Xiuming Chen
172 * Yaroslav Halchenko
219 * Yaroslav Halchenko
173 * zah
220 * zah
@@ -1,322 +1,349 b''
1 ============
1 ============
2 3.x Series
2 3.x Series
3 ============
3 ============
4
4
5 IPython 3.1
6 ===========
7
8 Released April 3, 2015
9
10 The first 3.x bugfix release, with 33 contributors and 344 commits.
11 This primarily includes bugfixes to notebook layout and focus problems.
12
13
14 Highlights:
15
16 - Various focus jumping and scrolling fixes in the notebook.
17 - Various message ordering and widget fixes in the notebook.
18 - Images in markdown and output are confined to the notebook width.
19 An `.unconfined` CSS class is added to disable this behavior per-image.
20 The resize handle on output images is removed.
21 - Improved ordering of tooltip content for Python functions, putting the signature at the top.
22 - Fix UnicodeErrors when displaying some objects with unicode reprs on Python 2.
23 - Set the kernel's working directory to the notebook directory when running ``nbconvert --execute``,
24 so that behavior matches the live notebook.
25 - Allow setting custom SSL options for the tornado server with ``NotebookApp.ssl_options``,
26 and protect against POODLE with default settings by disabling SSLv3.
27 - Fix memory leak in the IPython.parallel Controller on Python 3.
28
29
30 See :ref:`issues_list_3` for details.
31
5
32
6 Release 3.0
33 Release 3.0
7 ===========
34 ===========
8
35
9 Released February 27, 2015
36 Released February 27, 2015
10
37
11 This is a really big release. Over 150 contributors, and almost 6000 commits in a bit under a year.
38 This is a really big release. Over 150 contributors, and almost 6000 commits in a bit under a year.
12 Support for languages other than Python is greatly improved,
39 Support for languages other than Python is greatly improved,
13 notebook UI has been significantly redesigned,
40 notebook UI has been significantly redesigned,
14 and a lot of improvement has happened in the experimental interactive widgets.
41 and a lot of improvement has happened in the experimental interactive widgets.
15 The message protocol and document format have both been updated,
42 The message protocol and document format have both been updated,
16 while maintaining better compatibility with previous versions than prior updates.
43 while maintaining better compatibility with previous versions than prior updates.
17 The notebook webapp now enables editing of any text file, and even
44 The notebook webapp now enables editing of any text file, and even
18 a web-based terminal (on Unix platforms).
45 a web-based terminal (on Unix platforms).
19
46
20 3.x will be the last monolithic release of IPython,
47 3.x will be the last monolithic release of IPython,
21 as the next release cycle will see the growing project split into its Python-specific and language-agnostic components.
48 as the next release cycle will see the growing project split into its Python-specific and language-agnostic components.
22 Language-agnostic projects (notebook, qtconsole, etc.) will move under the umbrella of the new Project Jupyter name,
49 Language-agnostic projects (notebook, qtconsole, etc.) will move under the umbrella of the new Project Jupyter name,
23 while Python-specific projects (interactive Python shell, Python kernel, IPython.parallel)
50 while Python-specific projects (interactive Python shell, Python kernel, IPython.parallel)
24 will remain under IPython, and be split into a few smaller packages.
51 will remain under IPython, and be split into a few smaller packages.
25 To reflect this, IPython is in a bit of a transition state.
52 To reflect this, IPython is in a bit of a transition state.
26 The logo on the notebook is now the Jupyter logo.
53 The logo on the notebook is now the Jupyter logo.
27 When installing kernels system-wide, they go in a `jupyter` directory.
54 When installing kernels system-wide, they go in a `jupyter` directory.
28 We are going to do our best to ease this transition for users and developers.
55 We are going to do our best to ease this transition for users and developers.
29
56
30 Big changes are ahead.
57 Big changes are ahead.
31
58
32
59
33 Using different kernels
60 Using different kernels
34 -----------------------
61 -----------------------
35
62
36 .. image:: ../_images/kernel_selector_screenshot.png
63 .. image:: ../_images/kernel_selector_screenshot.png
37 :alt: Screenshot of 'new' dropdown showing different kernels
64 :alt: Screenshot of 'new' dropdown showing different kernels
38 :align: center
65 :align: center
39
66
40 You can now choose a kernel for a notebook within the user interface, rather
67 You can now choose a kernel for a notebook within the user interface, rather
41 than starting up a separate notebook server for each kernel you want to use. The
68 than starting up a separate notebook server for each kernel you want to use. The
42 syntax highlighting adapts to match the language you're working in.
69 syntax highlighting adapts to match the language you're working in.
43
70
44 Information about the kernel is stored in the notebook file, so when you open a
71 Information about the kernel is stored in the notebook file, so when you open a
45 notebook, it will automatically start the correct kernel.
72 notebook, it will automatically start the correct kernel.
46
73
47 It is also easier to use the Qt console and the terminal console with other
74 It is also easier to use the Qt console and the terminal console with other
48 kernels, using the --kernel flag::
75 kernels, using the --kernel flag::
49
76
50 ipython qtconsole --kernel bash
77 ipython qtconsole --kernel bash
51 ipython console --kernel bash
78 ipython console --kernel bash
52
79
53 # To list available kernels
80 # To list available kernels
54 ipython kernelspec list
81 ipython kernelspec list
55
82
56 Kernel authors should see :ref:`kernelspecs` for how to register their kernels
83 Kernel authors should see :ref:`kernelspecs` for how to register their kernels
57 with IPython so that these mechanisms work.
84 with IPython so that these mechanisms work.
58
85
59 Typing unicode identifiers
86 Typing unicode identifiers
60 --------------------------
87 --------------------------
61
88
62 .. image:: /_images/unicode_completion.png
89 .. image:: /_images/unicode_completion.png
63
90
64 Complex expressions can be much cleaner when written with a wider choice of
91 Complex expressions can be much cleaner when written with a wider choice of
65 characters. Python 3 allows unicode identifiers, and IPython 3 makes it easier
92 characters. Python 3 allows unicode identifiers, and IPython 3 makes it easier
66 to type those, using a feature from Julia. Type a backslash followed by a LaTeX
93 to type those, using a feature from Julia. Type a backslash followed by a LaTeX
67 style short name, such as ``\alpha``. Press tab, and it will turn into α.
94 style short name, such as ``\alpha``. Press tab, and it will turn into α.
68
95
69 Widget migration guide
96 Widget migration guide
70 ----------------------
97 ----------------------
71 The widget framework has a lot of backwards incompatible changes.
98 The widget framework has a lot of backwards incompatible changes.
72 For information about migrating widget notebooks and custom widgets to 3.0 refer
99 For information about migrating widget notebooks and custom widgets to 3.0 refer
73 to the :doc:`widget migration guide<version3_widget_migration>`.
100 to the :doc:`widget migration guide<version3_widget_migration>`.
74
101
75 Other new features
102 Other new features
76 ------------------
103 ------------------
77
104
78 * :class:`~.TextWidget` and :class:`~.TextareaWidget` objects now include a
105 * :class:`~.TextWidget` and :class:`~.TextareaWidget` objects now include a
79 ``placeholder`` attribute, for displaying placeholder text before the
106 ``placeholder`` attribute, for displaying placeholder text before the
80 user has typed anything.
107 user has typed anything.
81
108
82 * The :magic:`load` magic can now find the source for objects in the user namespace.
109 * The :magic:`load` magic can now find the source for objects in the user namespace.
83 To enable searching the namespace, use the ``-n`` option.
110 To enable searching the namespace, use the ``-n`` option.
84
111
85 .. sourcecode:: ipython
112 .. sourcecode:: ipython
86
113
87 In [1]: %load -n my_module.some_function
114 In [1]: %load -n my_module.some_function
88
115
89 * :class:`~.DirectView` objects have a new :meth:`~.DirectView.use_cloudpickle`
116 * :class:`~.DirectView` objects have a new :meth:`~.DirectView.use_cloudpickle`
90 method, which works like ``view.use_dill()``, but causes the ``cloudpickle``
117 method, which works like ``view.use_dill()``, but causes the ``cloudpickle``
91 module from PiCloud's `cloud`__ library to be used rather than dill or the
118 module from PiCloud's `cloud`__ library to be used rather than dill or the
92 builtin pickle module.
119 builtin pickle module.
93
120
94 __ https://pypi.python.org/pypi/cloud
121 __ https://pypi.python.org/pypi/cloud
95
122
96 * Added a .ipynb exporter to nbconvert. It can be used by passing `--to notebook`
123 * Added a .ipynb exporter to nbconvert. It can be used by passing `--to notebook`
97 as a commandline argument to nbconvert.
124 as a commandline argument to nbconvert.
98
125
99 * New nbconvert preprocessor called :class:`~.ClearOutputPreprocessor`. This
126 * New nbconvert preprocessor called :class:`~.ClearOutputPreprocessor`. This
100 clears the output from IPython notebooks.
127 clears the output from IPython notebooks.
101
128
102 * New preprocessor for nbconvert that executes all the code cells in a notebook.
129 * New preprocessor for nbconvert that executes all the code cells in a notebook.
103 To run a notebook and save its output in a new notebook::
130 To run a notebook and save its output in a new notebook::
104
131
105 ipython nbconvert InputNotebook --ExecutePreprocessor.enabled=True --to notebook --output Executed
132 ipython nbconvert InputNotebook --ExecutePreprocessor.enabled=True --to notebook --output Executed
106
133
107 * Consecutive stream (stdout/stderr) output is merged into a single output
134 * Consecutive stream (stdout/stderr) output is merged into a single output
108 in the notebook document.
135 in the notebook document.
109 Previously, all output messages were preserved as separate output fields in the JSON.
136 Previously, all output messages were preserved as separate output fields in the JSON.
110 Now, the same merge is applied to the stored output as the displayed output,
137 Now, the same merge is applied to the stored output as the displayed output,
111 improving document load time for notebooks with many small outputs.
138 improving document load time for notebooks with many small outputs.
112
139
113 * ``NotebookApp.webapp_settings`` is deprecated and replaced with
140 * ``NotebookApp.webapp_settings`` is deprecated and replaced with
114 the more informatively named ``NotebookApp.tornado_settings``.
141 the more informatively named ``NotebookApp.tornado_settings``.
115
142
116 * Using :magic:`timeit` prints warnings if there is atleast a 4x difference in timings
143 * Using :magic:`timeit` prints warnings if there is atleast a 4x difference in timings
117 between the slowest and fastest runs, since this might meant that the multiple
144 between the slowest and fastest runs, since this might meant that the multiple
118 runs are not independent of one another.
145 runs are not independent of one another.
119
146
120 * It's now possible to provide mechanisms to integrate IPython with other event
147 * It's now possible to provide mechanisms to integrate IPython with other event
121 loops, in addition to the ones we already support. This lets you run GUI code
148 loops, in addition to the ones we already support. This lets you run GUI code
122 in IPython with an interactive prompt, and to embed the IPython
149 in IPython with an interactive prompt, and to embed the IPython
123 kernel in GUI applications. See :doc:`/config/eventloops` for details. As part
150 kernel in GUI applications. See :doc:`/config/eventloops` for details. As part
124 of this, the direct ``enable_*`` and ``disable_*`` functions for various GUIs
151 of this, the direct ``enable_*`` and ``disable_*`` functions for various GUIs
125 in :mod:`IPython.lib.inputhook` have been deprecated in favour of
152 in :mod:`IPython.lib.inputhook` have been deprecated in favour of
126 :meth:`~.InputHookManager.enable_gui` and :meth:`~.InputHookManager.disable_gui`.
153 :meth:`~.InputHookManager.enable_gui` and :meth:`~.InputHookManager.disable_gui`.
127
154
128 * A ``ScrollManager`` was added to the notebook. The ``ScrollManager`` controls how the notebook document is scrolled using keyboard. Users can inherit from the ``ScrollManager`` or ``TargetScrollManager`` to customize how their notebook scrolls. The default ``ScrollManager`` is the ``SlideScrollManager``, which tries to scroll to the nearest slide or sub-slide cell.
155 * A ``ScrollManager`` was added to the notebook. The ``ScrollManager`` controls how the notebook document is scrolled using keyboard. Users can inherit from the ``ScrollManager`` or ``TargetScrollManager`` to customize how their notebook scrolls. The default ``ScrollManager`` is the ``SlideScrollManager``, which tries to scroll to the nearest slide or sub-slide cell.
129
156
130 * The function :func:`~IPython.html.widgets.interaction.interact_manual` has been
157 * The function :func:`~IPython.html.widgets.interaction.interact_manual` has been
131 added which behaves similarly to :func:`~IPython.html.widgets.interaction.interact`,
158 added which behaves similarly to :func:`~IPython.html.widgets.interaction.interact`,
132 but adds a button to explicitly run the interacted-with function, rather than
159 but adds a button to explicitly run the interacted-with function, rather than
133 doing it automatically for every change of the parameter widgets. This should
160 doing it automatically for every change of the parameter widgets. This should
134 be useful for long-running functions.
161 be useful for long-running functions.
135
162
136 * The ``%cython`` magic is now part of the Cython module. Use `%load_ext Cython` with a version of Cython >= 0.21 to have access to the magic now.
163 * The ``%cython`` magic is now part of the Cython module. Use `%load_ext Cython` with a version of Cython >= 0.21 to have access to the magic now.
137
164
138 * The Notebook application now offers integrated terminals on Unix platforms,
165 * The Notebook application now offers integrated terminals on Unix platforms,
139 intended for when it is used on a remote server. To enable these, install
166 intended for when it is used on a remote server. To enable these, install
140 the ``terminado`` Python package.
167 the ``terminado`` Python package.
141
168
142 * The Notebook application can now edit any plain text files, via a full-page CodeMirror instance.
169 * The Notebook application can now edit any plain text files, via a full-page CodeMirror instance.
143
170
144 * Setting the default highlighting language for nbconvert with the config option
171 * Setting the default highlighting language for nbconvert with the config option
145 ``NbConvertBase.default_language`` is deprecated. Nbconvert now respects
172 ``NbConvertBase.default_language`` is deprecated. Nbconvert now respects
146 metadata stored in the :ref:`kernel spec <kernelspecs>`.
173 metadata stored in the :ref:`kernel spec <kernelspecs>`.
147
174
148 * IPython can now be configured systemwide, with files in :file:`/etc/ipython`
175 * IPython can now be configured systemwide, with files in :file:`/etc/ipython`
149 or :file:`/usr/local/etc/ipython` on Unix systems,
176 or :file:`/usr/local/etc/ipython` on Unix systems,
150 or :file:`{%PROGRAMDATA%}\\ipython` on Windows.
177 or :file:`{%PROGRAMDATA%}\\ipython` on Windows.
151
178
152 * Added support for configurable user-supplied `Jinja
179 * Added support for configurable user-supplied `Jinja
153 <http://jinja.pocoo.org/>`_ HTML templates for the notebook. Paths to
180 <http://jinja.pocoo.org/>`_ HTML templates for the notebook. Paths to
154 directories containing template files can be specified via
181 directories containing template files can be specified via
155 ``NotebookApp.extra_template_paths``. User-supplied template directories
182 ``NotebookApp.extra_template_paths``. User-supplied template directories
156 searched first by the notebook, making it possible to replace existing
183 searched first by the notebook, making it possible to replace existing
157 templates with your own files.
184 templates with your own files.
158
185
159 For example, to replace the notebook's built-in ``error.html`` with your own,
186 For example, to replace the notebook's built-in ``error.html`` with your own,
160 create a directory like ``/home/my_templates`` and put your override template
187 create a directory like ``/home/my_templates`` and put your override template
161 at ``/home/my_templates/error.html``. To start the notebook with your custom
188 at ``/home/my_templates/error.html``. To start the notebook with your custom
162 error page enabled, you would run::
189 error page enabled, you would run::
163
190
164 ipython notebook '--extra_template_paths=["/home/my_templates/"]'
191 ipython notebook '--extra_template_paths=["/home/my_templates/"]'
165
192
166 It's also possible to override a template while also `inheriting
193 It's also possible to override a template while also `inheriting
167 <http://jinja.pocoo.org/docs/dev/templates/#template-inheritance>`_ from that
194 <http://jinja.pocoo.org/docs/dev/templates/#template-inheritance>`_ from that
168 template, by prepending ``templates/`` to the ``{% extends %}`` target of
195 template, by prepending ``templates/`` to the ``{% extends %}`` target of
169 your child template. This is useful when you only want to override a
196 your child template. This is useful when you only want to override a
170 specific block of a template. For example, to add additional CSS to the
197 specific block of a template. For example, to add additional CSS to the
171 built-in ``error.html``, you might create an override that looks like::
198 built-in ``error.html``, you might create an override that looks like::
172
199
173 {% extends "templates/error.html" %}
200 {% extends "templates/error.html" %}
174
201
175 {% block stylesheet %}
202 {% block stylesheet %}
176 {{super()}}
203 {{super()}}
177 <style type="text/css">
204 <style type="text/css">
178 /* My Awesome CSS */
205 /* My Awesome CSS */
179 </style>
206 </style>
180 {% endblock %}
207 {% endblock %}
181
208
182 * Added a widget persistence API. This allows you to persist your notebooks interactive widgets.
209 * Added a widget persistence API. This allows you to persist your notebooks interactive widgets.
183 Two levels of control are provided:
210 Two levels of control are provided:
184 1. Higher level- ``WidgetManager.set_state_callbacks`` allows you to register callbacks for loading and saving widget state. The callbacks you register are automatically called when necessary.
211 1. Higher level- ``WidgetManager.set_state_callbacks`` allows you to register callbacks for loading and saving widget state. The callbacks you register are automatically called when necessary.
185 2. Lower level- the ``WidgetManager`` Javascript class now has ``get_state`` and ``set_state`` methods that allow you to get and set the state of the widget runtime.
212 2. Lower level- the ``WidgetManager`` Javascript class now has ``get_state`` and ``set_state`` methods that allow you to get and set the state of the widget runtime.
186
213
187 Example code for persisting your widget state to session data::
214 Example code for persisting your widget state to session data::
188
215
189 %%javascript
216 %%javascript
190 require(['widgets/js/manager'], function(manager) {
217 require(['widgets/js/manager'], function(manager) {
191 manager.WidgetManager.set_state_callbacks(function() { // Load
218 manager.WidgetManager.set_state_callbacks(function() { // Load
192 return JSON.parse(sessionStorage.widgets_state || '{}');
219 return JSON.parse(sessionStorage.widgets_state || '{}');
193 }, function(state) { // Save
220 }, function(state) { // Save
194 sessionStorage.widgets_state = JSON.stringify(state);
221 sessionStorage.widgets_state = JSON.stringify(state);
195 });
222 });
196 });
223 });
197
224
198 * Enhanced support for :magic:`env` magic. As before, :magic:`env` with no
225 * Enhanced support for :magic:`env` magic. As before, :magic:`env` with no
199 arguments displays all environment variables and values. Additionally,
226 arguments displays all environment variables and values. Additionally,
200 :magic:`env` can be used to get or set individual environment variables. To
227 :magic:`env` can be used to get or set individual environment variables. To
201 display an individual value, use the `%env var` syntax. To set a value, use
228 display an individual value, use the `%env var` syntax. To set a value, use
202 `env var val` or `env var=val`. Python value expansion using `$` works as usual.
229 `env var val` or `env var=val`. Python value expansion using `$` works as usual.
203
230
204
231
205 Backwards incompatible changes
232 Backwards incompatible changes
206 ------------------------------
233 ------------------------------
207
234
208 * The :ref:`message protocol <messaging>` has been updated from version 4 to version 5.
235 * The :ref:`message protocol <messaging>` has been updated from version 4 to version 5.
209 Adapters are included, so IPython frontends can still talk to kernels that
236 Adapters are included, so IPython frontends can still talk to kernels that
210 implement protocol version 4.
237 implement protocol version 4.
211
238
212 * The :ref:`notebook format <nbformat>` has been updated from version 3 to version 4.
239 * The :ref:`notebook format <nbformat>` has been updated from version 3 to version 4.
213 Read-only support for v4 notebooks has been backported to IPython 2.4.
240 Read-only support for v4 notebooks has been backported to IPython 2.4.
214 Notable changes:
241 Notable changes:
215
242
216 * heading cells are removed in favor or markdown headings
243 * heading cells are removed in favor or markdown headings
217 * notebook outputs and output messages are more consistent with each other
244 * notebook outputs and output messages are more consistent with each other
218 * use :func:`IPython.nbformat.read` and :func:`~IPython.nbformat.write`
245 * use :func:`IPython.nbformat.read` and :func:`~IPython.nbformat.write`
219 to read and write notebook files
246 to read and write notebook files
220 instead of the deprecated :mod:`IPython.nbformat.current` APIs.
247 instead of the deprecated :mod:`IPython.nbformat.current` APIs.
221
248
222 You can downgrade a notebook to v3 via ``nbconvert``::
249 You can downgrade a notebook to v3 via ``nbconvert``::
223
250
224 ipython nbconvert --to notebook --nbformat 3 <notebook>
251 ipython nbconvert --to notebook --nbformat 3 <notebook>
225
252
226 which will create :file:`notebook.v3.ipynb`, a copy of the notebook in v3 format.
253 which will create :file:`notebook.v3.ipynb`, a copy of the notebook in v3 format.
227
254
228 * :func:`IPython.core.oinspect.getsource` call specification has changed:
255 * :func:`IPython.core.oinspect.getsource` call specification has changed:
229
256
230 * `oname` keyword argument has been added for property source formatting
257 * `oname` keyword argument has been added for property source formatting
231 * `is_binary` keyword argument has been dropped, passing ``True`` had
258 * `is_binary` keyword argument has been dropped, passing ``True`` had
232 previously short-circuited the function to return ``None`` unconditionally
259 previously short-circuited the function to return ``None`` unconditionally
233
260
234 * Removed the octavemagic extension: it is now available as ``oct2py.ipython``.
261 * Removed the octavemagic extension: it is now available as ``oct2py.ipython``.
235
262
236 * Creating PDFs with LaTeX no longer uses a post processor.
263 * Creating PDFs with LaTeX no longer uses a post processor.
237 Use `nbconvert --to pdf` instead of `nbconvert --to latex --post pdf`.
264 Use `nbconvert --to pdf` instead of `nbconvert --to latex --post pdf`.
238
265
239 * Used https://github.com/jdfreder/bootstrap2to3 to migrate the Notebook to Bootstrap 3.
266 * Used https://github.com/jdfreder/bootstrap2to3 to migrate the Notebook to Bootstrap 3.
240
267
241 Additional changes:
268 Additional changes:
242
269
243 - Set `.tab-content .row` `0px;` left and right margin (bootstrap default is `-15px;`)
270 - Set `.tab-content .row` `0px;` left and right margin (bootstrap default is `-15px;`)
244 - Removed `height: @btn_mini_height;` from `.list_header>div, .list_item>div` in `tree.less`
271 - Removed `height: @btn_mini_height;` from `.list_header>div, .list_item>div` in `tree.less`
245 - Set `#header` div `margin-bottom: 0px;`
272 - Set `#header` div `margin-bottom: 0px;`
246 - Set `#menus` to `float: left;`
273 - Set `#menus` to `float: left;`
247 - Set `#maintoolbar .navbar-text` to `float: none;`
274 - Set `#maintoolbar .navbar-text` to `float: none;`
248 - Added no-padding convenience class.
275 - Added no-padding convenience class.
249 - Set border of #maintoolbar to 0px
276 - Set border of #maintoolbar to 0px
250
277
251 * Accessing the `container` DOM object when displaying javascript has been
278 * Accessing the `container` DOM object when displaying javascript has been
252 deprecated in IPython 2.0 in favor of accessing `element`. Starting with
279 deprecated in IPython 2.0 in favor of accessing `element`. Starting with
253 IPython 3.0 trying to access `container` will raise an error in browser
280 IPython 3.0 trying to access `container` will raise an error in browser
254 javascript console.
281 javascript console.
255
282
256 * ``IPython.utils.py3compat.open`` was removed: :func:`io.open` provides all
283 * ``IPython.utils.py3compat.open`` was removed: :func:`io.open` provides all
257 the same functionality.
284 the same functionality.
258
285
259 * The NotebookManager and ``/api/notebooks`` service has been replaced by
286 * The NotebookManager and ``/api/notebooks`` service has been replaced by
260 a more generic ContentsManager and ``/api/contents`` service,
287 a more generic ContentsManager and ``/api/contents`` service,
261 which supports all kinds of files.
288 which supports all kinds of files.
262 * The Dashboard now lists all files, not just notebooks and directories.
289 * The Dashboard now lists all files, not just notebooks and directories.
263 * The ``--script`` hook for saving notebooks to Python scripts is removed,
290 * The ``--script`` hook for saving notebooks to Python scripts is removed,
264 use :samp:`ipython nbconvert --to python {notebook}` instead.
291 use :samp:`ipython nbconvert --to python {notebook}` instead.
265
292
266 * The ``rmagic`` extension is deprecated, as it is now part of rpy2. See
293 * The ``rmagic`` extension is deprecated, as it is now part of rpy2. See
267 :mod:`rpy2.ipython.rmagic`.
294 :mod:`rpy2.ipython.rmagic`.
268
295
269 * :meth:`~.KernelManager.start_kernel` and :meth:`~.KernelManager.format_kernel_cmd`
296 * :meth:`~.KernelManager.start_kernel` and :meth:`~.KernelManager.format_kernel_cmd`
270 no longer accept a ``executable`` parameter. Use the kernelspec machinery instead.
297 no longer accept a ``executable`` parameter. Use the kernelspec machinery instead.
271
298
272 * The widget classes have been renamed from `*Widget` to `*`. The old names are
299 * The widget classes have been renamed from `*Widget` to `*`. The old names are
273 still functional, but are deprecated. i.e. `IntSliderWidget` has been renamed
300 still functional, but are deprecated. i.e. `IntSliderWidget` has been renamed
274 to `IntSlider`.
301 to `IntSlider`.
275 * The ContainerWidget was renamed to Box and no longer defaults as a flexible
302 * The ContainerWidget was renamed to Box and no longer defaults as a flexible
276 box in the web browser. A new FlexBox widget was added, which allows you to
303 box in the web browser. A new FlexBox widget was added, which allows you to
277 use the flexible box model.
304 use the flexible box model.
278
305
279 * The notebook now uses a single websocket at `/kernels/<kernel-id>/channels` instead of separate
306 * The notebook now uses a single websocket at `/kernels/<kernel-id>/channels` instead of separate
280 `/kernels/<kernel-id>/{shell|iopub|stdin}` channels. Messages on each channel are identified by a
307 `/kernels/<kernel-id>/{shell|iopub|stdin}` channels. Messages on each channel are identified by a
281 `channel` key in the message dict, for both send and recv.
308 `channel` key in the message dict, for both send and recv.
282
309
283
310
284 Content Security Policy
311 Content Security Policy
285 ```````````````````````
312 ```````````````````````
286
313
287 The Content Security Policy is a web standard for adding a layer of security to
314 The Content Security Policy is a web standard for adding a layer of security to
288 detect and mitigate certain classes of attacks, including Cross Site Scripting
315 detect and mitigate certain classes of attacks, including Cross Site Scripting
289 (XSS) and data injection attacks. This was introduced into the notebook to
316 (XSS) and data injection attacks. This was introduced into the notebook to
290 ensure that the IPython Notebook and its APIs (by default) can only be embedded
317 ensure that the IPython Notebook and its APIs (by default) can only be embedded
291 in an iframe on the same origin.
318 in an iframe on the same origin.
292
319
293 Override ``headers['Content-Security-Policy']`` within your notebook
320 Override ``headers['Content-Security-Policy']`` within your notebook
294 configuration to extend for alternate domains and security settings.::
321 configuration to extend for alternate domains and security settings.::
295
322
296 c.NotebookApp.tornado_settings = {
323 c.NotebookApp.tornado_settings = {
297 'headers': {
324 'headers': {
298 'Content-Security-Policy': "frame-ancestors 'self'"
325 'Content-Security-Policy': "frame-ancestors 'self'"
299 }
326 }
300 }
327 }
301
328
302 Example policies::
329 Example policies::
303
330
304 Content-Security-Policy: default-src 'self' https://*.jupyter.org
331 Content-Security-Policy: default-src 'self' https://*.jupyter.org
305
332
306 Matches embeddings on any subdomain of jupyter.org, so long as they are served
333 Matches embeddings on any subdomain of jupyter.org, so long as they are served
307 over SSL.
334 over SSL.
308
335
309 There is a `report-uri <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#report-uri>`_ endpoint available for logging CSP violations, located at
336 There is a `report-uri <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#report-uri>`_ endpoint available for logging CSP violations, located at
310 ``/api/security/csp-report``. To use it, set ``report-uri`` as part of the CSP::
337 ``/api/security/csp-report``. To use it, set ``report-uri`` as part of the CSP::
311
338
312 c.NotebookApp.tornado_settings = {
339 c.NotebookApp.tornado_settings = {
313 'headers': {
340 'headers': {
314 'Content-Security-Policy': "frame-ancestors 'self'; report-uri /api/security/csp-report"
341 'Content-Security-Policy': "frame-ancestors 'self'; report-uri /api/security/csp-report"
315 }
342 }
316 }
343 }
317
344
318 It simply provides the CSP report as a warning in IPython's logs. The default
345 It simply provides the CSP report as a warning in IPython's logs. The default
319 CSP sets this report-uri relative to the ``base_url`` (not shown above).
346 CSP sets this report-uri relative to the ``base_url`` (not shown above).
320
347
321 For a more thorough and accurate guide on Content Security Policies, check out
348 For a more thorough and accurate guide on Content Security Policies, check out
322 `MDN's Using Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy>`_ for more examples.
349 `MDN's Using Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy>`_ for more examples.
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now