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