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