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 |
|
14 | * :mod:`IPython.config`. This package contains the :ref:`configuration system | |
15 |
IPython, as well as default configuration files for the |
|
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 |
|
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