Show More
@@ -1,235 +1,239 b'' | |||||
1 | ================================================ |
|
1 | ================================================ | |
2 | Development version |
|
2 | Development version | |
3 | ================================================ |
|
3 | ================================================ | |
4 |
|
4 | |||
5 | The changes listed here are a brief summary of the substantial work on IPython |
|
5 | The changes listed here are a brief summary of the substantial work on IPython | |
6 | since the 0.10.x release series. For more details, please consult the actual |
|
6 | since the 0.10.x release series. For more details, please consult the actual | |
7 | source. |
|
7 | source. | |
8 |
|
8 | |||
9 | Main `ipython` branch |
|
9 | Main `ipython` branch | |
10 | ===================== |
|
10 | ===================== | |
11 |
|
11 | |||
12 | Refactoring |
|
12 | Refactoring | |
13 | ----------- |
|
13 | ----------- | |
14 |
|
14 | |||
15 | As of the 0.11 version of IPython, a signifiant portion of the core has been |
|
15 | As of the 0.11 version of IPython, a signifiant portion of the core has been | |
16 | refactored. This refactoring is founded on a number of new abstractions. |
|
16 | refactored. This refactoring is founded on a number of new abstractions. | |
17 | The main new classes that implement these abstractions are: |
|
17 | The main new classes that implement these abstractions are: | |
18 |
|
18 | |||
19 | * :class:`IPython.utils.traitlets.HasTraitlets`. |
|
19 | * :class:`IPython.utils.traitlets.HasTraitlets`. | |
20 | * :class:`IPython.core.component.Component`. |
|
20 | * :class:`IPython.core.component.Component`. | |
21 | * :class:`IPython.core.application.Application`. |
|
21 | * :class:`IPython.core.application.Application`. | |
22 | * :class:`IPython.config.loader.ConfigLoader`. |
|
22 | * :class:`IPython.config.loader.ConfigLoader`. | |
23 | * :class:`IPython.config.loader.Config` |
|
23 | * :class:`IPython.config.loader.Config` | |
24 |
|
24 | |||
25 | We are still in the process of writing developer focused documentation about |
|
25 | We are still in the process of writing developer focused documentation about | |
26 | these classes, but for now our :ref:`configuration documentation |
|
26 | these classes, but for now our :ref:`configuration documentation | |
27 | <config_overview>` contains a high level overview of the concepts that these |
|
27 | <config_overview>` contains a high level overview of the concepts that these | |
28 | classes express. |
|
28 | classes express. | |
29 |
|
29 | |||
30 | ZMQ architecture |
|
30 | ZMQ architecture | |
31 | ---------------- |
|
31 | ---------------- | |
32 |
|
32 | |||
33 | There is a new GUI framework for IPython, based on a client-server model in |
|
33 | There is a new GUI framework for IPython, based on a client-server model in | |
34 | which multiple clients can communicate with one IPython kernel, using the |
|
34 | which multiple clients can communicate with one IPython kernel, using the | |
35 | ZeroMQ messaging framework. There is already a Qt console client, which can |
|
35 | ZeroMQ messaging framework. There is already a Qt console client, which can | |
36 |
be started by calling ``ipython |
|
36 | be started by calling ``ipython qtconsole``. The protocol is :ref:`documented | |
37 | <messaging>`. |
|
37 | <messaging>`. | |
38 |
|
38 | |||
39 | The parallel computing framework has also been rewritten using ZMQ. The |
|
39 | The parallel computing framework has also been rewritten using ZMQ. The | |
40 | protocol is described :ref:`here <parallel_messages>`, and the code is in the |
|
40 | protocol is described :ref:`here <parallel_messages>`, and the code is in the | |
41 | new :mod:`IPython.parallel` module. |
|
41 | new :mod:`IPython.parallel` module. | |
42 |
|
42 | |||
43 | New features |
|
43 | New features | |
44 | ------------ |
|
44 | ------------ | |
45 |
|
45 | |||
|
46 | * You can now get help on an object halfway through typing a command. For | |||
|
47 | instance, typing ``a = zip?`` shows the details of :func:`zip`. It also | |||
|
48 | leaves the command at the next prompt so you can carry on with it. | |||
|
49 | ||||
46 | * The input history is now written to an SQLite database. The API for |
|
50 | * The input history is now written to an SQLite database. The API for | |
47 | retrieving items from the history has also been redesigned. |
|
51 | retrieving items from the history has also been redesigned. | |
48 |
|
52 | |||
49 | * The :mod:`IPython.extensions.pretty` extension has been moved out of |
|
53 | * The :mod:`IPython.extensions.pretty` extension has been moved out of | |
50 | quarantine and fully updated to the new extension API. |
|
54 | quarantine and fully updated to the new extension API. | |
51 |
|
55 | |||
52 | * New magics for loading/unloading/reloading extensions have been added: |
|
56 | * New magics for loading/unloading/reloading extensions have been added: | |
53 | ``%load_ext``, ``%unload_ext`` and ``%reload_ext``. |
|
57 | ``%load_ext``, ``%unload_ext`` and ``%reload_ext``. | |
54 |
|
58 | |||
55 | * The configuration system and configuration files are brand new. See the |
|
59 | * The configuration system and configuration files are brand new. See the | |
56 | configuration system :ref:`documentation <config_index>` for more details. |
|
60 | configuration system :ref:`documentation <config_index>` for more details. | |
57 |
|
61 | |||
58 | * The :class:`~IPython.core.iplib.InteractiveShell` class is now a |
|
62 | * The :class:`~IPython.core.iplib.InteractiveShell` class is now a | |
59 | :class:`~IPython.core.component.Component` subclass and has traitlets that |
|
63 | :class:`~IPython.core.component.Component` subclass and has traitlets that | |
60 | determine the defaults and runtime environment. The ``__init__`` method has |
|
64 | determine the defaults and runtime environment. The ``__init__`` method has | |
61 | also been refactored so this class can be instantiated and run without the |
|
65 | also been refactored so this class can be instantiated and run without the | |
62 | old :mod:`ipmaker` module. |
|
66 | old :mod:`ipmaker` module. | |
63 |
|
67 | |||
64 | * The methods of :class:`~IPython.core.iplib.InteractiveShell` have |
|
68 | * The methods of :class:`~IPython.core.iplib.InteractiveShell` have | |
65 | been organized into sections to make it easier to turn more sections |
|
69 | been organized into sections to make it easier to turn more sections | |
66 |
of functionality into componen |
|
70 | of functionality into components. | |
67 |
|
71 | |||
68 | * The embedded shell has been refactored into a truly standalone subclass of |
|
72 | * The embedded shell has been refactored into a truly standalone subclass of | |
69 | :class:`InteractiveShell` called :class:`InteractiveShellEmbed`. All |
|
73 | :class:`InteractiveShell` called :class:`InteractiveShellEmbed`. All | |
70 | embedding logic has been taken out of the base class and put into the |
|
74 | embedding logic has been taken out of the base class and put into the | |
71 | embedded subclass. |
|
75 | embedded subclass. | |
72 |
|
76 | |||
73 | * I have created methods of :class:`~IPython.core.iplib.InteractiveShell` to |
|
77 | * I have created methods of :class:`~IPython.core.iplib.InteractiveShell` to | |
74 | help it cleanup after itself. The :meth:`cleanup` method controls this. We |
|
78 | help it cleanup after itself. The :meth:`cleanup` method controls this. We | |
75 | couldn't do this in :meth:`__del__` because we have cycles in our object |
|
79 | couldn't do this in :meth:`__del__` because we have cycles in our object | |
76 | graph that prevent it from being called. |
|
80 | graph that prevent it from being called. | |
77 |
|
81 | |||
78 | * Created a new module :mod:`IPython.utils.importstring` for resolving |
|
82 | * Created a new module :mod:`IPython.utils.importstring` for resolving | |
79 | strings like ``foo.bar.Bar`` to the actual class. |
|
83 | strings like ``foo.bar.Bar`` to the actual class. | |
80 |
|
84 | |||
81 | * Completely refactored the :mod:`IPython.core.prefilter` module into |
|
85 | * Completely refactored the :mod:`IPython.core.prefilter` module into | |
82 | :class:`~IPython.core.component.Component` subclasses. Added a new layer |
|
86 | :class:`~IPython.core.component.Component` subclasses. Added a new layer | |
83 | into the prefilter system, called "transformations" that all new prefilter |
|
87 | into the prefilter system, called "transformations" that all new prefilter | |
84 | logic should use (rather than the older "checker/handler" approach). |
|
88 | logic should use (rather than the older "checker/handler" approach). | |
85 |
|
89 | |||
86 | * Aliases are now components (:mod:`IPython.core.alias`). |
|
90 | * Aliases are now components (:mod:`IPython.core.alias`). | |
87 |
|
91 | |||
88 | * We are now using an internally shipped version of |
|
92 | * We are now using an internally shipped version of | |
89 | :mod:`~IPython.external.argparse` to parse command line options for |
|
93 | :mod:`~IPython.external.argparse` to parse command line options for | |
90 | :command:`ipython`. |
|
94 | :command:`ipython`. | |
91 |
|
95 | |||
92 | * New top level :func:`~IPython.frontend.terminal.embed.embed` function that can be called |
|
96 | * New top level :func:`~IPython.frontend.terminal.embed.embed` function that can be called | |
93 | to embed IPython at any place in user's code. One the first call it will |
|
97 | to embed IPython at any place in user's code. One the first call it will | |
94 | create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed` instance and |
|
98 | create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed` instance and | |
95 | call it. In later calls, it just calls the previously created |
|
99 | call it. In later calls, it just calls the previously created | |
96 | :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`. |
|
100 | :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`. | |
97 |
|
101 | |||
98 | * Created a component system (:mod:`IPython.core.component`) that is based on |
|
102 | * Created a component system (:mod:`IPython.core.component`) that is based on | |
99 | :mod:`IPython.utils.traitlets`. Components are arranged into a runtime |
|
103 | :mod:`IPython.utils.traitlets`. Components are arranged into a runtime | |
100 | containment tree (not inheritance) that i) automatically propagates |
|
104 | containment tree (not inheritance) that i) automatically propagates | |
101 | configuration information and ii) allows components to discover each other |
|
105 | configuration information and ii) allows components to discover each other | |
102 | in a loosely coupled manner. In the future all parts of IPython will be |
|
106 | in a loosely coupled manner. In the future all parts of IPython will be | |
103 | subclasses of :class:`~IPython.core.component.Component`. All IPython |
|
107 | subclasses of :class:`~IPython.core.component.Component`. All IPython | |
104 | developers should become familiar with the component system. |
|
108 | developers should become familiar with the component system. | |
105 |
|
109 | |||
106 | * Created a new :class:`~IPython.config.loader.Config` for holding |
|
110 | * Created a new :class:`~IPython.config.loader.Config` for holding | |
107 | configuration information. This is a dict like class with a few extras: i) |
|
111 | configuration information. This is a dict like class with a few extras: i) | |
108 | it supports attribute style access, ii) it has a merge function that merges |
|
112 | it supports attribute style access, ii) it has a merge function that merges | |
109 | two :class:`~IPython.config.loader.Config` instances recursively and iii) it |
|
113 | two :class:`~IPython.config.loader.Config` instances recursively and iii) it | |
110 | will automatically create sub-:class:`~IPython.config.loader.Config` |
|
114 | will automatically create sub-:class:`~IPython.config.loader.Config` | |
111 | instances for attributes that start with an uppercase character. |
|
115 | instances for attributes that start with an uppercase character. | |
112 |
|
116 | |||
113 | * Created new configuration loaders in :mod:`IPython.config.loader`. These |
|
117 | * Created new configuration loaders in :mod:`IPython.config.loader`. These | |
114 | loaders provide a unified loading interface for all configuration |
|
118 | loaders provide a unified loading interface for all configuration | |
115 | information including command line arguments and configuration files. We |
|
119 | information including command line arguments and configuration files. We | |
116 | have two default implementations based on :mod:`argparse` and plain python |
|
120 | have two default implementations based on :mod:`argparse` and plain python | |
117 | files. These are used to implement the new configuration system. |
|
121 | files. These are used to implement the new configuration system. | |
118 |
|
122 | |||
119 | * Created a top-level :class:`Application` class in |
|
123 | * Created a top-level :class:`Application` class in | |
120 | :mod:`IPython.core.application` that is designed to encapsulate the starting |
|
124 | :mod:`IPython.core.application` that is designed to encapsulate the starting | |
121 | of any IPython process. An application loads and merges all the |
|
125 | of any IPython process. An application loads and merges all the | |
122 | configuration objects, constructs the main application :class:`Component` |
|
126 | configuration objects, constructs the main application :class:`Component` | |
123 | instances and then starts the application running. The default |
|
127 | instances and then starts the application running. The default | |
124 | :class:`Application` class has built-in logic for handling the IPython |
|
128 | :class:`Application` class has built-in logic for handling the IPython | |
125 | directory as well as profiles. |
|
129 | directory as well as profiles. | |
126 |
|
130 | |||
127 | * The :class:`Type` and :class:`Instance` traitlets now handle classes given |
|
131 | * The :class:`Type` and :class:`Instance` traitlets now handle classes given | |
128 | as strings, like ``foo.bar.Bar``. This is needed for forward declarations. |
|
132 | as strings, like ``foo.bar.Bar``. This is needed for forward declarations. | |
129 | But, this was implemented in a careful way so that string to class |
|
133 | But, this was implemented in a careful way so that string to class | |
130 | resolution is done at a single point, when the parent |
|
134 | resolution is done at a single point, when the parent | |
131 | :class:`~IPython.utils.traitlets.HasTraitlets` is instantiated. |
|
135 | :class:`~IPython.utils.traitlets.HasTraitlets` is instantiated. | |
132 |
|
136 | |||
133 | * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of |
|
137 | * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of | |
134 | dict. It also now has full docstrings and doctests. |
|
138 | dict. It also now has full docstrings and doctests. | |
135 | * Created a Trait's like implementation in :mod:`IPython.utils.traitlets`. |
|
139 | * Created a Trait's like implementation in :mod:`IPython.utils.traitlets`. | |
136 | This is a pure Python, lightweight version of a library that is similar to |
|
140 | This is a pure Python, lightweight version of a library that is similar to | |
137 | :mod:`enthought.traits`. We are using this for validation, defaults and |
|
141 | :mod:`enthought.traits`. We are using this for validation, defaults and | |
138 | notification in our new component system. Although it is not API compatible |
|
142 | notification in our new component system. Although it is not API compatible | |
139 | with :mod:`enthought.traits`, we plan on moving in this direction so that |
|
143 | with :mod:`enthought.traits`, we plan on moving in this direction so that | |
140 | eventually our implementation could be replaced by a (yet to exist) pure |
|
144 | eventually our implementation could be replaced by a (yet to exist) pure | |
141 | Python version of :mod:`enthought.traits`. |
|
145 | Python version of :mod:`enthought.traits`. | |
142 |
|
146 | |||
143 | * Added a new module :mod:`IPython.lib.inputhook` to manage the integration |
|
147 | * Added a new module :mod:`IPython.lib.inputhook` to manage the integration | |
144 | with GUI event loops using `PyOS_InputHook`. See the docstrings in this |
|
148 | with GUI event loops using `PyOS_InputHook`. See the docstrings in this | |
145 | module or the main IPython docs for details. |
|
149 | module or the main IPython docs for details. | |
146 |
|
150 | |||
147 | * For users, GUI event loop integration is now handled through the new |
|
151 | * For users, GUI event loop integration is now handled through the new | |
148 | :command:`%gui` magic command. Type ``%gui?`` at an IPython prompt for |
|
152 | :command:`%gui` magic command. Type ``%gui?`` at an IPython prompt for | |
149 | documentation. |
|
153 | documentation. | |
150 |
|
154 | |||
151 | * The command line options ``-wthread``, ``-qthread`` and |
|
155 | * The command line options ``-wthread``, ``-qthread`` and | |
152 | ``-gthread`` just call the appropriate :mod:`IPython.lib.inputhook` |
|
156 | ``-gthread`` just call the appropriate :mod:`IPython.lib.inputhook` | |
153 | functions. |
|
157 | functions. | |
154 |
|
158 | |||
155 | * For developers :mod:`IPython.lib.inputhook` provides a simple interface |
|
159 | * For developers :mod:`IPython.lib.inputhook` provides a simple interface | |
156 | for managing the event loops in their interactive GUI applications. |
|
160 | for managing the event loops in their interactive GUI applications. | |
157 | Examples can be found in our :file:`docs/examples/lib` directory. |
|
161 | Examples can be found in our :file:`docs/examples/lib` directory. | |
158 |
|
162 | |||
159 | Backwards incompatible changes |
|
163 | Backwards incompatible changes | |
160 | ------------------------------ |
|
164 | ------------------------------ | |
161 |
|
165 | |||
162 | * The extension loading functions have been renamed to |
|
166 | * The extension loading functions have been renamed to | |
163 | :func:`load_ipython_extension` and :func:`unload_ipython_extension`. |
|
167 | :func:`load_ipython_extension` and :func:`unload_ipython_extension`. | |
164 |
|
168 | |||
165 | * :class:`~IPython.core.iplib.InteractiveShell` no longer takes an |
|
169 | * :class:`~IPython.core.iplib.InteractiveShell` no longer takes an | |
166 | ``embedded`` argument. Instead just use the |
|
170 | ``embedded`` argument. Instead just use the | |
167 | :class:`~IPython.core.iplib.InteractiveShellEmbed` class. |
|
171 | :class:`~IPython.core.iplib.InteractiveShellEmbed` class. | |
168 |
|
172 | |||
169 | * ``__IPYTHON__`` is no longer injected into ``__builtin__``. |
|
173 | * ``__IPYTHON__`` is no longer injected into ``__builtin__``. | |
170 |
|
174 | |||
171 | * :meth:`Struct.__init__` no longer takes `None` as its first argument. It |
|
175 | * :meth:`Struct.__init__` no longer takes `None` as its first argument. It | |
172 | must be a :class:`dict` or :class:`Struct`. |
|
176 | must be a :class:`dict` or :class:`Struct`. | |
173 |
|
177 | |||
174 | * :meth:`~IPython.core.iplib.InteractiveShell.ipmagic` has been renamed |
|
178 | * :meth:`~IPython.core.iplib.InteractiveShell.ipmagic` has been renamed | |
175 | :meth:`~IPython.core.iplib.InteractiveShell.magic.` |
|
179 | :meth:`~IPython.core.iplib.InteractiveShell.magic.` | |
176 |
|
180 | |||
177 | * The functions :func:`ipmagic` and :func:`ipalias` have been removed from |
|
181 | * The functions :func:`ipmagic` and :func:`ipalias` have been removed from | |
178 | :mod:`__builtins__`. |
|
182 | :mod:`__builtins__`. | |
179 |
|
183 | |||
180 | * The references to the global :class:`~IPython.core.iplib.InteractiveShell` |
|
184 | * The references to the global :class:`~IPython.core.iplib.InteractiveShell` | |
181 | instance (``_ip``, and ``__IP``) have been removed from the user's |
|
185 | instance (``_ip``, and ``__IP``) have been removed from the user's | |
182 | namespace. They are replaced by a new function called :func:`get_ipython` |
|
186 | namespace. They are replaced by a new function called :func:`get_ipython` | |
183 | that returns the current :class:`~IPython.core.iplib.InteractiveShell` |
|
187 | that returns the current :class:`~IPython.core.iplib.InteractiveShell` | |
184 | instance. This function is injected into the user's namespace and is now the |
|
188 | instance. This function is injected into the user's namespace and is now the | |
185 | main way of accessing IPython's API. |
|
189 | main way of accessing IPython's API. | |
186 |
|
190 | |||
187 | * Old style configuration files :file:`ipythonrc` and :file:`ipy_user_conf.py` |
|
191 | * Old style configuration files :file:`ipythonrc` and :file:`ipy_user_conf.py` | |
188 | are no longer supported. Users should migrate there configuration files to |
|
192 | are no longer supported. Users should migrate there configuration files to | |
189 | the new format described :ref:`here <config_overview>` and :ref:`here |
|
193 | the new format described :ref:`here <config_overview>` and :ref:`here | |
190 | <configuring_ipython>`. |
|
194 | <configuring_ipython>`. | |
191 |
|
195 | |||
192 | * The old IPython extension API that relied on :func:`ipapi` has been |
|
196 | * The old IPython extension API that relied on :func:`ipapi` has been | |
193 | completely removed. The new extension API is described :ref:`here |
|
197 | completely removed. The new extension API is described :ref:`here | |
194 | <configuring_ipython>`. |
|
198 | <configuring_ipython>`. | |
195 |
|
199 | |||
196 | * Support for ``qt3`` has been dropped. User's who need this should use |
|
200 | * Support for ``qt3`` has been dropped. User's who need this should use | |
197 | previous versions of IPython. |
|
201 | previous versions of IPython. | |
198 |
|
202 | |||
199 | * Removed :mod:`shellglobals` as it was obsolete. |
|
203 | * Removed :mod:`shellglobals` as it was obsolete. | |
200 |
|
204 | |||
201 | * Removed all the threaded shells in :mod:`IPython.core.shell`. These are no |
|
205 | * Removed all the threaded shells in :mod:`IPython.core.shell`. These are no | |
202 | longer needed because of the new capabilities in |
|
206 | longer needed because of the new capabilities in | |
203 | :mod:`IPython.lib.inputhook`. |
|
207 | :mod:`IPython.lib.inputhook`. | |
204 |
|
208 | |||
205 | * The ``-pylab`` command line flag has been disabled until matplotlib adds |
|
209 | * The ``-pylab`` command line flag has been disabled until matplotlib adds | |
206 | support for the new :mod:`IPython.lib.inputhook` approach. The new stuff |
|
210 | support for the new :mod:`IPython.lib.inputhook` approach. The new stuff | |
207 | does work with matplotlib, but you have to set everything up by hand. |
|
211 | does work with matplotlib, but you have to set everything up by hand. | |
208 |
|
212 | |||
209 | * New top-level sub-packages have been created: :mod:`IPython.core`, |
|
213 | * New top-level sub-packages have been created: :mod:`IPython.core`, | |
210 | :mod:`IPython.lib`, :mod:`IPython.utils`, :mod:`IPython.deathrow`, |
|
214 | :mod:`IPython.lib`, :mod:`IPython.utils`, :mod:`IPython.deathrow`, | |
211 | :mod:`IPython.quarantine`. All existing top-level modules have been |
|
215 | :mod:`IPython.quarantine`. All existing top-level modules have been | |
212 | moved to appropriate sub-packages. All internal import statements |
|
216 | moved to appropriate sub-packages. All internal import statements | |
213 | have been updated and tests have been added. The build system (setup.py |
|
217 | have been updated and tests have been added. The build system (setup.py | |
214 | and friends) have been updated. See :ref:`this section <module_reorg>` of the |
|
218 | and friends) have been updated. See :ref:`this section <module_reorg>` of the | |
215 | documentation for descriptions of these new sub-packages. |
|
219 | documentation for descriptions of these new sub-packages. | |
216 |
|
220 | |||
217 | * Compatability modules have been created for :mod:`IPython.Shell`, |
|
221 | * Compatability modules have been created for :mod:`IPython.Shell`, | |
218 | :mod:`IPython.ipapi` and :mod:`IPython.iplib` that display warnings |
|
222 | :mod:`IPython.ipapi` and :mod:`IPython.iplib` that display warnings | |
219 | and then load the actual implementation from :mod:`IPython.core`. |
|
223 | and then load the actual implementation from :mod:`IPython.core`. | |
220 |
|
224 | |||
221 | * :mod:`Extensions` has been moved to :mod:`extensions` and all existing |
|
225 | * :mod:`Extensions` has been moved to :mod:`extensions` and all existing | |
222 | extensions have been moved to either :mod:`IPython.quarantine` or |
|
226 | extensions have been moved to either :mod:`IPython.quarantine` or | |
223 | :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we |
|
227 | :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we | |
224 | plan on keeping but that need to be updated. :mod:`IPython.deathrow` |
|
228 | plan on keeping but that need to be updated. :mod:`IPython.deathrow` | |
225 | contains modules that are either dead or that should be maintained as third |
|
229 | contains modules that are either dead or that should be maintained as third | |
226 | party libraries. More details about this can be found :ref:`here |
|
230 | party libraries. More details about this can be found :ref:`here | |
227 | <module_reorg>`. |
|
231 | <module_reorg>`. | |
228 |
|
232 | |||
229 | * The IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are likely |
|
233 | * The IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are likely | |
230 | broken because of the refactoring in the core. With proper updates, these |
|
234 | broken because of the refactoring in the core. With proper updates, these | |
231 | should still work. We probably want to get these so they are not using |
|
235 | should still work. We probably want to get these so they are not using | |
232 | :mod:`IPython.kernel.core` (which is being phased out). |
|
236 | :mod:`IPython.kernel.core` (which is being phased out). | |
233 |
|
237 | |||
234 |
|
238 | |||
235 |
|
239 |
General Comments 0
You need to be logged in to leave comments.
Login now