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