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