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