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