##// END OF EJS Templates
updated IPython module organization descriptions...
Paul Ivanov -
Show More
@@ -1,71 +1,85 b''
1 .. _module_reorg:
1 .. _module_reorg:
2
2
3 ===========================
3 ===========================
4 IPython module organization
4 IPython module organization
5 ===========================
5 ===========================
6
6
7 As of the 0.11 release of IPython, the top-level packages and modules have
7 As of the 0.11 release of IPython, the top-level packages and modules have
8 been completely reorganized. This section describes the purpose of the
8 been completely reorganized. This section describes the purpose of the
9 top-level IPython subpackages.
9 top-level IPython subpackages.
10
10
11 Subpackage descriptions
11 Subpackage descriptions
12 =======================
12 =======================
13
13
14 * :mod:`IPython.config`. This package contains the configuration system of
14 * :mod:`IPython.config`. This package contains the :ref:`configuration system
15 IPython, as well as default configuration files for the different IPython
15 <config_index>` of IPython, as well as default configuration files for the
16 applications.
16 different IPython applications.
17
17
18 * :mod:`IPython.core`. This sub-package contains the core of the IPython
18 * :mod:`IPython.core`. This sub-package contains the core of the IPython
19 interpreter, but none of its extended capabilities.
19 interpreter, but none of its extended capabilities.
20
20
21 * :mod:`IPython.deathrow`. This is for code that is outdated, untested,
21 * :mod:`IPython.deathrow`. This is for code that is outdated, untested,
22 rotting, or that belongs in a separate third party project. Eventually all
22 rotting, or that belongs in a separate third party project. Eventually all
23 this code will either i) be revived by someone willing to maintain it with
23 this code will either 1) be revived by someone willing to maintain it with
24 tests and docs and re-included into IPython or 2) be removed from IPython
24 tests and docs and re-included into IPython or 2) be removed from IPython
25 proper, but put into a separate third-party Python package. No new code will
25 proper, but put into a separate third-party Python package. No new code will
26 be allowed here. If your favorite extension has been moved here please
26 be allowed here. If your favorite extension has been moved here please
27 contact the IPython developer mailing list to help us determine the best
27 contact the IPython developer mailing list to help us determine the best
28 course of action.
28 course of action.
29
29
30 * :mod:`IPython.extensions`. This package contains fully supported IPython
30 * :mod:`IPython.extensions`. This package contains fully supported IPython
31 extensions. These extensions adhere to the official IPython extension API
31 extensions. These extensions adhere to the official IPython extension API
32 and can be enabled by adding them to a field in the configuration file.
32 and can be enabled by adding them to a field in the configuration file.
33 If your extension is no longer in this location, please look in
33 If your extension is no longer in this location, please look in
34 :mod:`IPython.quarantine` and :mod:`IPython.deathrow` and contact the
34 :mod:`IPython.quarantine` and :mod:`IPython.deathrow` and contact the
35 IPython developer mailing list.
35 IPython developer mailing list.
36
36
37 * :mod:`IPython.external`. This package contains third party packages and
37 * :mod:`IPython.external`. This package contains third party packages and
38 modules that IPython ships internally to reduce the number of dependencies.
38 modules that IPython ships internally to reduce the number of dependencies.
39 Usually, these are short, single file modules.
39 Usually, these are short, single file modules.
40
40
41 * :mod:`IPython.frontend`. This package contains the various IPython
41 * :mod:`IPython.frontend`. This package contains the various IPython
42 frontends. Currently, the code in this subpackage is very experimental and
42 frontends which communicate with the :mod:`IPython.zmq` kernels (see
43 may be broken.
43 :ref:`Messaging in IPython <messaging>`). This includes the
44
44 :ref:`ipython notebook <htmlnotebook>`, :ref:`ipython qtconsole
45 * :mod:`IPython.gui`. Another semi-experimental wxPython based IPython GUI.
45 <qtconsole>`, and :ref:`ipython console <two_process_console>` entry points.
46
47 * :mod:`IPython.kernel`. This contains IPython's parallel computing system.
48
46
49 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
47 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
50 of the IPython core. These things will go here and in. Modules in this
48 of the IPython core. These things will go here and in. Modules in this
51 package are similar to extensions, but don't adhere to the official
49 package are similar to extensions, but don't adhere to the official
52 IPython extension API.
50 IPython extension API.
53
51
52 * :mod:`IPython.nbformat`. This package contains code related to reading and
53 writing :ref:`IPython Notebook's <htmlnotebook>` file format (`.ipynb`
54 files).
55
56 * :mod:`IPython.parallel`. This contains :ref:`IPython's parallel computing
57 system <parallel_index>`. This previously lived under :mod:`IPython.kernel`,
58 but that module has been deprecated.
59
54 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
60 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
55 standards, but that we plan on keeping. To be moved out of this sub-package
61 standards, but that we plan on keeping. To be moved out of this sub-package
56 a module needs to have approval of the core IPython developers, tests and
62 a module needs to have approval of the core IPython developers, tests and
57 documentation. If your favorite extension has been moved here please contact
63 documentation. If your favorite extension has been moved here please contact
58 the IPython developer mailing list to help us determine the best course of
64 the IPython developer mailing list to help us determine the best course of
59 action.
65 action.
60
66
61 * :mod:`IPython.scripts`. This package contains a variety of top-level
67 * :mod:`IPython.scripts`. This package contains a variety of top-level
62 command line scripts. Eventually, these should be moved to the
68 command line scripts. Eventually, these should be moved to the
63 :file:`scripts` subdirectory of the appropriate IPython subpackage.
69 :file:`scripts` subdirectory of the appropriate IPython subpackage.
64
70
71 * :mod:`IPython.testing`. This package contains code related to the IPython
72 test suite, which locates and executes the `tests` submodules of all
73 IPython sub-packages. It also contains decorators and utilities relevant for
74 testing.
75
65 * :mod:`IPython.utils`. This sub-package will contain anything that might
76 * :mod:`IPython.utils`. This sub-package will contain anything that might
66 eventually be found in the Python standard library, like things in
77 eventually be found in the Python standard library, like things in
67 :mod:`genutils`. Each sub-module in this sub-package should contain
78 :mod:`genutils`. Each sub-module in this sub-package should contain
68 functions and classes that serve a single purpose and that don't
79 functions and classes that serve a single purpose and that don't
69 depend on things in the rest of IPython.
80 depend on things in the rest of IPython.
70
81
82 * :mod:`IPython.zmq`. This sub-package contains code related to starting and
83 managing IPython kernels, which :mod:`IPython.frontend` instances can then
84 communicate with (see :ref:`Messaging in IPython <messaging>`).
71
85
@@ -1,369 +1,370 b''
1 =============
1 =============
2 0.12 Series
2 0.12 Series
3 =============
3 =============
4
4
5 Release 0.12.1
5 Release 0.12.1
6 ==============
6 ==============
7
7
8 IPython 0.12.1 is a bugfix release of 0.12, pulling only bugfixes and minor
8 IPython 0.12.1 is a bugfix release of 0.12, pulling only bugfixes and minor
9 cleanup from 0.13, timed for the Ubuntu 12.04 LTS release.
9 cleanup from 0.13, timed for the Ubuntu 12.04 LTS release.
10
10
11 See the :ref:`list of fixed issues <issues_list_012>` for specific backported issues.
11 See the :ref:`list of fixed issues <issues_list_012>` for specific backported issues.
12
12
13
13
14 Release 0.12
14 Release 0.12
15 ============
15 ============
16
16
17 IPython 0.12 contains several major new features, as well as a large amount of
17 IPython 0.12 contains several major new features, as well as a large amount of
18 bug and regression fixes. The 0.11 release brought with it a lot of new
18 bug and regression fixes. The 0.11 release brought with it a lot of new
19 functionality and major refactorings of the codebase; by and large this has
19 functionality and major refactorings of the codebase; by and large this has
20 proven to be a success as the number of contributions to the project has
20 proven to be a success as the number of contributions to the project has
21 increased dramatically, proving that the code is now much more approachable.
21 increased dramatically, proving that the code is now much more approachable.
22 But in the refactoring inevitably some bugs were introduced, and we have also
22 But in the refactoring inevitably some bugs were introduced, and we have also
23 squashed many of those as well as recovered some functionality that had been
23 squashed many of those as well as recovered some functionality that had been
24 temporarily disabled due to the API changes.
24 temporarily disabled due to the API changes.
25
25
26 The following major new features appear in this version.
26 The following major new features appear in this version.
27
27
28
28
29 An interactive browser-based Notebook with rich media support
29 An interactive browser-based Notebook with rich media support
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31
31
32 A powerful new interface puts IPython in your browser. You can start it with
32 A powerful new interface puts IPython in your browser. You can start it with
33 the command ``ipython notebook``:
33 the command ``ipython notebook``:
34
34
35 .. figure:: ../_static/notebook_specgram.png
35 .. figure:: ../_static/notebook_specgram.png
36 :width: 400px
36 :width: 400px
37 :alt: The IPython notebook with embedded text, code, math and figures.
37 :alt: The IPython notebook with embedded text, code, math and figures.
38 :align: center
38 :align: center
39 :target: ../_static/notebook_specgram.png
39 :target: ../_static/notebook_specgram.png
40
40
41 The new IPython notebook showing text, mathematical expressions in LaTeX,
41 The new IPython notebook showing text, mathematical expressions in LaTeX,
42 code, results and embedded figures created with Matplotlib.
42 code, results and embedded figures created with Matplotlib.
43
43
44 This new interface maintains all the features of IPython you are used to, as it
44 This new interface maintains all the features of IPython you are used to, as it
45 is a new client that communicates with the same IPython kernels used by the
45 is a new client that communicates with the same IPython kernels used by the
46 terminal and Qt console. But the web notebook provides for a different
46 terminal and Qt console. But the web notebook provides for a different
47 workflow where you can integrate, along with code execution, also text,
47 workflow where you can integrate, along with code execution, also text,
48 mathematical expressions, graphics, video, and virtually any content that a
48 mathematical expressions, graphics, video, and virtually any content that a
49 modern browser is capable of displaying.
49 modern browser is capable of displaying.
50
50
51 You can save your work sessions as documents that retain all these elements and
51 You can save your work sessions as documents that retain all these elements and
52 which can be version controlled, emailed to colleagues or saved as HTML or PDF
52 which can be version controlled, emailed to colleagues or saved as HTML or PDF
53 files for printing or publishing statically on the web. The internal storage
53 files for printing or publishing statically on the web. The internal storage
54 format is a JSON file that can be easily manipulated for manual exporting to
54 format is a JSON file that can be easily manipulated for manual exporting to
55 other formats.
55 other formats.
56
56
57 This Notebook is a major milestone for IPython, as for years we have tried to
57 This Notebook is a major milestone for IPython, as for years we have tried to
58 build this kind of system. We were inspired originally by the excellent
58 build this kind of system. We were inspired originally by the excellent
59 implementation in Mathematica, we made a number of attempts using older
59 implementation in Mathematica, we made a number of attempts using older
60 technologies in earlier Summer of Code projects in 2005 (both students and
60 technologies in earlier Summer of Code projects in 2005 (both students and
61 Robert Kern developed early prototypes), and in recent years we have seen the
61 Robert Kern developed early prototypes), and in recent years we have seen the
62 excellent implementation offered by the `Sage <http://sagemath.org>` system.
62 excellent implementation offered by the `Sage <http://sagemath.org>` system.
63 But we continued to work on something that would be consistent with the rest of
63 But we continued to work on something that would be consistent with the rest of
64 IPython's design, and it is clear now that the effort was worth it: based on
64 IPython's design, and it is clear now that the effort was worth it: based on
65 the ZeroMQ communications architecture introduced in version 0.11, the notebook
65 the ZeroMQ communications architecture introduced in version 0.11, the notebook
66 can now retain 100% of the features of the real IPython. But it can also
66 can now retain 100% of the features of the real IPython. But it can also
67 provide the rich media support and high quality Javascript libraries that were
67 provide the rich media support and high quality Javascript libraries that were
68 not available in browsers even one or two years ago (such as high-quality
68 not available in browsers even one or two years ago (such as high-quality
69 mathematical rendering or built-in video).
69 mathematical rendering or built-in video).
70
70
71 The notebook has too many useful and important features to describe in these
71 The notebook has too many useful and important features to describe in these
72 release notes; our documentation now contains a directory called
72 release notes; our documentation now contains a directory called
73 ``examples/notebooks`` with several notebooks that illustrate various aspects
73 ``examples/notebooks`` with several notebooks that illustrate various aspects
74 of the system. You should start by reading those named
74 of the system. You should start by reading those named
75 ``00_notebook_tour.ipynb`` and ``01_notebook_introduction.ipynb`` first, and
75 ``00_notebook_tour.ipynb`` and ``01_notebook_introduction.ipynb`` first, and
76 then can proceed to read the others in any order you want.
76 then can proceed to read the others in any order you want.
77
77
78 To start the notebook server, go to a directory containing the notebooks you
78 To start the notebook server, go to a directory containing the notebooks you
79 want to open (or where you want to create new ones) and type::
79 want to open (or where you want to create new ones) and type::
80
80
81 ipython notebook
81 ipython notebook
82
82
83 You can see all the relevant options with::
83 You can see all the relevant options with::
84
84
85 ipython notebook --help
85 ipython notebook --help
86 ipython notebook --help-all # even more
86 ipython notebook --help-all # even more
87
87
88 and just like the Qt console, you can start the notebook server with pylab
88 and just like the Qt console, you can start the notebook server with pylab
89 support by using::
89 support by using::
90
90
91 ipython notebook --pylab
91 ipython notebook --pylab
92
92
93 for floating matplotlib windows or::
93 for floating matplotlib windows or::
94
94
95 ipython notebook --pylab inline
95 ipython notebook --pylab inline
96
96
97 for plotting support with automatically inlined figures. Note that it is now
97 for plotting support with automatically inlined figures. Note that it is now
98 possible also to activate pylab support at runtime via ``%pylab``, so you do
98 possible also to activate pylab support at runtime via ``%pylab``, so you do
99 not need to make this decision when starting the server.
99 not need to make this decision when starting the server.
100
100
101 See :ref:`the Notebook docs <htmlnotebook>` for technical details.
101 See :ref:`the Notebook docs <htmlnotebook>` for technical details.
102
102
103 .. _two_process_console:
103
104
104 Two-process terminal console
105 Two-process terminal console
105 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106
107
107 Based on the same architecture as the notebook and the Qt console, we also have
108 Based on the same architecture as the notebook and the Qt console, we also have
108 now a terminal-based console that can connect to an external IPython kernel
109 now a terminal-based console that can connect to an external IPython kernel
109 (the same kernels used by the Qt console or the notebook, in fact). While this
110 (the same kernels used by the Qt console or the notebook, in fact). While this
110 client behaves almost identically to the usual IPython terminal application,
111 client behaves almost identically to the usual IPython terminal application,
111 this capability can be very useful to attach an interactive console to an
112 this capability can be very useful to attach an interactive console to an
112 existing kernel that was started externally. It lets you use the interactive
113 existing kernel that was started externally. It lets you use the interactive
113 ``%debug`` facilities in a notebook, for example (the web browser can't
114 ``%debug`` facilities in a notebook, for example (the web browser can't
114 interact directly with the debugger) or debug a third-party code where you may
115 interact directly with the debugger) or debug a third-party code where you may
115 have embedded an IPython kernel.
116 have embedded an IPython kernel.
116
117
117 This is also something that we have wanted for a long time, and which is a
118 This is also something that we have wanted for a long time, and which is a
118 culmination (as a team effort) of the work started last year during the 2010
119 culmination (as a team effort) of the work started last year during the 2010
119 Google Summer of Code project.
120 Google Summer of Code project.
120
121
121 Tabbed QtConsole
122 Tabbed QtConsole
122 ~~~~~~~~~~~~~~~~
123 ~~~~~~~~~~~~~~~~
123
124
124 The QtConsole now supports starting multiple kernels in tabs, and has a
125 The QtConsole now supports starting multiple kernels in tabs, and has a
125 menubar, so it looks and behaves more like a real application. Keyboard
126 menubar, so it looks and behaves more like a real application. Keyboard
126 enthusiasts can disable the menubar with ctrl-shift-M (:ghpull:`887`).
127 enthusiasts can disable the menubar with ctrl-shift-M (:ghpull:`887`).
127
128
128 .. figure:: ../_static/qtconsole_tabbed.png
129 .. figure:: ../_static/qtconsole_tabbed.png
129 :width: 400px
130 :width: 400px
130 :alt: Tabbed IPython Qt console with embedded plots and menus.
131 :alt: Tabbed IPython Qt console with embedded plots and menus.
131 :align: center
132 :align: center
132 :target: ../_static/qtconsole_tabbed.png
133 :target: ../_static/qtconsole_tabbed.png
133
134
134 The improved Qt console for IPython, now with tabs to control multiple
135 The improved Qt console for IPython, now with tabs to control multiple
135 kernels and full menu support.
136 kernels and full menu support.
136
137
137
138
138 Full Python 3 compatibility
139 Full Python 3 compatibility
139 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
140 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
140
141
141 IPython can now be installed from a single codebase on Python 2 and
142 IPython can now be installed from a single codebase on Python 2 and
142 Python 3. The installation process for Python 3 automatically runs 2to3. The
143 Python 3. The installation process for Python 3 automatically runs 2to3. The
143 same 'default' profile is now used for Python 2 and 3 (the previous version had
144 same 'default' profile is now used for Python 2 and 3 (the previous version had
144 a separate 'python3' profile).
145 a separate 'python3' profile).
145
146
146 Standalone Kernel
147 Standalone Kernel
147 ~~~~~~~~~~~~~~~~~
148 ~~~~~~~~~~~~~~~~~
148
149
149 The ``ipython kernel`` subcommand has been added, to allow starting a
150 The ``ipython kernel`` subcommand has been added, to allow starting a
150 standalone kernel, that can be used with various frontends. You can then later
151 standalone kernel, that can be used with various frontends. You can then later
151 connect a Qt console or a terminal console to this kernel by typing e.g.::
152 connect a Qt console or a terminal console to this kernel by typing e.g.::
152
153
153 ipython qtconsole --existing
154 ipython qtconsole --existing
154
155
155 if it's the only one running, or by passing explicitly the connection
156 if it's the only one running, or by passing explicitly the connection
156 parameters (printed by the kernel at startup).
157 parameters (printed by the kernel at startup).
157
158
158
159
159 PyPy support
160 PyPy support
160 ~~~~~~~~~~~~
161 ~~~~~~~~~~~~
161
162
162 The terminal interface to IPython now runs under `PyPy <http://pypy.org/>`_.
163 The terminal interface to IPython now runs under `PyPy <http://pypy.org/>`_.
163 We will continue to monitor PyPy's progress, and hopefully before long at least
164 We will continue to monitor PyPy's progress, and hopefully before long at least
164 we'll be able to also run the notebook. The Qt console may take longer, as Qt
165 we'll be able to also run the notebook. The Qt console may take longer, as Qt
165 is a very complex set of bindings to a huge C++ library, and that is currently
166 is a very complex set of bindings to a huge C++ library, and that is currently
166 the area where PyPy still lags most behind. But for everyday interactive use
167 the area where PyPy still lags most behind. But for everyday interactive use
167 at the terminal, with this release and PyPy 1.7, things seem to work quite well
168 at the terminal, with this release and PyPy 1.7, things seem to work quite well
168 from our admittedly limited testing.
169 from our admittedly limited testing.
169
170
170
171
171 Other important new features
172 Other important new features
172 ----------------------------
173 ----------------------------
173
174
174 * **SSH Tunnels**: In 0.11, the :mod:`IPython.parallel` Client could tunnel its
175 * **SSH Tunnels**: In 0.11, the :mod:`IPython.parallel` Client could tunnel its
175 connections to the Controller via ssh. Now, the QtConsole :ref:`supports
176 connections to the Controller via ssh. Now, the QtConsole :ref:`supports
176 <ssh_tunnels>` ssh tunneling, as do parallel engines.
177 <ssh_tunnels>` ssh tunneling, as do parallel engines.
177
178
178 * **relaxed command-line parsing**: 0.11 was released with overly-strict
179 * **relaxed command-line parsing**: 0.11 was released with overly-strict
179 command-line parsing, preventing the ability to specify arguments with spaces,
180 command-line parsing, preventing the ability to specify arguments with spaces,
180 e.g. ``ipython --pylab qt`` or ``ipython -c "print 'hi'"``. This has
181 e.g. ``ipython --pylab qt`` or ``ipython -c "print 'hi'"``. This has
181 been fixed, by using argparse. The new parsing is a strict superset of 0.11, so
182 been fixed, by using argparse. The new parsing is a strict superset of 0.11, so
182 any commands in 0.11 should still work in 0.12.
183 any commands in 0.11 should still work in 0.12.
183
184
184 * **HistoryAccessor**: The :class:`~IPython.core.history.HistoryManager` class
185 * **HistoryAccessor**: The :class:`~IPython.core.history.HistoryManager` class
185 for interacting with your IPython SQLite history database has been split,
186 for interacting with your IPython SQLite history database has been split,
186 adding a parent :class:`~IPython.core.history.HistoryAccessor` class, so that
187 adding a parent :class:`~IPython.core.history.HistoryAccessor` class, so that
187 users can write code to access and search their IPython history without being
188 users can write code to access and search their IPython history without being
188 in an IPython session (:ghpull:`824`).
189 in an IPython session (:ghpull:`824`).
189
190
190 * **kernel %gui and %pylab**: The ``%gui`` and ``%pylab`` magics have been
191 * **kernel %gui and %pylab**: The ``%gui`` and ``%pylab`` magics have been
191 restored to the IPython kernel (e.g. in the qtconsole or notebook). This
192 restored to the IPython kernel (e.g. in the qtconsole or notebook). This
192 allows activation of pylab-mode, or eventloop integration after starting the
193 allows activation of pylab-mode, or eventloop integration after starting the
193 kernel, which was unavailable in 0.11. Unlike in the terminal, this can be
194 kernel, which was unavailable in 0.11. Unlike in the terminal, this can be
194 set only once, and cannot be changed.
195 set only once, and cannot be changed.
195
196
196 * **%config**: A new ``%config`` magic has been added, giving easy access to the
197 * **%config**: A new ``%config`` magic has been added, giving easy access to the
197 IPython configuration system at runtime (:ghpull:`923`).
198 IPython configuration system at runtime (:ghpull:`923`).
198
199
199 * **Multiline History**: Multiline readline history has been restored to the
200 * **Multiline History**: Multiline readline history has been restored to the
200 Terminal frontend by default (:ghpull:`838`).
201 Terminal frontend by default (:ghpull:`838`).
201
202
202 * **%store**: The ``%store`` magic from earlier versions has been updated and
203 * **%store**: The ``%store`` magic from earlier versions has been updated and
203 re-enabled (:ref:`extensions_storemagic`; :ghpull:`1029`). To autorestore
204 re-enabled (:ref:`extensions_storemagic`; :ghpull:`1029`). To autorestore
204 stored variables on startup, specify ``c.StoreMagic.autorestore = True`` in
205 stored variables on startup, specify ``c.StoreMagic.autorestore = True`` in
205 :file:`ipython_config.py`.
206 :file:`ipython_config.py`.
206
207
207
208
208 Major Bugs fixed
209 Major Bugs fixed
209 ----------------
210 ----------------
210
211
211 In this cycle, we have :ref:`closed over 500 issues <issues_list_012>`, but a
212 In this cycle, we have :ref:`closed over 500 issues <issues_list_012>`, but a
212 few major ones merit special mention:
213 few major ones merit special mention:
213
214
214 * Simple configuration errors should no longer crash IPython. In 0.11, errors
215 * Simple configuration errors should no longer crash IPython. In 0.11, errors
215 in config files, as well as invalid trait values, could crash IPython. Now,
216 in config files, as well as invalid trait values, could crash IPython. Now,
216 such errors are reported, and help is displayed.
217 such errors are reported, and help is displayed.
217
218
218 * Certain SyntaxErrors no longer crash IPython (e.g. just typing keywords, such
219 * Certain SyntaxErrors no longer crash IPython (e.g. just typing keywords, such
219 as ``return``, ``break``, etc.). See :ghissue:`704`.
220 as ``return``, ``break``, etc.). See :ghissue:`704`.
220
221
221 * IPython path utils, such as :func:`~IPython.utils.path.get_ipython_dir` now
222 * IPython path utils, such as :func:`~IPython.utils.path.get_ipython_dir` now
222 check for write permissions, so IPython should function on systems where the
223 check for write permissions, so IPython should function on systems where the
223 default path resolution might point to a read-only location, such as
224 default path resolution might point to a read-only location, such as
224 ``HOMESHARE`` on Windows (:ghissue:`669`).
225 ``HOMESHARE`` on Windows (:ghissue:`669`).
225
226
226 * :func:`raw_input` now works in the kernel when multiple frontends are in
227 * :func:`raw_input` now works in the kernel when multiple frontends are in
227 use. The request will be sent to the frontend that made the request, and an
228 use. The request will be sent to the frontend that made the request, and an
228 exception is raised if that frontend does not support stdin requests
229 exception is raised if that frontend does not support stdin requests
229 (e.g. the notebook) (:ghissue:`673`).
230 (e.g. the notebook) (:ghissue:`673`).
230
231
231 * :mod:`zmq` version detection no longer uses simple lexicographical comparison
232 * :mod:`zmq` version detection no longer uses simple lexicographical comparison
232 to check minimum version, which prevents 0.11 from working with pyzmq-2.1.10
233 to check minimum version, which prevents 0.11 from working with pyzmq-2.1.10
233 (:ghpull:`758`).
234 (:ghpull:`758`).
234
235
235 * A bug in PySide < 1.0.7 caused crashes on OSX when tooltips were shown
236 * A bug in PySide < 1.0.7 caused crashes on OSX when tooltips were shown
236 (:ghissue:`711`). these tooltips are now disabled on old PySide
237 (:ghissue:`711`). these tooltips are now disabled on old PySide
237 (:ghpull:`963`).
238 (:ghpull:`963`).
238
239
239 * IPython no longer crashes when started on recent versions of Python 3 in
240 * IPython no longer crashes when started on recent versions of Python 3 in
240 Windows (:ghissue:`737`).
241 Windows (:ghissue:`737`).
241
242
242 * Instances of classes defined interactively can now be pickled (:ghissue:`29`;
243 * Instances of classes defined interactively can now be pickled (:ghissue:`29`;
243 :ghpull:`648`). Note that pickling saves a reference to the class definition,
244 :ghpull:`648`). Note that pickling saves a reference to the class definition,
244 so unpickling the instances will only work where the class has been defined.
245 so unpickling the instances will only work where the class has been defined.
245
246
246
247
247 Backwards incompatible changes
248 Backwards incompatible changes
248 ------------------------------
249 ------------------------------
249
250
250 * IPython connection information is no longer specified via ip/port directly,
251 * IPython connection information is no longer specified via ip/port directly,
251 rather via json connection files. These files are stored in the security
252 rather via json connection files. These files are stored in the security
252 directory, and enable us to turn on HMAC message authentication by default,
253 directory, and enable us to turn on HMAC message authentication by default,
253 significantly improving the security of kernels. Various utility functions
254 significantly improving the security of kernels. Various utility functions
254 have been added to :mod:`IPython.lib.kernel`, for easier connecting to existing
255 have been added to :mod:`IPython.lib.kernel`, for easier connecting to existing
255 kernels.
256 kernels.
256
257
257 * :class:`~IPython.zmq.kernelmanager.KernelManager` now has one ip, and several
258 * :class:`~IPython.zmq.kernelmanager.KernelManager` now has one ip, and several
258 port traits, rather than several ip/port pair ``_addr`` traits. This better
259 port traits, rather than several ip/port pair ``_addr`` traits. This better
259 matches the rest of the code, where the ip cannot not be set separately for
260 matches the rest of the code, where the ip cannot not be set separately for
260 each channel.
261 each channel.
261
262
262 * Custom prompts are now configured using a new class,
263 * Custom prompts are now configured using a new class,
263 :class:`~IPython.core.prompts.PromptManager`, which has traits for
264 :class:`~IPython.core.prompts.PromptManager`, which has traits for
264 :attr:`in_template`, :attr:`in2_template` (the ``...:`` continuation prompt),
265 :attr:`in_template`, :attr:`in2_template` (the ``...:`` continuation prompt),
265 :attr:`out_template` and :attr:`rewrite_template`. This uses Python's string
266 :attr:`out_template` and :attr:`rewrite_template`. This uses Python's string
266 formatting system, so you can use ``{time}`` and ``{cwd}``, although we have
267 formatting system, so you can use ``{time}`` and ``{cwd}``, although we have
267 preserved the abbreviations from previous versions, e.g. ``\#`` (prompt number)
268 preserved the abbreviations from previous versions, e.g. ``\#`` (prompt number)
268 and ``\w`` (working directory). For the list of available fields, refer to the
269 and ``\w`` (working directory). For the list of available fields, refer to the
269 source of :file:`IPython/core/prompts.py`.
270 source of :file:`IPython/core/prompts.py`.
270
271
271 * The class inheritance of the Launchers in
272 * The class inheritance of the Launchers in
272 :mod:`IPython.parallel.apps.launcher` used by ipcluster has changed, so that
273 :mod:`IPython.parallel.apps.launcher` used by ipcluster has changed, so that
273 trait names are more consistent across batch systems. This may require a few
274 trait names are more consistent across batch systems. This may require a few
274 renames in your config files, if you customized the command-line args for
275 renames in your config files, if you customized the command-line args for
275 launching controllers and engines. The configurable names have also been
276 launching controllers and engines. The configurable names have also been
276 changed to be clearer that they point to class names, and can now be
277 changed to be clearer that they point to class names, and can now be
277 specified by name only, rather than requiring the full import path of each
278 specified by name only, rather than requiring the full import path of each
278 class, e.g.::
279 class, e.g.::
279
280
280 IPClusterEngines.engine_launcher = 'IPython.parallel.apps.launcher.MPIExecEngineSetLauncher'
281 IPClusterEngines.engine_launcher = 'IPython.parallel.apps.launcher.MPIExecEngineSetLauncher'
281 IPClusterStart.controller_launcher = 'IPython.parallel.apps.launcher.SSHControllerLauncher'
282 IPClusterStart.controller_launcher = 'IPython.parallel.apps.launcher.SSHControllerLauncher'
282
283
283 would now be specified as::
284 would now be specified as::
284
285
285 IPClusterEngines.engine_launcher_class = 'MPI'
286 IPClusterEngines.engine_launcher_class = 'MPI'
286 IPClusterStart.controller_launcher_class = 'SSH'
287 IPClusterStart.controller_launcher_class = 'SSH'
287
288
288 The full path will still work, and is necessary for using custom launchers
289 The full path will still work, and is necessary for using custom launchers
289 not in IPython's launcher module.
290 not in IPython's launcher module.
290
291
291 Further, MPIExec launcher names are now prefixed with just MPI, to better match
292 Further, MPIExec launcher names are now prefixed with just MPI, to better match
292 other batch launchers, and be generally more intuitive. The MPIExec names are
293 other batch launchers, and be generally more intuitive. The MPIExec names are
293 deprecated, but continue to work.
294 deprecated, but continue to work.
294
295
295 * For embedding a shell, note that the parameters ``user_global_ns`` and
296 * For embedding a shell, note that the parameters ``user_global_ns`` and
296 ``global_ns`` have been deprectated in favour of ``user_module`` and
297 ``global_ns`` have been deprectated in favour of ``user_module`` and
297 ``module`` respsectively. The new parameters expect a module-like object,
298 ``module`` respsectively. The new parameters expect a module-like object,
298 rather than a namespace dict. The old parameters remain for backwards
299 rather than a namespace dict. The old parameters remain for backwards
299 compatibility, although ``user_global_ns`` is now ignored. The ``user_ns``
300 compatibility, although ``user_global_ns`` is now ignored. The ``user_ns``
300 parameter works the same way as before, and calling
301 parameter works the same way as before, and calling
301 :func:`~IPython.frontend.terminal.embed.embed` with no arguments still works
302 :func:`~IPython.frontend.terminal.embed.embed` with no arguments still works
302 as before.
303 as before.
303
304
304
305
305 Development summary and credits
306 Development summary and credits
306 -------------------------------
307 -------------------------------
307
308
308 The previous version (IPython 0.11) was released on July 31 2011, so this
309 The previous version (IPython 0.11) was released on July 31 2011, so this
309 release cycle was roughly 4 1/2 months long, we closed a total of 515 issues,
310 release cycle was roughly 4 1/2 months long, we closed a total of 515 issues,
310 257 pull requests and 258 regular issues (a :ref:`detailed list
311 257 pull requests and 258 regular issues (a :ref:`detailed list
311 <issues_list_012>`_ is available).
312 <issues_list_012>`_ is available).
312
313
313 Many users and developers contributed code, features, bug reports and ideas to
314 Many users and developers contributed code, features, bug reports and ideas to
314 this release. Please do not hesitate in contacting us if we've failed to
315 this release. Please do not hesitate in contacting us if we've failed to
315 acknowledge your contribution here. In particular, for this release we have
316 acknowledge your contribution here. In particular, for this release we have
316 had commits from the following 45 contributors, a mix of new and regular names
317 had commits from the following 45 contributors, a mix of new and regular names
317 (in alphabetical order by first name):
318 (in alphabetical order by first name):
318
319
319 * Alcides <alcides-at-do-not-span-me.com>
320 * Alcides <alcides-at-do-not-span-me.com>
320 * Ben Edwards <bedwards-at-cs.unm.edu>
321 * Ben Edwards <bedwards-at-cs.unm.edu>
321 * Benjamin Ragan-Kelley <benjaminrk-at-gmail.com>
322 * Benjamin Ragan-Kelley <benjaminrk-at-gmail.com>
322 * Benjamin Thyreau <benjamin.thyreau-at-gmail.com>
323 * Benjamin Thyreau <benjamin.thyreau-at-gmail.com>
323 * Bernardo B. Marques <bernardo.fire-at-gmail.com>
324 * Bernardo B. Marques <bernardo.fire-at-gmail.com>
324 * Bernard Paulus <bprecyclebin-at-gmail.com>
325 * Bernard Paulus <bprecyclebin-at-gmail.com>
325 * Bradley M. Froehle <brad.froehle-at-gmail.com>
326 * Bradley M. Froehle <brad.froehle-at-gmail.com>
326 * Brian E. Granger <ellisonbg-at-gmail.com>
327 * Brian E. Granger <ellisonbg-at-gmail.com>
327 * Christian Boos <cboos-at-bct-technology.com>
328 * Christian Boos <cboos-at-bct-technology.com>
328 * Daniel Velkov <danielv-at-mylife.com>
329 * Daniel Velkov <danielv-at-mylife.com>
329 * Erik Tollerud <erik.tollerud-at-gmail.com>
330 * Erik Tollerud <erik.tollerud-at-gmail.com>
330 * Evan Patterson <epatters-at-enthought.com>
331 * Evan Patterson <epatters-at-enthought.com>
331 * Felix Werner <Felix.Werner-at-kit.edu>
332 * Felix Werner <Felix.Werner-at-kit.edu>
332 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
333 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
333 * Gabriel <g2p.code-at-gmail.com>
334 * Gabriel <g2p.code-at-gmail.com>
334 * Grahame Bowland <grahame-at-angrygoats.net>
335 * Grahame Bowland <grahame-at-angrygoats.net>
335 * Hannes Schulz <schulz-at-ais.uni-bonn.de>
336 * Hannes Schulz <schulz-at-ais.uni-bonn.de>
336 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
337 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
337 * Jonathan March <jmarch-at-enthought.com>
338 * Jonathan March <jmarch-at-enthought.com>
338 * Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>
339 * Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>
339 * Julian Taylor <jtaylor.debian-at-googlemail.com>
340 * Julian Taylor <jtaylor.debian-at-googlemail.com>
340 * Kefu Chai <tchaikov-at-gmail.com>
341 * Kefu Chai <tchaikov-at-gmail.com>
341 * macgyver <neil.rabinowitz-at-merton.ox.ac.uk>
342 * macgyver <neil.rabinowitz-at-merton.ox.ac.uk>
342 * Matt Cottingham <matt.cottingham-at-gmail.com>
343 * Matt Cottingham <matt.cottingham-at-gmail.com>
343 * Matthew Brett <matthew.brett-at-gmail.com>
344 * Matthew Brett <matthew.brett-at-gmail.com>
344 * Matthias BUSSONNIER <bussonniermatthias-at-gmail.com>
345 * Matthias BUSSONNIER <bussonniermatthias-at-gmail.com>
345 * Michael Droettboom <mdboom-at-gmail.com>
346 * Michael Droettboom <mdboom-at-gmail.com>
346 * Nicolas Rougier <Nicolas.Rougier-at-inria.fr>
347 * Nicolas Rougier <Nicolas.Rougier-at-inria.fr>
347 * Olivier Verdier <olivier.verdier-at-gmail.com>
348 * Olivier Verdier <olivier.verdier-at-gmail.com>
348 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
349 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
349 * Pablo Winant <pablo.winant-at-gmail.com>
350 * Pablo Winant <pablo.winant-at-gmail.com>
350 * Paul Ivanov <pivanov314-at-gmail.com>
351 * Paul Ivanov <pivanov314-at-gmail.com>
351 * Pauli Virtanen <pav-at-iki.fi>
352 * Pauli Virtanen <pav-at-iki.fi>
352 * Pete Aykroyd <aykroyd-at-gmail.com>
353 * Pete Aykroyd <aykroyd-at-gmail.com>
353 * Prabhu Ramachandran <prabhu-at-enthought.com>
354 * Prabhu Ramachandran <prabhu-at-enthought.com>
354 * Puneeth Chaganti <punchagan-at-gmail.com>
355 * Puneeth Chaganti <punchagan-at-gmail.com>
355 * Robert Kern <robert.kern-at-gmail.com>
356 * Robert Kern <robert.kern-at-gmail.com>
356 * Satrajit Ghosh <satra-at-mit.edu>
357 * Satrajit Ghosh <satra-at-mit.edu>
357 * Stefan van der Walt <stefan-at-sun.ac.za>
358 * Stefan van der Walt <stefan-at-sun.ac.za>
358 * Szabolcs Horvát <szhorvat-at-gmail.com>
359 * Szabolcs Horvát <szhorvat-at-gmail.com>
359 * Thomas Kluyver <takowl-at-gmail.com>
360 * Thomas Kluyver <takowl-at-gmail.com>
360 * Thomas Spura <thomas.spura-at-gmail.com>
361 * Thomas Spura <thomas.spura-at-gmail.com>
361 * Timo Paulssen <timonator-at-perpetuum-immobile.de>
362 * Timo Paulssen <timonator-at-perpetuum-immobile.de>
362 * Valentin Haenel <valentin.haenel-at-gmx.de>
363 * Valentin Haenel <valentin.haenel-at-gmx.de>
363 * Yaroslav Halchenko <debian-at-onerussian.com>
364 * Yaroslav Halchenko <debian-at-onerussian.com>
364
365
365 .. note::
366 .. note::
366
367
367 This list was generated with the output of
368 This list was generated with the output of
368 ``git log rel-0.11..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
369 ``git log rel-0.11..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
369 after some cleanup. If you should be on this list, please add yourself.
370 after some cleanup. If you should be on this list, please add yourself.
General Comments 0
You need to be logged in to leave comments. Login now