##// END OF EJS Templates
Add kernel/engine section.
Fernando Perez -
Show More
@@ -1,636 +1,665
1 =============
1 =============
2 0.13 Series
2 0.13 Series
3 =============
3 =============
4
4
5 Release 0.13
5 Release 0.13
6 ============
6 ============
7
7
8 IPython 0.13 contains several major new features, as well as a large amount of
8 IPython 0.13 contains several major new features, as well as a large amount of
9 bug and regression fixes. The previous version (0.12) was released on December
9 bug and regression fixes. The previous version (0.12) was released on December
10 19 2011, so this release cycle was roughly 6 months long, during which we
10 19 2011, so this release cycle was roughly 6 months long, during which we
11 closed a total of 373 pull requests and 742 issues, with contributions from 62
11 closed a total of 373 pull requests and 742 issues, with contributions from 62
12 authors comprising over 1740 commits.
12 authors comprising over 1740 commits.
13
13
14 The amount of work included in this release is so large, that we can only cover
14 The amount of work included in this release is so large, that we can only cover
15 here the main highlights; please see our :ref:`detailed release statistics
15 here the main highlights; please see our :ref:`detailed release statistics
16 <issues_list_013>` for links to every issue and pull request closed on GitHub.
16 <issues_list_013>` for links to every issue and pull request closed on GitHub.
17
17
18
18
19 Major Notebook improvements: new user interface and more
19 Major Notebook improvements: new user interface and more
20 --------------------------------------------------------
20 --------------------------------------------------------
21
21
22 The IPython Notebook, which has proven since its release to be wildly popular,
22 The IPython Notebook, which has proven since its release to be wildly popular,
23 has seen a massive amount of work in this release cycle, leading to a
23 has seen a massive amount of work in this release cycle, leading to a
24 significantly improved user experience as well as many new features.
24 significantly improved user experience as well as many new features.
25
25
26 The first user-visible change is a reorganization of the user interface; the
26 The first user-visible change is a reorganization of the user interface; the
27 left panel has been removed and was replaced by a real menu system and a
27 left panel has been removed and was replaced by a real menu system and a
28 toolbar with icons. Both the toolbar and the header above the menu can be
28 toolbar with icons. Both the toolbar and the header above the menu can be
29 collapsed to leave an unobstructed working area:
29 collapsed to leave an unobstructed working area:
30
30
31 .. image:: ../_static/ipy_013_notebook_spectrogram.png
31 .. image:: ../_static/ipy_013_notebook_spectrogram.png
32 :width: 460px
32 :width: 460px
33 :alt: New user interface for Notebook
33 :alt: New user interface for Notebook
34 :align: center
34 :align: center
35 :target: ../_static/ipy_013_notebook_spectrogram.png
35 :target: ../_static/ipy_013_notebook_spectrogram.png
36
36
37 The notebook handles very long outputs much better than before (this was a
37 The notebook handles very long outputs much better than before (this was a
38 serious usability issue when running processes that generated massive amounts
38 serious usability issue when running processes that generated massive amounts
39 of output). Now, in the presence of outputs longer than ~100 lines, the
39 of output). Now, in the presence of outputs longer than ~100 lines, the
40 notebook will automatically collapse to a scrollable area and the entire left
40 notebook will automatically collapse to a scrollable area and the entire left
41 part of this area controls the display: one click in this area will expand the
41 part of this area controls the display: one click in this area will expand the
42 output region completely, and a double-click will hide it completely. This
42 output region completely, and a double-click will hide it completely. This
43 figure shows both the scrolled and hidden modes:
43 figure shows both the scrolled and hidden modes:
44
44
45 .. image:: ../_static/ipy_013_notebook_long_out.png
45 .. image:: ../_static/ipy_013_notebook_long_out.png
46 :width: 460px
46 :width: 460px
47 :alt: Scrolling and hiding of long output in the notebook.
47 :alt: Scrolling and hiding of long output in the notebook.
48 :align: center
48 :align: center
49 :target: ../_static/ipy_013_notebook_long_out.png
49 :target: ../_static/ipy_013_notebook_long_out.png
50
50
51 .. note::
51 .. note::
52
52
53 The auto-folding of long outputs is disabled in Firefox due to bugs in its
53 The auto-folding of long outputs is disabled in Firefox due to bugs in its
54 scrolling behavior. See :ghpull:`2047` for details.
54 scrolling behavior. See :ghpull:`2047` for details.
55
55
56 Uploading notebooks to the dashboard is now easier: in addition to drag and
56 Uploading notebooks to the dashboard is now easier: in addition to drag and
57 drop (which can be finicky sometimes), you can now click on the upload text and
57 drop (which can be finicky sometimes), you can now click on the upload text and
58 use a regular file dialog box to select notebooks to upload. Furthermore, the
58 use a regular file dialog box to select notebooks to upload. Furthermore, the
59 notebook dashboard now auto-refreshes its contents and offers buttons to shut
59 notebook dashboard now auto-refreshes its contents and offers buttons to shut
60 down any running kernels (:ghpull:`1739`):
60 down any running kernels (:ghpull:`1739`):
61
61
62 .. image:: ../_static/ipy_013_dashboard.png
62 .. image:: ../_static/ipy_013_dashboard.png
63 :width: 460px
63 :width: 460px
64 :alt: Improved dashboard
64 :alt: Improved dashboard
65 :align: center
65 :align: center
66 :target: ../_static/ipy_013_dashboard.png
66 :target: ../_static/ipy_013_dashboard.png
67
67
68
68
69 Cluster management
69 Cluster management
70 ~~~~~~~~~~~~~~~~~~
70 ~~~~~~~~~~~~~~~~~~
71
71
72 The notebook dashboard can now also start and stop clusters, and you can
72 The notebook dashboard can now also start and stop clusters, and you can
73 override the number of engines started. There is a new tab in the dashboard
73 override the number of engines started. There is a new tab in the dashboard
74 user interface:
74 user interface:
75
75
76 .. image:: ../_static/ipy_013_dashboard_cluster.png
76 .. image:: ../_static/ipy_013_dashboard_cluster.png
77 :width: 460px
77 :width: 460px
78 :alt: Cluster management from the notebook dashboard
78 :alt: Cluster management from the notebook dashboard
79 :align: center
79 :align: center
80 :target: ../_static/ipy_013_dashboard_cluster.png
80 :target: ../_static/ipy_013_dashboard_cluster.png
81
81
82 This tab allows you, for each profile you have configured, to start and stop a
82 This tab allows you, for each profile you have configured, to start and stop a
83 cluster (and optionally override the default number of engines corresponding to
83 cluster (and optionally override the default number of engines corresponding to
84 that configuration). While this hides all error reporting, once you have a
84 that configuration). While this hides all error reporting, once you have a
85 configuration that you know works smoothly, it is a very convenient interface
85 configuration that you know works smoothly, it is a very convenient interface
86 for controlling your parallel resources.
86 for controlling your parallel resources.
87
87
88
88
89 New notebook format
89 New notebook format
90 ~~~~~~~~~~~~~~~~~~~
90 ~~~~~~~~~~~~~~~~~~~
91
91
92 The notebooks saved now use version 3 of our format, which supports heading
92 The notebooks saved now use version 3 of our format, which supports heading
93 levels as well as the concept of 'raw' text cells that are not rendered as
93 levels as well as the concept of 'raw' text cells that are not rendered as
94 Markdown. These will be useful with converters_ we are developing, to pass raw
94 Markdown. These will be useful with converters_ we are developing, to pass raw
95 markup (say LaTeX). That conversion code is still under heavy development and
95 markup (say LaTeX). That conversion code is still under heavy development and
96 not quite ready for prime time, but we welcome help on this front so that we
96 not quite ready for prime time, but we welcome help on this front so that we
97 can merge it for full production use as soon as possible.
97 can merge it for full production use as soon as possible.
98
98
99 .. _converters: https://github.com/ipython/nbconvert
99 .. _converters: https://github.com/ipython/nbconvert
100
100
101 .. note::
101 .. note::
102
102
103 v3 notebooks can *not* be read by older versions of IPython, but we provide
103 v3 notebooks can *not* be read by older versions of IPython, but we provide
104 a `simple script`_ that you can use in case you need to export a v3
104 a `simple script`_ that you can use in case you need to export a v3
105 notebook to share with a v2 user.
105 notebook to share with a v2 user.
106
106
107 .. _simple script: https://gist.github.com/1935808
107 .. _simple script: https://gist.github.com/1935808
108
108
109
109
110 JavaScript refactoring
110 JavaScript refactoring
111 ~~~~~~~~~~~~~~~~~~~~~~
111 ~~~~~~~~~~~~~~~~~~~~~~
112
112
113 All the client-side JavaScript has been decoupled to ease reuse of parts of the
113 All the client-side JavaScript has been decoupled to ease reuse of parts of the
114 machinery without having to build a full-blown notebook. This will make it much
114 machinery without having to build a full-blown notebook. This will make it much
115 easier to communicate with an IPython kernel from existing web pages and to
115 easier to communicate with an IPython kernel from existing web pages and to
116 integrate single cells into other sites, without loading the full notebook
116 integrate single cells into other sites, without loading the full notebook
117 document-like UI. :ghpull:`1711`.
117 document-like UI. :ghpull:`1711`.
118
118
119 This refactoring also enables the possibility of writing dynamic javascript
119 This refactoring also enables the possibility of writing dynamic javascript
120 widgets that are returned from Python code and that present an interactive view
120 widgets that are returned from Python code and that present an interactive view
121 to the user, with callbacks in Javascript executing calls to the Kernel. This
121 to the user, with callbacks in Javascript executing calls to the Kernel. This
122 will enable many interactive elements to be added by users in notebooks.
122 will enable many interactive elements to be added by users in notebooks.
123
123
124 An example of this capability has been provided as a proof of concept in
124 An example of this capability has been provided as a proof of concept in
125 :file:`docs/examples/widgets` that lets you directly communicate with one or more
125 :file:`docs/examples/widgets` that lets you directly communicate with one or more
126 parallel engines, acting as a mini-console for parallel debugging and
126 parallel engines, acting as a mini-console for parallel debugging and
127 introspection.
127 introspection.
128
128
129
129
130 Improved tooltips
130 Improved tooltips
131 ~~~~~~~~~~~~~~~~~
131 ~~~~~~~~~~~~~~~~~
132
132
133 The object tooltips have gained some new functionality. By pressing tab several
133 The object tooltips have gained some new functionality. By pressing tab several
134 times, you can expand them to see more of a docstring, keep them visible as you
134 times, you can expand them to see more of a docstring, keep them visible as you
135 fill in a function's parameters, or transfer the information to the pager at the
135 fill in a function's parameters, or transfer the information to the pager at the
136 bottom of the screen. For the details, look at the example notebook
136 bottom of the screen. For the details, look at the example notebook
137 :file:`01_notebook_introduction.ipynb`.
137 :file:`01_notebook_introduction.ipynb`.
138
138
139 .. figure:: ../_static/ipy_013_notebook_tooltip.png
139 .. figure:: ../_static/ipy_013_notebook_tooltip.png
140 :width: 460px
140 :width: 460px
141 :alt: Improved tooltips in the notebook.
141 :alt: Improved tooltips in the notebook.
142 :align: center
142 :align: center
143 :target: ../_static/ipy_013_notebook_tooltip.png
143 :target: ../_static/ipy_013_notebook_tooltip.png
144
144
145 The new notebook tooltips.
145 The new notebook tooltips.
146
146
147 Other improvements to the Notebook
147 Other improvements to the Notebook
148 ----------------------------------
148 ----------------------------------
149
149
150 * The notebook pager (the area at the bottom) is now resizeable by dragging its
150 * The notebook pager (the area at the bottom) is now resizeable by dragging its
151 divider handle, a feature that had been requested many times by just about
151 divider handle, a feature that had been requested many times by just about
152 anyone who had used the notebook system. :ghpull:`1705`.
152 anyone who had used the notebook system. :ghpull:`1705`.
153
153
154 * If a notebook directory is specified with ``--notebook-dir`` (or with the
154 * If a notebook directory is specified with ``--notebook-dir`` (or with the
155 corresponding configuration flag ``NotebookManager.notebook_dir``), all
155 corresponding configuration flag ``NotebookManager.notebook_dir``), all
156 kernels start in this directory.
156 kernels start in this directory.
157
157
158 * It is now possible to open notebooks directly from the command line; for
158 * It is now possible to open notebooks directly from the command line; for
159 example: ``ipython notebook path/`` will automatically set ``path/`` as the
159 example: ``ipython notebook path/`` will automatically set ``path/`` as the
160 notebook directory, and ``ipython notebook path/foo.ipynb`` will further
160 notebook directory, and ``ipython notebook path/foo.ipynb`` will further
161 start with the ``foo.ipynb`` notebook opened. :ghpull:`1686`.
161 start with the ``foo.ipynb`` notebook opened. :ghpull:`1686`.
162
162
163 * Fix codemirror clearing of cells with ``Ctrl-Z``; :ghpull:`1965`.
163 * Fix codemirror clearing of cells with ``Ctrl-Z``; :ghpull:`1965`.
164
164
165 * Text (markdown) cells now line wrap correctly in the notebook, making them
165 * Text (markdown) cells now line wrap correctly in the notebook, making them
166 much easier to edit :ghpull:`1330`.
166 much easier to edit :ghpull:`1330`.
167
167
168 * PNG and JPEG figures returned from plots can be interactively resized in the
168 * PNG and JPEG figures returned from plots can be interactively resized in the
169 notebook, by dragging them from their lower left corner. :ghpull:`1832`.
169 notebook, by dragging them from their lower left corner. :ghpull:`1832`.
170
170
171 * Clear In[] prompt numbers on "Clear All Output". For more
171 * Clear In[] prompt numbers on "Clear All Output". For more
172 version-control-friendly `.ipynb` files, this strips the `In[]` prompt
172 version-control-friendly `.ipynb` files, this strips the `In[]` prompt
173 numbers when doing a "Clear all output". This reduces the amount of noise in
173 numbers when doing a "Clear all output". This reduces the amount of noise in
174 commit-to-commit diffs that would otherwise show the (highly variable) prompt
174 commit-to-commit diffs that would otherwise show the (highly variable) prompt
175 number changes. :ghpull:`1621`.
175 number changes. :ghpull:`1621`.
176
176
177 * The notebook server now requires *two* consecutive ``Ctrl-C`` to stop within 5
177 * The notebook server now requires *two* consecutive ``Ctrl-C`` to stop within 5
178 seconds (or an interactive confirmation). This makes it less likely that you
178 seconds (or an interactive confirmation). This makes it less likely that you
179 will accidentally kill a long-running server by typing ``Ctrl-C`` in the
179 will accidentally kill a long-running server by typing ``Ctrl-C`` in the
180 wrong terminal. :ghpull:`1609`.
180 wrong terminal. :ghpull:`1609`.
181
181
182 * Using ``Ctrl-S`` (or ``Cmd-S`` on a Mac) actually saves the notebook rather
182 * Using ``Ctrl-S`` (or ``Cmd-S`` on a Mac) actually saves the notebook rather
183 than providing the fairly useless browser html save dialog. :ghpull:`1334`.
183 than providing the fairly useless browser html save dialog. :ghpull:`1334`.
184
184
185 * Allow accessing local files from the notebook (in urls), by serving any local
185 * Allow accessing local files from the notebook (in urls), by serving any local
186 file as the url ``files/<relativepath>``. This makes it possible to, for
186 file as the url ``files/<relativepath>``. This makes it possible to, for
187 example, embed local images in a notebook. :ghpull:`1211`.
187 example, embed local images in a notebook. :ghpull:`1211`.
188
188
189
189
190 Cell magics
190 Cell magics
191 -----------
191 -----------
192
192
193 We have completely refactored the magic system, finally moving the magic
193 We have completely refactored the magic system, finally moving the magic
194 objects to standalone, independent objects instead of being the mixin class
194 objects to standalone, independent objects instead of being the mixin class
195 we'd had since the beginning of IPython (:ghpull:`1732`). Now, a separate base
195 we'd had since the beginning of IPython (:ghpull:`1732`). Now, a separate base
196 class is provided in :class:`IPython.core.magic.Magics` that users can subclass
196 class is provided in :class:`IPython.core.magic.Magics` that users can subclass
197 to create their own magics. Decorators are also provided to create magics from
197 to create their own magics. Decorators are also provided to create magics from
198 simple functions without the need for object orientation.
198 simple functions without the need for object orientation.
199
199
200 All builtin magics now exist in a few subclasses that group together related
200 All builtin magics now exist in a few subclasses that group together related
201 functionality, and the new :mod:`IPython.core.magics` package has been created
201 functionality, and the new :mod:`IPython.core.magics` package has been created
202 to organize this into smaller files.
202 to organize this into smaller files.
203
203
204 This cleanup was the last major piece of deep refactoring needed from the
204 This cleanup was the last major piece of deep refactoring needed from the
205 original 2001 codebase.
205 original 2001 codebase.
206
206
207 We have also introduced a new type of magic function, prefixed with `%%`
207 We have also introduced a new type of magic function, prefixed with `%%`
208 instead of `%`, which operates at the whole-cell level. A cell magic receives
208 instead of `%`, which operates at the whole-cell level. A cell magic receives
209 two arguments: the line it is called on (like a line magic) and the body of the
209 two arguments: the line it is called on (like a line magic) and the body of the
210 cell below it.
210 cell below it.
211
211
212 Cell magics are most natural in the notebook, but they also work in the
212 Cell magics are most natural in the notebook, but they also work in the
213 terminal and qt console, with the usual approach of using a blank line to
213 terminal and qt console, with the usual approach of using a blank line to
214 signal cell termination.
214 signal cell termination.
215
215
216 For example, to time the execution of several statements::
216 For example, to time the execution of several statements::
217
217
218 %%timeit x = 0 # setup
218 %%timeit x = 0 # setup
219 for i in range(100000):
219 for i in range(100000):
220 x += i**2
220 x += i**2
221
221
222 This is particularly useful to integrate code in another language, and cell
222 This is particularly useful to integrate code in another language, and cell
223 magics already exist for shell scripts, Cython, R and Octave. Using ``%%script
223 magics already exist for shell scripts, Cython, R and Octave. Using ``%%script
224 /usr/bin/foo``, you can run a cell in any interpreter that accepts code via
224 /usr/bin/foo``, you can run a cell in any interpreter that accepts code via
225 stdin.
225 stdin.
226
226
227 Another handy cell magic makes it easy to write short text files: ``%%file
227 Another handy cell magic makes it easy to write short text files: ``%%file
228 ~/save/to/here.txt``.
228 ~/save/to/here.txt``.
229
229
230 The following cell magics are now included by default; all those that use
230 The following cell magics are now included by default; all those that use
231 special interpreters (Perl, Ruby, bash, etc., assume you have the requisite
231 special interpreters (Perl, Ruby, bash, etc., assume you have the requisite
232 interpreter installed):
232 interpreter installed):
233
233
234 * ``%%!``: run cell body with the underlying OS shell; this is similar to
234 * ``%%!``: run cell body with the underlying OS shell; this is similar to
235 prefixing every line in the cell with ``!``.
235 prefixing every line in the cell with ``!``.
236
236
237 * ``%%bash``: run cell body under bash.
237 * ``%%bash``: run cell body under bash.
238
238
239 * ``%%capture``: capture the output of the code in the cell (and stderr as
239 * ``%%capture``: capture the output of the code in the cell (and stderr as
240 well). Useful to run codes that produce too much output that you don't even
240 well). Useful to run codes that produce too much output that you don't even
241 want scrolled.
241 want scrolled.
242
242
243 * ``%%file``: save cell body as a file.
243 * ``%%file``: save cell body as a file.
244
244
245 * ``%%perl``: run cell body using Perl.
245 * ``%%perl``: run cell body using Perl.
246
246
247 * ``%%prun``: run cell body with profiler (cell extension of ``%prun``).
247 * ``%%prun``: run cell body with profiler (cell extension of ``%prun``).
248
248
249 * ``%%python3``: run cell body using Python 3.
249 * ``%%python3``: run cell body using Python 3.
250
250
251 * ``%%ruby``: run cell body using Ruby.
251 * ``%%ruby``: run cell body using Ruby.
252
252
253 * ``%%script``: run cell body with the script specified in the first line.
253 * ``%%script``: run cell body with the script specified in the first line.
254
254
255 * ``%%sh``: run cell body using sh.
255 * ``%%sh``: run cell body using sh.
256
256
257 * ``%%sx``: capture cell output running the code with the system shell (cell
257 * ``%%sx``: capture cell output running the code with the system shell (cell
258 extension of ``%sx``).
258 extension of ``%sx``).
259
259
260 * ``%%system``: run cell with system shell (``%%!`` is an alias to this).
260 * ``%%system``: run cell with system shell (``%%!`` is an alias to this).
261
261
262 * ``%%timeit``: time the execution of the cell (extension of ``%timeit``).
262 * ``%%timeit``: time the execution of the cell (extension of ``%timeit``).
263
263
264 This is what some of the script-related magics look like in action:
264 This is what some of the script-related magics look like in action:
265
265
266 .. image:: ../_static/ipy_013_notebook_script_cells.png
266 .. image:: ../_static/ipy_013_notebook_script_cells.png
267 :width: 460px
267 :width: 460px
268 :alt: Cluster management from the notebook dashboard
268 :alt: Cluster management from the notebook dashboard
269 :align: center
269 :align: center
270 :target: ../_static/ipy_013_notebook_script_cells.png
270 :target: ../_static/ipy_013_notebook_script_cells.png
271
271
272 In addition, we have also a number of :ref:`extensions <extensions_overview>`
272 In addition, we have also a number of :ref:`extensions <extensions_overview>`
273 that provide specialized magics. These typically require additional software
273 that provide specialized magics. These typically require additional software
274 to run and must be manually loaded via ``%load_ext <extension name>``, but are
274 to run and must be manually loaded via ``%load_ext <extension name>``, but are
275 extremely useful. The following extensions are provided:
275 extremely useful. The following extensions are provided:
276
276
277 Cython magics (extension :ref:`octavemagic <extensions_cythonmagic>`)
277 **Cython magics (extension :ref:`cythonmagic <extensions_cythonmagic>`)**
278 This extension provides magics to automatically build and compile Python
278 This extension provides magics to automatically build and compile Python
279 extension modules using the Cython_ language. You must install Cython
279 extension modules using the Cython_ language. You must install Cython
280 separately, as well as a C compiler, for this to work. The examples
280 separately, as well as a C compiler, for this to work. The examples
281 directory in the source distribution ships with a full notebook
281 directory in the source distribution ships with a full notebook
282 demonstrating these capabilities:
282 demonstrating these capabilities:
283
283
284 .. image:: ../_static/ipy_013_notebook_cythonmagic.png
284 .. image:: ../_static/ipy_013_notebook_cythonmagic.png
285 :width: 460px
285 :width: 460px
286 :alt: Cython magic
286 :alt: Cython magic
287 :align: center
287 :align: center
288 :target: ../_static/ipy_013_notebook_cythonmagic.png
288 :target: ../_static/ipy_013_notebook_cythonmagic.png
289
289
290 .. _cython: http://cython.org
290 .. _cython: http://cython.org
291
291
292 Octave magics (extension :ref:`octavemagic <extensions_octavemagic>`)
292 **Octave magics (extension :ref:`octavemagic <extensions_octavemagic>`)**
293 This extension provides several magics that support calling code written in
293 This extension provides several magics that support calling code written in
294 the Octave_ language for numerical computing. You can execute single-lines
294 the Octave_ language for numerical computing. You can execute single-lines
295 or whole blocks of Octave code, capture both output and figures inline
295 or whole blocks of Octave code, capture both output and figures inline
296 (just like matplotlib plots), and have variables automatically converted
296 (just like matplotlib plots), and have variables automatically converted
297 between the two languages. To use this extension, you must have Octave
297 between the two languages. To use this extension, you must have Octave
298 installed as well as the oct2py_ and h5py_ packages. The examples
298 installed as well as the oct2py_ and h5py_ packages. The examples
299 directory in the source distribution ships with a full notebook
299 directory in the source distribution ships with a full notebook
300 demonstrating these capabilities:
300 demonstrating these capabilities:
301
301
302 .. image:: ../_static/ipy_013_notebook_octavemagic.png
302 .. image:: ../_static/ipy_013_notebook_octavemagic.png
303 :width: 460px
303 :width: 460px
304 :alt: Octave magic
304 :alt: Octave magic
305 :align: center
305 :align: center
306 :target: ../_static/ipy_013_notebook_octavemagic.png
306 :target: ../_static/ipy_013_notebook_octavemagic.png
307
307
308 .. _octave: http://www.gnu.org/software/octave
308 .. _octave: http://www.gnu.org/software/octave
309 .. _oct2py: http://pypi.python.org/pypi/oct2py
309 .. _oct2py: http://pypi.python.org/pypi/oct2py
310 .. _h5py: http://code.google.com/p/h5py
310 .. _h5py: http://code.google.com/p/h5py
311
311
312
312 **R magics (extension :ref:`rmagic <extensions_rmagic>`)**
313 R magics (extension :ref:`rmagic <extensions_rmagic>`)
314 This extension provides several magics that support calling code written in
313 This extension provides several magics that support calling code written in
315 the R_ language for statistical data analysis. You can execute
314 the R_ language for statistical data analysis. You can execute
316 single-lines or whole blocks of R code, capture both output and figures
315 single-lines or whole blocks of R code, capture both output and figures
317 inline (just like matplotlib plots), and have variables automatically
316 inline (just like matplotlib plots), and have variables automatically
318 converted between the two languages. To use this extension, you must have
317 converted between the two languages. To use this extension, you must have
319 R installed as well as the rpy2_ package that bridges Python and R. The
318 R installed as well as the rpy2_ package that bridges Python and R. The
320 examples directory in the source distribution ships with a full notebook
319 examples directory in the source distribution ships with a full notebook
321 demonstrating these capabilities:
320 demonstrating these capabilities:
322
321
323 .. image:: ../_static/ipy_013_notebook_rmagic.png
322 .. image:: ../_static/ipy_013_notebook_rmagic.png
324 :width: 460px
323 :width: 460px
325 :alt: R magic
324 :alt: R magic
326 :align: center
325 :align: center
327 :target: ../_static/ipy_013_notebook_rmagic.png
326 :target: ../_static/ipy_013_notebook_rmagic.png
328
327
329 .. _R: http://www.r-project.org
328 .. _R: http://www.r-project.org
330 .. _rpy2: http://rpy.sourceforge.net/rpy2.html
329 .. _rpy2: http://rpy.sourceforge.net/rpy2.html
331
330
332
331
333 Tab completer improvements
332 Tab completer improvements
334 --------------------------
333 --------------------------
335
334
336 Useful tab-completion based on live inspection of objects is one of the most
335 Useful tab-completion based on live inspection of objects is one of the most
337 popular features of IPython. To make this process even more user-friendly, the
336 popular features of IPython. To make this process even more user-friendly, the
338 completers of both the Qt console and the Notebook have been reworked.
337 completers of both the Qt console and the Notebook have been reworked.
339
338
340 The Qt console comes with a new ncurses-like tab completer, activated by
339 The Qt console comes with a new ncurses-like tab completer, activated by
341 default, which lets you cycle through the available completions by pressing tab,
340 default, which lets you cycle through the available completions by pressing tab,
342 or select a completion with the arrow keys (:ghpull:`1851`).
341 or select a completion with the arrow keys (:ghpull:`1851`).
343
342
344 .. figure:: ../_static/ipy_013_qtconsole_completer.png
343 .. figure:: ../_static/ipy_013_qtconsole_completer.png
345 :width: 460px
344 :width: 460px
346 :alt: ncurses-like completer, with highlighted selection.
345 :alt: ncurses-like completer, with highlighted selection.
347 :align: center
346 :align: center
348 :target: ../_static/ipy_013_qtconsole_completer.png
347 :target: ../_static/ipy_013_qtconsole_completer.png
349
348
350 The new improved Qt console's ncurses-like completer allows to easily
349 The new improved Qt console's ncurses-like completer allows to easily
351 navigate thought long list of completions.
350 navigate thought long list of completions.
352
351
353 In the notebook, completions are now sourced both from object introspection and
352 In the notebook, completions are now sourced both from object introspection and
354 analysis of surrounding code, so limited completions can be offered for
353 analysis of surrounding code, so limited completions can be offered for
355 variables defined in the current cell, or while the kernel is busy
354 variables defined in the current cell, or while the kernel is busy
356 (:ghpull:`1711`).
355 (:ghpull:`1711`).
357
356
358
357
359 We have implemented a new configurable flag to control tab completion on
358 We have implemented a new configurable flag to control tab completion on
360 modules that provide the ``__all__`` attribute::
359 modules that provide the ``__all__`` attribute::
361
360
362 IPCompleter.limit_to__all__= Boolean
361 IPCompleter.limit_to__all__= Boolean
363
362
364 This instructs the completer to honor ``__all__`` for the completion.
363 This instructs the completer to honor ``__all__`` for the completion.
365 Specifically, when completing on ``object.<tab>``, if True: only those names
364 Specifically, when completing on ``object.<tab>``, if True: only those names
366 in ``obj.__all__`` will be included. When False [default]: the ``__all__``
365 in ``obj.__all__`` will be included. When False [default]: the ``__all__``
367 attribute is ignored. :ghpull:`1529`.
366 attribute is ignored. :ghpull:`1529`.
368
367
369
368
370 Improvements to the Qt console
369 Improvements to the Qt console
371 ------------------------------
370 ------------------------------
372
371
373 * changes for easier integration into other projects such as Spyder_.
372 The Qt console continues to receive improvements and refinements, despite the
373 fact that it is by now a fairly mature and robust component. Lots of small
374 polish has gone into it, here are a few highlights:
375
376 * A number of changes were made to the underlying code for easier integration
377 into other projects such as Spyder_ (:ghpull:`2007`, :ghpull:`2024`).
374
378
375 * Improved menus with a new Magic menu that is organized by magic groups (this
379 * Improved menus with a new Magic menu that is organized by magic groups (this
376 was made possible by the reorganization of the magic system
380 was made possible by the reorganization of the magic system
377 internals). :ghpull:`1782`.
381 internals). :ghpull:`1782`.
378
382
379 * Allow for restarting kernels without clearing the qtconsole, while leaving a
383 * Allow for restarting kernels without clearing the qtconsole, while leaving a
380 visible indication that the kernel has restarted. :ghpull:`1681`.
384 visible indication that the kernel has restarted. :ghpull:`1681`.
381
385
382 * Allow the native display of jpeg image in the qtconsole. :ghpull:`1643`.
386 * Allow the native display of jpeg images in the qtconsole. :ghpull:`1643`.
383
387
384 .. _spyder: https://code.google.com/p/spyderlib
388 .. _spyder: https://code.google.com/p/spyderlib
385
389
386
390
387
391
388 Parallel
392 Parallel
389 --------
393 --------
390
394
391 The parallel tools have been improved and fine-tuned on multiple fronts. Now,
395 The parallel tools have been improved and fine-tuned on multiple fronts. Now,
392 the creation of an :class:`IPython.parallel.Client` object automatically
396 the creation of an :class:`IPython.parallel.Client` object automatically
393 activates a line and cell magic function ``px`` that sends its code to all the
397 activates a line and cell magic function ``px`` that sends its code to all the
394 engines. Further magics can be easily created with the :meth:`.Client.activate`
398 engines. Further magics can be easily created with the :meth:`.Client.activate`
395 method, to conveniently execute code on any subset of engines. :ghpull:`1893`.
399 method, to conveniently execute code on any subset of engines. :ghpull:`1893`.
396
400
397 The ``%%px`` cell magic can also be given an optional targets argument, as well
401 The ``%%px`` cell magic can also be given an optional targets argument, as well
398 as a ``--out`` argument for storing its output.
402 as a ``--out`` argument for storing its output.
399
403
400 A new magic has also been added, ``%pxconfig``, that lets you configure various
404 A new magic has also been added, ``%pxconfig``, that lets you configure various
401 defaults of the parallel magics. As usual, type ``%pxconfig?`` for details.
405 defaults of the parallel magics. As usual, type ``%pxconfig?`` for details.
402
406
403 The exception reporting in parallel contexts has been improved to be easier to
407 The exception reporting in parallel contexts has been improved to be easier to
404 read. Now, IPython directly reports the remote exceptions without showing any
408 read. Now, IPython directly reports the remote exceptions without showing any
405 of the internal execution parts:
409 of the internal execution parts:
406
410
407 .. image:: ../_static/ipy_013_par_tb.png
411 .. image:: ../_static/ipy_013_par_tb.png
408 :width: 460px
412 :width: 460px
409 :alt: Improved parallel exceptions.
413 :alt: Improved parallel exceptions.
410 :align: center
414 :align: center
411 :target: ../_static/ipy_013_par_tb.png
415 :target: ../_static/ipy_013_par_tb.png
412
416
413
414 The parallel tools now default to using ``NoDB`` as the storage backend for
417 The parallel tools now default to using ``NoDB`` as the storage backend for
415 intermediate results. This means that the default usage case will have a
418 intermediate results. This means that the default usage case will have a
416 significantly reduced memory footprint, though certain advanced features are
419 significantly reduced memory footprint, though certain advanced features are
417 not available with this backend. For more details, see :ref:`parallel_db`.
420 not available with this backend. For more details, see :ref:`parallel_db`.
418
421
419 The parallel magics now display all output, so you can do parallel plotting or
422 The parallel magics now display all output, so you can do parallel plotting or
420 other actions with complex display. The ``px`` magic has now both line and cell
423 other actions with complex display. The ``px`` magic has now both line and cell
421 modes, and in cell mode finer control has been added about how to collate
424 modes, and in cell mode finer control has been added about how to collate
422 output from multiple engines. :ghpull:`1768`.
425 output from multiple engines. :ghpull:`1768`.
423
426
424 Incremental improvements to SSH launchers:
427 There have also been incremental improvements to the SSH launchers:
425
428
426 * add to_send/fetch steps for moving connection files around.
429 * add to_send/fetch steps for moving connection files around.
427
430
428 * add SSHProxyEngineSetLauncher, for invoking to `ipcluster engines` on a
431 * add SSHProxyEngineSetLauncher, for invoking to `ipcluster engines` on a
429 remote host. This can be used to start a set of engines via PBS/SGE/MPI
432 remote host. This can be used to start a set of engines via PBS/SGE/MPI
430 *remotely*.
433 *remotely*.
431
434
432 This makes the SSHLauncher usable on machines without shared filesystems.
435 This makes the SSHLauncher usable on machines without shared filesystems.
433
436
434 When sending files, the destination directory must *already exist* - that is,
437 A number of 'sugar' methods/properties were added to AsyncResult that are
435 `ipython profile create` may be necessary on the remote system, before the
438 quite useful (:ghpull:`1548`) for everday work:
436 security dir exists for putting the connection file the first
437 time. :ghpull:`1634`.
438
439 Add sugar methods/properties to AsyncResult that are generically useful
440 (:ghpull:`1548`):
441
439
442 * ``ar.wall_time`` = received - submitted
440 * ``ar.wall_time`` = received - submitted
443 * ``ar.serial_time`` = sum of serial computation time
441 * ``ar.serial_time`` = sum of serial computation time
444 * ``ar.elapsed`` = time since submission (wall_time if done)
442 * ``ar.elapsed`` = time since submission (wall_time if done)
445 * ``ar.progress`` = (int) number of sub-tasks that have completed
443 * ``ar.progress`` = (int) number of sub-tasks that have completed
446 * ``len(ar)`` = # of tasks
444 * ``len(ar)`` = # of tasks
447 * ``ar.wait_interactive()``: prints progress
445 * ``ar.wait_interactive()``: prints progress
448
446
449 Added :meth:`.Client.spin_thread` / :meth:`~.Client.stop_spin_thread` for running
447 Added :meth:`.Client.spin_thread` / :meth:`~.Client.stop_spin_thread` for
450 spin in a background thread, to keep zmq queue clear. This can be used to
448 running spin in a background thread, to keep zmq queue clear. This can be used
451 ensure that timing information is as accurate as possible (at the cost of
449 to ensure that timing information is as accurate as possible (at the cost of
452 having a background thread active).
450 having a background thread active).
453
451
454 Set TaskScheduler.hwm default to 1 instead of 0. 1 has more
452 Set TaskScheduler.hwm default to 1 instead of 0. 1 has more
455 predictable/intuitive behavior, if often slower, and thus a more logical
453 predictable/intuitive behavior, if often slower, and thus a more logical
456 default. Users whose workloads require maximum throughput and are largely
454 default. Users whose workloads require maximum throughput and are largely
457 homogeneous in time per task can make the optimization themselves, but now the
455 homogeneous in time per task can make the optimization themselves, but now the
458 behavior will be less surprising to new users. :ghpull:`1294`.
456 behavior will be less surprising to new users. :ghpull:`1294`.
459
457
460
458
461 Kernel/Engine unification
459 Kernel/Engine unification
462 -------------------------
460 -------------------------
463
461
464 :ghpull:`1640`
462 This is mostly work 'under the hood', but it is actually a *major* achievement
465
463 for the project that has deep implications in the long term: at last, we have
466 Add :func:`IPython.embed_kernel()` as a public API.
464 unified the main object that execute as the user's interactive shell (which
467 Embedding an IPython kernel in an application is useful when you want to use
465 we refer to as the *IPython kernel*) with the objects that run in all the
468 IPython.embed() but don't have a terminal attached on stdin and stdout.
466 worker nodes of the parallel computing facilities (the *IPython engines*).
469
467 Ever since the first implementation of IPython's parallel code back in 2006, we
470 :func:`IPython.parallel.bind_kernel` allows you to promote Engines to listening Kernels,
468 had wanted to have these two roles be played by the same machinery, but a
471 and connect QtConsoles directly to an Engine and debug it directly.
469 number of technical reasons had prevented that from being true.
472
470
473 This also means that Engines are now fully IPython, allowing access to magics,
471 In this release we have now merged them, and this has a number of important
474 etc. in your parallel execution.
472 consequences:
473
474 * It is possible to connect any of our clients (qtconsole or terminal console)
475 to any individual parallel engine, with the *exact* behavior of working at a
476 'regular' IPython console/qtconsole. This makes debugging, plotting, etc. in
477 parallel scenarios vastly easier.
478
479 * Parallel engines can always execute arbitrary 'IPython code', that is, code
480 that has magics, shell extensions, etc. In combination with the ``%%px``
481 magics, it is thus extremely natural for example to send to all engines a
482 block of Cython or R code to be executed via the new Cython and R magics. For
483 example, this snippet would send the R block to all active engines in a
484 cluster::
485
486 %%px
487 %%R
488 ... R code goes here
489
490 * It is possible to embed not only an interactive shell with the
491 :func:`IPython.embed` call as always, but now you can also embed a *kernel*
492 with :func:``IPython.embed_kernel()`. Embedding an IPython kernel in an
493 application is useful when you want to use :func:`IPython.embed` but don't
494 have a terminal attached on stdin and stdout.
495
496 * The new :func:`IPython.parallel.bind_kernel` allows you to promote Engines to
497 listening Kernels, and connect QtConsoles directly to an Engine and debug it
498 directly.
499
500 In addition, having a single core object through our entire architecture also
501 makes the project conceptually cleaner, easier to maintain and more robust.
502 This took a lot of work to get in place, but we are thrilled to have this major
503 piece of architecture finally where we'd always wanted it to be.
475
504
476
505
477 Official Public API
506 Official Public API
478 -------------------
507 -------------------
479
508
480 We have begun organizing our API for easier public use, with an eye towards an
509 We have begun organizing our API for easier public use, with an eye towards an
481 official IPython 1.0 release which will firmly maintain this API compatible for
510 official IPython 1.0 release which will firmly maintain this API compatible for
482 its entire lifecycle. There is now an :mod:`IPython.display` module that
511 its entire lifecycle. There is now an :mod:`IPython.display` module that
483 aggregates all display routines, and the :mod:`IPython.config` namespace has
512 aggregates all display routines, and the :mod:`IPython.config` namespace has
484 all public configuration tools. We will continue improving our public API
513 all public configuration tools. We will continue improving our public API
485 layout so that users only need to import names one level deeper than the main
514 layout so that users only need to import names one level deeper than the main
486 ``IPython`` package to access all public namespaces.
515 ``IPython`` package to access all public namespaces.
487
516
488
517
489 IPython notebook file icons
518 IPython notebook file icons
490 ---------------------------
519 ---------------------------
491
520
492 The directory ``docs/resources`` in the source distribution contains SVG and
521 The directory ``docs/resources`` in the source distribution contains SVG and
493 PNG versions of our file icons, as well as an ``Info.plist.example`` file with
522 PNG versions of our file icons, as well as an ``Info.plist.example`` file with
494 instructions to install them on Mac OSX. This is a first draft of our icons,
523 instructions to install them on Mac OSX. This is a first draft of our icons,
495 and we encourage contributions from users with graphic talent to improve them
524 and we encourage contributions from users with graphic talent to improve them
496 in the future:
525 in the future:
497
526
498 .. image:: ../../resources/ipynb_icon_128x128.png
527 .. image:: ../../resources/ipynb_icon_128x128.png
499 :alt: IPython notebook file icon.
528 :alt: IPython notebook file icon.
500
529
501
530
502 New top-level `locate` command
531 New top-level `locate` command
503 ------------------------------
532 ------------------------------
504
533
505 Add `locate` entry points; these would be useful for quickly locating IPython
534 Add `locate` entry points; these would be useful for quickly locating IPython
506 directories and profiles from other (non-Python) applications. :ghpull:`1762`.
535 directories and profiles from other (non-Python) applications. :ghpull:`1762`.
507
536
508 Examples::
537 Examples::
509
538
510 $> ipython locate
539 $> ipython locate
511 /Users/me/.ipython
540 /Users/me/.ipython
512
541
513 $> ipython locate profile foo
542 $> ipython locate profile foo
514 /Users/me/.ipython/profile_foo
543 /Users/me/.ipython/profile_foo
515
544
516 $> ipython locate profile
545 $> ipython locate profile
517 /Users/me/.ipython/profile_default
546 /Users/me/.ipython/profile_default
518
547
519 $> ipython locate profile dne
548 $> ipython locate profile dne
520 [ProfileLocate] Profile u'dne' not found.
549 [ProfileLocate] Profile u'dne' not found.
521
550
522
551
523 Other new features and improvements
552 Other new features and improvements
524 -----------------------------------
553 -----------------------------------
525
554
526 * **%install_ext**: A new magic function to install an IPython extension from
555 * **%install_ext**: A new magic function to install an IPython extension from
527 a URL. E.g. ``%install_ext
556 a URL. E.g. ``%install_ext
528 https://bitbucket.org/birkenfeld/ipython-physics/raw/default/physics.py``.
557 https://bitbucket.org/birkenfeld/ipython-physics/raw/default/physics.py``.
529
558
530 * The ``%loadpy`` magic is no longer restricted to Python files, and has been
559 * The ``%loadpy`` magic is no longer restricted to Python files, and has been
531 renamed ``%load``. The old name remains as an alias.
560 renamed ``%load``. The old name remains as an alias.
532
561
533 * New command line arguments will help external programs find IPython folders:
562 * New command line arguments will help external programs find IPython folders:
534 ``ipython locate`` finds the user's IPython directory, and ``ipython locate
563 ``ipython locate`` finds the user's IPython directory, and ``ipython locate
535 profile foo`` finds the folder for the 'foo' profile (if it exists).
564 profile foo`` finds the folder for the 'foo' profile (if it exists).
536
565
537 * The :envvar:`IPYTHON_DIR` environment variable, introduced in the Great
566 * The :envvar:`IPYTHON_DIR` environment variable, introduced in the Great
538 Reorganization of 0.11 and existing only in versions 0.11-0.13, has been
567 Reorganization of 0.11 and existing only in versions 0.11-0.13, has been
539 deprecated. As described in :ghpull:`1167`, the complexity and confusion of
568 deprecated. As described in :ghpull:`1167`, the complexity and confusion of
540 migrating to this variable is not worth the aesthetic improvement. Please use
569 migrating to this variable is not worth the aesthetic improvement. Please use
541 the historical :envvar:`IPYTHONDIR` environment variable instead.
570 the historical :envvar:`IPYTHONDIR` environment variable instead.
542
571
543 * The default value of *interactivity* passed from
572 * The default value of *interactivity* passed from
544 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_cell` to
573 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_cell` to
545 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_ast_nodes`
574 :meth:`~IPython.core.interactiveshell.InteractiveShell.run_ast_nodes`
546 is now configurable.
575 is now configurable.
547
576
548 * New ``%alias_magic`` function to conveniently create aliases of existing
577 * New ``%alias_magic`` function to conveniently create aliases of existing
549 magics, if you prefer to have shorter names for personal use.
578 magics, if you prefer to have shorter names for personal use.
550
579
551 * We ship unminified versions of the JavaScript libraries we use, to better
580 * We ship unminified versions of the JavaScript libraries we use, to better
552 comply with Debian's packaging policies.
581 comply with Debian's packaging policies.
553
582
554 * Simplify the information presented by ``obj?/obj??`` to eliminate a few
583 * Simplify the information presented by ``obj?/obj??`` to eliminate a few
555 redundant fields when possible. :ghpull:`2038`.
584 redundant fields when possible. :ghpull:`2038`.
556
585
557 * Improved continuous integration for IPython. We now have automated test runs
586 * Improved continuous integration for IPython. We now have automated test runs
558 on `Shining Panda <https://jenkins.shiningpanda.com/ipython>`_ and `Travis-CI
587 on `Shining Panda <https://jenkins.shiningpanda.com/ipython>`_ and `Travis-CI
559 <http://travis-ci.org/#!/ipython/ipython>`_, as well as `Tox support
588 <http://travis-ci.org/#!/ipython/ipython>`_, as well as `Tox support
560 <http://tox.testrun.org>`_.
589 <http://tox.testrun.org>`_.
561
590
562 * The `vim-ipython`_ functionality (externally developed) has been updated to
591 * The `vim-ipython`_ functionality (externally developed) has been updated to
563 the latest version.
592 the latest version.
564
593
565 .. _vim-ipython: https://github.com/ivanov/vim-ipython
594 .. _vim-ipython: https://github.com/ivanov/vim-ipython
566
595
567 * The ``%save`` magic now has a ``-f`` flag to force overwriting, which makes
596 * The ``%save`` magic now has a ``-f`` flag to force overwriting, which makes
568 it much more usable in the notebook where it is not possible to reply to
597 it much more usable in the notebook where it is not possible to reply to
569 interactive questions from the kernel. :ghpull:`1937`.
598 interactive questions from the kernel. :ghpull:`1937`.
570
599
571 * Use dvipng to format sympy.Matrix, enabling display of matrices in the Qt
600 * Use dvipng to format sympy.Matrix, enabling display of matrices in the Qt
572 console with the sympy printing extension. :ghpull:`1861`.
601 console with the sympy printing extension. :ghpull:`1861`.
573
602
574 * Our messaging protocol now has a reasonable test suite, helping ensure that
603 * Our messaging protocol now has a reasonable test suite, helping ensure that
575 we don't accidentally deviate from the spec and possibly break third-party
604 we don't accidentally deviate from the spec and possibly break third-party
576 applications that may have been using it. We encourage users to contribute
605 applications that may have been using it. We encourage users to contribute
577 more stringent tests to this part of the test suite. :ghpull:`1627`.
606 more stringent tests to this part of the test suite. :ghpull:`1627`.
578
607
579 * Use LaTeX to display, on output, various built-in types with the SymPy
608 * Use LaTeX to display, on output, various built-in types with the SymPy
580 printing extension. :ghpull:`1399`.
609 printing extension. :ghpull:`1399`.
581
610
582 * Add Gtk3 event loop integration and example. :ghpull:`1588`.
611 * Add Gtk3 event loop integration and example. :ghpull:`1588`.
583
612
584 * ``clear_output`` improvements, which allow things like progress bars and other
613 * ``clear_output`` improvements, which allow things like progress bars and other
585 simple animations to work well in the notebook (:ghpull:`1563`):
614 simple animations to work well in the notebook (:ghpull:`1563`):
586
615
587 * `clear_output()` clears the line, even in terminal IPython, the QtConsole
616 * `clear_output()` clears the line, even in terminal IPython, the QtConsole
588 and plain Python as well, by printing `\r` to streams.
617 and plain Python as well, by printing `\r` to streams.
589
618
590 * `clear_output()` avoids the flicker in the notebook by adding a delay,
619 * `clear_output()` avoids the flicker in the notebook by adding a delay,
591 and firing immediately upon the next actual display message.
620 and firing immediately upon the next actual display message.
592
621
593 * `display_javascript` hides its `output_area` element, so using display to
622 * `display_javascript` hides its `output_area` element, so using display to
594 run a bunch of javascript doesn't result in ever-growing vertical space.
623 run a bunch of javascript doesn't result in ever-growing vertical space.
595
624
596 * Add simple support for running inside a virtualenv. While this doesn't
625 * Add simple support for running inside a virtualenv. While this doesn't
597 supplant proper installation (as users should do), it helps ad-hoc calling of
626 supplant proper installation (as users should do), it helps ad-hoc calling of
598 IPython from inside a virtualenv. :ghpull:`1388`.
627 IPython from inside a virtualenv. :ghpull:`1388`.
599
628
600
629
601 Major Bugs fixed
630 Major Bugs fixed
602 ----------------
631 ----------------
603
632
604 In this cycle, we have :ref:`closed over 740 issues <issues_list_013>`, but a
633 In this cycle, we have :ref:`closed over 740 issues <issues_list_013>`, but a
605 few major ones merit special mention:
634 few major ones merit special mention:
606
635
607 * The ``%pastebin`` magic has been updated to point to gist.github.com, since
636 * The ``%pastebin`` magic has been updated to point to gist.github.com, since
608 unfortunately http://paste.pocoo.org has closed down. We also added a -d flag
637 unfortunately http://paste.pocoo.org has closed down. We also added a -d flag
609 for the user to provide a gist description string. :ghpull:`1670`.
638 for the user to provide a gist description string. :ghpull:`1670`.
610
639
611 * Fix ``%paste`` that would reject certain valid inputs. :ghpull:`1258`.
640 * Fix ``%paste`` that would reject certain valid inputs. :ghpull:`1258`.
612
641
613 * Fix sending and receiving of Numpy structured arrays (those with composite
642 * Fix sending and receiving of Numpy structured arrays (those with composite
614 dtypes, often used as recarrays). :ghpull:`2034`.
643 dtypes, often used as recarrays). :ghpull:`2034`.
615
644
616 * Reconnect when the websocket connection closes unexpectedly. :ghpull:`1577`.
645 * Reconnect when the websocket connection closes unexpectedly. :ghpull:`1577`.
617
646
618 * Fix truncated representation of objects in the debugger by showing at least
647 * Fix truncated representation of objects in the debugger by showing at least
619 80 characters' worth of information. :ghpull:`1793`.
648 80 characters' worth of information. :ghpull:`1793`.
620
649
621 * Fix logger to be Unicode-aware: logging could crash ipython if there was
650 * Fix logger to be Unicode-aware: logging could crash ipython if there was
622 unicode in the input. :ghpull:`1792`.
651 unicode in the input. :ghpull:`1792`.
623
652
624 * Fix images missing from XML/SVG export in the Qt console. :ghpull:`1449`.
653 * Fix images missing from XML/SVG export in the Qt console. :ghpull:`1449`.
625
654
626 * Fix deepreload on Python 3. :ghpull:`1625`, as well as having a much cleaner
655 * Fix deepreload on Python 3. :ghpull:`1625`, as well as having a much cleaner
627 and more robust implementation of deepreload in general. :ghpull:`1457`.
656 and more robust implementation of deepreload in general. :ghpull:`1457`.
628
657
629
658
630 Backwards incompatible changes
659 Backwards incompatible changes
631 ------------------------------
660 ------------------------------
632
661
633 * The exception :exc:`IPython.core.error.TryNext` previously accepted
662 * The exception :exc:`IPython.core.error.TryNext` previously accepted
634 arguments and keyword arguments to be passed to the next implementation
663 arguments and keyword arguments to be passed to the next implementation
635 of the hook. This feature was removed as it made error message propagation
664 of the hook. This feature was removed as it made error message propagation
636 difficult and violated the principle of loose coupling.
665 difficult and violated the principle of loose coupling.
General Comments 0
You need to be logged in to leave comments. Login now