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