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