##// END OF EJS Templates
Added text in docs/changes.txt for genutils bug #274067
Jorgen Stenarson -
Show More
@@ -1,398 +1,401 b''
1 .. _changes:
1 .. _changes:
2
2
3 ==========
3 ==========
4 What's new
4 What's new
5 ==========
5 ==========
6
6
7 .. contents::
7 .. contents::
8 ..
8 ..
9 1 Release 0.9.1
9 1 Release 0.9.1
10 2 Release 0.9
10 2 Release 0.9
11 2.1 New features
11 2.1 New features
12 2.2 Bug fixes
12 2.2 Bug fixes
13 2.3 Backwards incompatible changes
13 2.3 Backwards incompatible changes
14 2.4 Changes merged in from IPython1
14 2.4 Changes merged in from IPython1
15 2.4.1 New features
15 2.4.1 New features
16 2.4.2 Bug fixes
16 2.4.2 Bug fixes
17 2.4.3 Backwards incompatible changes
17 2.4.3 Backwards incompatible changes
18 3 Release 0.8.4
18 3 Release 0.8.4
19 4 Release 0.8.3
19 4 Release 0.8.3
20 5 Release 0.8.2
20 5 Release 0.8.2
21 6 Older releases
21 6 Older releases
22 ..
22 ..
23
23
24 Release dev
24 Release dev
25 ===========
25 ===========
26
26
27 New features
27 New features
28 ------------
28 ------------
29
29
30 * The new ipcluster now has a fully working ssh mode that should work on
30 * The new ipcluster now has a fully working ssh mode that should work on
31 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
31 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
32
32
33 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
33 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
34 to Matt Foster for this patch.
34 to Matt Foster for this patch.
35
35
36 * Fully refactored :command:`ipcluster` command line program for starting
36 * Fully refactored :command:`ipcluster` command line program for starting
37 IPython clusters. This new version is a complete rewrite and 1) is fully
37 IPython clusters. This new version is a complete rewrite and 1) is fully
38 cross platform (we now use Twisted's process management), 2) has much
38 cross platform (we now use Twisted's process management), 2) has much
39 improved performance, 3) uses subcommands for different types of clusters,
39 improved performance, 3) uses subcommands for different types of clusters,
40 4) uses argparse for parsing command line options, 5) has better support
40 4) uses argparse for parsing command line options, 5) has better support
41 for starting clusters using :command:`mpirun`, 6) has experimental support
41 for starting clusters using :command:`mpirun`, 6) has experimental support
42 for starting engines using PBS. However, this new version of ipcluster
42 for starting engines using PBS. However, this new version of ipcluster
43 should be considered a technology preview. We plan on changing the API
43 should be considered a technology preview. We plan on changing the API
44 in significant ways before it is final.
44 in significant ways before it is final.
45
45
46 * The :mod:`argparse` module has been added to :mod:`IPython.external`.
46 * The :mod:`argparse` module has been added to :mod:`IPython.external`.
47
47
48 * Fully description of the security model added to the docs.
48 * Fully description of the security model added to the docs.
49
49
50 * cd completer: show bookmarks if no other completions are available.
50 * cd completer: show bookmarks if no other completions are available.
51
51
52 * sh profile: easy way to give 'title' to prompt: assign to variable
52 * sh profile: easy way to give 'title' to prompt: assign to variable
53 '_prompt_title'. It looks like this::
53 '_prompt_title'. It looks like this::
54
54
55 [~]|1> _prompt_title = 'sudo!'
55 [~]|1> _prompt_title = 'sudo!'
56 sudo![~]|2>
56 sudo![~]|2>
57
57
58 * %edit: If you do '%edit pasted_block', pasted_block
58 * %edit: If you do '%edit pasted_block', pasted_block
59 variable gets updated with new data (so repeated
59 variable gets updated with new data (so repeated
60 editing makes sense)
60 editing makes sense)
61
61
62 Bug fixes
62 Bug fixes
63 ---------
63 ---------
64
64
65 * Numerous bugs on Windows with the new ipcluster have been fixed.
65 * Numerous bugs on Windows with the new ipcluster have been fixed.
66
66
67 * The ipengine and ipcontroller scripts now handle missing furl files
67 * The ipengine and ipcontroller scripts now handle missing furl files
68 more gracefully by giving better error messages.
68 more gracefully by giving better error messages.
69
69
70 * %rehashx: Aliases no longer contain dots. python3.0 binary
70 * %rehashx: Aliases no longer contain dots. python3.0 binary
71 will create alias python30. Fixes:
71 will create alias python30. Fixes:
72 #259716 "commands with dots in them don't work"
72 #259716 "commands with dots in them don't work"
73
73
74 * %cpaste: %cpaste -r repeats the last pasted block.
74 * %cpaste: %cpaste -r repeats the last pasted block.
75 The block is assigned to pasted_block even if code
75 The block is assigned to pasted_block even if code
76 raises exception.
76 raises exception.
77
77
78 * Bug #274067 'The code in get_home_dir is broken for py2exe' was
79 fixed.
80
78 Backwards incompatible changes
81 Backwards incompatible changes
79 ------------------------------
82 ------------------------------
80
83
81 * The controller now has a ``-r`` flag that needs to be used if you want to
84 * The controller now has a ``-r`` flag that needs to be used if you want to
82 reuse existing furl files. Otherwise they are deleted (the default).
85 reuse existing furl files. Otherwise they are deleted (the default).
83
86
84 * Remove ipy_leo.py. "easy_install ipython-extension" to get it.
87 * Remove ipy_leo.py. "easy_install ipython-extension" to get it.
85 (done to decouple it from ipython release cycle)
88 (done to decouple it from ipython release cycle)
86
89
87
90
88
91
89 Release 0.9.1
92 Release 0.9.1
90 =============
93 =============
91
94
92 This release was quickly made to restore compatibility with Python 2.4, which
95 This release was quickly made to restore compatibility with Python 2.4, which
93 version 0.9 accidentally broke. No new features were introduced, other than
96 version 0.9 accidentally broke. No new features were introduced, other than
94 some additional testing support for internal use.
97 some additional testing support for internal use.
95
98
96
99
97 Release 0.9
100 Release 0.9
98 ===========
101 ===========
99
102
100 New features
103 New features
101 ------------
104 ------------
102
105
103 * All furl files and security certificates are now put in a read-only
106 * All furl files and security certificates are now put in a read-only
104 directory named ~./ipython/security.
107 directory named ~./ipython/security.
105
108
106 * A single function :func:`get_ipython_dir`, in :mod:`IPython.genutils` that
109 * A single function :func:`get_ipython_dir`, in :mod:`IPython.genutils` that
107 determines the user's IPython directory in a robust manner.
110 determines the user's IPython directory in a robust manner.
108
111
109 * Laurent's WX application has been given a top-level script called
112 * Laurent's WX application has been given a top-level script called
110 ipython-wx, and it has received numerous fixes. We expect this code to be
113 ipython-wx, and it has received numerous fixes. We expect this code to be
111 architecturally better integrated with Gael's WX 'ipython widget' over the
114 architecturally better integrated with Gael's WX 'ipython widget' over the
112 next few releases.
115 next few releases.
113
116
114 * The Editor synchronization work by Vivian De Smedt has been merged in. This
117 * The Editor synchronization work by Vivian De Smedt has been merged in. This
115 code adds a number of new editor hooks to synchronize with editors under
118 code adds a number of new editor hooks to synchronize with editors under
116 Windows.
119 Windows.
117
120
118 * A new, still experimental but highly functional, WX shell by Gael Varoquaux.
121 * A new, still experimental but highly functional, WX shell by Gael Varoquaux.
119 This work was sponsored by Enthought, and while it's still very new, it is
122 This work was sponsored by Enthought, and while it's still very new, it is
120 based on a more cleanly organized arhictecture of the various IPython
123 based on a more cleanly organized arhictecture of the various IPython
121 components. We will continue to develop this over the next few releases as a
124 components. We will continue to develop this over the next few releases as a
122 model for GUI components that use IPython.
125 model for GUI components that use IPython.
123
126
124 * Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
127 * Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
125 authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
128 authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
126 different internal organizations, but the whole team is working on finding
129 different internal organizations, but the whole team is working on finding
127 what the right abstraction points are for a unified codebase.
130 what the right abstraction points are for a unified codebase.
128
131
129 * As part of the frontend work, Barry Wark also implemented an experimental
132 * As part of the frontend work, Barry Wark also implemented an experimental
130 event notification system that various ipython components can use. In the
133 event notification system that various ipython components can use. In the
131 next release the implications and use patterns of this system regarding the
134 next release the implications and use patterns of this system regarding the
132 various GUI options will be worked out.
135 various GUI options will be worked out.
133
136
134 * IPython finally has a full test system, that can test docstrings with
137 * IPython finally has a full test system, that can test docstrings with
135 IPython-specific functionality. There are still a few pieces missing for it
138 IPython-specific functionality. There are still a few pieces missing for it
136 to be widely accessible to all users (so they can run the test suite at any
139 to be widely accessible to all users (so they can run the test suite at any
137 time and report problems), but it now works for the developers. We are
140 time and report problems), but it now works for the developers. We are
138 working hard on continuing to improve it, as this was probably IPython's
141 working hard on continuing to improve it, as this was probably IPython's
139 major Achilles heel (the lack of proper test coverage made it effectively
142 major Achilles heel (the lack of proper test coverage made it effectively
140 impossible to do large-scale refactoring). The full test suite can now
143 impossible to do large-scale refactoring). The full test suite can now
141 be run using the :command:`iptest` command line program.
144 be run using the :command:`iptest` command line program.
142
145
143 * The notion of a task has been completely reworked. An `ITask` interface has
146 * The notion of a task has been completely reworked. An `ITask` interface has
144 been created. This interface defines the methods that tasks need to
147 been created. This interface defines the methods that tasks need to
145 implement. These methods are now responsible for things like submitting
148 implement. These methods are now responsible for things like submitting
146 tasks and processing results. There are two basic task types:
149 tasks and processing results. There are two basic task types:
147 :class:`IPython.kernel.task.StringTask` (this is the old `Task` object, but
150 :class:`IPython.kernel.task.StringTask` (this is the old `Task` object, but
148 renamed) and the new :class:`IPython.kernel.task.MapTask`, which is based on
151 renamed) and the new :class:`IPython.kernel.task.MapTask`, which is based on
149 a function.
152 a function.
150
153
151 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
154 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
152 standardize the idea of a `map` method. This interface has a single `map`
155 standardize the idea of a `map` method. This interface has a single `map`
153 method that has the same syntax as the built-in `map`. We have also defined
156 method that has the same syntax as the built-in `map`. We have also defined
154 a `mapper` factory interface that creates objects that implement
157 a `mapper` factory interface that creates objects that implement
155 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both the
158 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both the
156 multiengine and task controller now have mapping capabilties.
159 multiengine and task controller now have mapping capabilties.
157
160
158 * The parallel function capabilities have been reworks. The major changes are
161 * The parallel function capabilities have been reworks. The major changes are
159 that i) there is now an `@parallel` magic that creates parallel functions,
162 that i) there is now an `@parallel` magic that creates parallel functions,
160 ii) the syntax for mulitple variable follows that of `map`, iii) both the
163 ii) the syntax for mulitple variable follows that of `map`, iii) both the
161 multiengine and task controller now have a parallel function implementation.
164 multiengine and task controller now have a parallel function implementation.
162
165
163 * All of the parallel computing capabilities from `ipython1-dev` have been
166 * All of the parallel computing capabilities from `ipython1-dev` have been
164 merged into IPython proper. This resulted in the following new subpackages:
167 merged into IPython proper. This resulted in the following new subpackages:
165 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
168 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
166 :mod:`IPython.tools` and :mod:`IPython.testing`.
169 :mod:`IPython.tools` and :mod:`IPython.testing`.
167
170
168 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and
171 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and
169 friends have been completely refactored. Now we are checking for
172 friends have been completely refactored. Now we are checking for
170 dependencies using the approach that matplotlib uses.
173 dependencies using the approach that matplotlib uses.
171
174
172 * The documentation has been completely reorganized to accept the
175 * The documentation has been completely reorganized to accept the
173 documentation from `ipython1-dev`.
176 documentation from `ipython1-dev`.
174
177
175 * We have switched to using Foolscap for all of our network protocols in
178 * We have switched to using Foolscap for all of our network protocols in
176 :mod:`IPython.kernel`. This gives us secure connections that are both
179 :mod:`IPython.kernel`. This gives us secure connections that are both
177 encrypted and authenticated.
180 encrypted and authenticated.
178
181
179 * We have a brand new `COPYING.txt` files that describes the IPython license
182 * We have a brand new `COPYING.txt` files that describes the IPython license
180 and copyright. The biggest change is that we are putting "The IPython
183 and copyright. The biggest change is that we are putting "The IPython
181 Development Team" as the copyright holder. We give more details about
184 Development Team" as the copyright holder. We give more details about
182 exactly what this means in this file. All developer should read this and use
185 exactly what this means in this file. All developer should read this and use
183 the new banner in all IPython source code files.
186 the new banner in all IPython source code files.
184
187
185 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
188 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
186
189
187 * String lists now support ``sort(field, nums = True)`` method (to easily sort
190 * String lists now support ``sort(field, nums = True)`` method (to easily sort
188 system command output). Try it with ``a = !ls -l ; a.sort(1, nums=1)``.
191 system command output). Try it with ``a = !ls -l ; a.sort(1, nums=1)``.
189
192
190 * '%cpaste foo' now assigns the pasted block as string list, instead of string
193 * '%cpaste foo' now assigns the pasted block as string list, instead of string
191
194
192 * The ipcluster script now run by default with no security. This is done
195 * The ipcluster script now run by default with no security. This is done
193 because the main usage of the script is for starting things on localhost.
196 because the main usage of the script is for starting things on localhost.
194 Eventually when ipcluster is able to start things on other hosts, we will put
197 Eventually when ipcluster is able to start things on other hosts, we will put
195 security back.
198 security back.
196
199
197 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
200 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
198 Last part of dir name is checked first. If no matches for that are found,
201 Last part of dir name is checked first. If no matches for that are found,
199 look at the whole path.
202 look at the whole path.
200
203
201
204
202 Bug fixes
205 Bug fixes
203 ---------
206 ---------
204
207
205 * The Windows installer has been fixed. Now all IPython scripts have ``.bat``
208 * The Windows installer has been fixed. Now all IPython scripts have ``.bat``
206 versions created. Also, the Start Menu shortcuts have been updated.
209 versions created. Also, the Start Menu shortcuts have been updated.
207
210
208 * The colors escapes in the multiengine client are now turned off on win32 as
211 * The colors escapes in the multiengine client are now turned off on win32 as
209 they don't print correctly.
212 they don't print correctly.
210
213
211 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing
214 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing
212 mpi_import_statement incorrectly, which was leading the engine to crash when
215 mpi_import_statement incorrectly, which was leading the engine to crash when
213 mpi was enabled.
216 mpi was enabled.
214
217
215 * A few subpackages had missing ``__init__.py`` files.
218 * A few subpackages had missing ``__init__.py`` files.
216
219
217 * The documentation is only created if Sphinx is found. Previously, the
220 * The documentation is only created if Sphinx is found. Previously, the
218 ``setup.py`` script would fail if it was missing.
221 ``setup.py`` script would fail if it was missing.
219
222
220 * Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as
223 * Greedy ``cd`` completion has been disabled again (it was enabled in 0.8.4) as
221 it caused problems on certain platforms.
224 it caused problems on certain platforms.
222
225
223
226
224 Backwards incompatible changes
227 Backwards incompatible changes
225 ------------------------------
228 ------------------------------
226
229
227 * The ``clusterfile`` options of the :command:`ipcluster` command has been
230 * The ``clusterfile`` options of the :command:`ipcluster` command has been
228 removed as it was not working and it will be replaced soon by something much
231 removed as it was not working and it will be replaced soon by something much
229 more robust.
232 more robust.
230
233
231 * The :mod:`IPython.kernel` configuration now properly find the user's
234 * The :mod:`IPython.kernel` configuration now properly find the user's
232 IPython directory.
235 IPython directory.
233
236
234 * In ipapi, the :func:`make_user_ns` function has been replaced with
237 * In ipapi, the :func:`make_user_ns` function has been replaced with
235 :func:`make_user_namespaces`, to support dict subclasses in namespace
238 :func:`make_user_namespaces`, to support dict subclasses in namespace
236 creation.
239 creation.
237
240
238 * :class:`IPython.kernel.client.Task` has been renamed
241 * :class:`IPython.kernel.client.Task` has been renamed
239 :class:`IPython.kernel.client.StringTask` to make way for new task types.
242 :class:`IPython.kernel.client.StringTask` to make way for new task types.
240
243
241 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
244 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
242 and `map`.
245 and `map`.
243
246
244 * Renamed the values that the rename `dist` keyword argument can have from
247 * Renamed the values that the rename `dist` keyword argument can have from
245 `'basic'` to `'b'`.
248 `'basic'` to `'b'`.
246
249
247 * IPython has a larger set of dependencies if you want all of its capabilities.
250 * IPython has a larger set of dependencies if you want all of its capabilities.
248 See the `setup.py` script for details.
251 See the `setup.py` script for details.
249
252
250 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
253 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
251 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
254 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
252 Instead they take the filename of a file that contains the FURL for that
255 Instead they take the filename of a file that contains the FURL for that
253 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
256 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
254 and the constructor can be left empty.
257 and the constructor can be left empty.
255
258
256 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
259 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
257 using the factory functions :func:`get_multiengine_client` and
260 using the factory functions :func:`get_multiengine_client` and
258 :func:`get_task_client`. These return a `Deferred` to the actual client.
261 :func:`get_task_client`. These return a `Deferred` to the actual client.
259
262
260 * The command line options to `ipcontroller` and `ipengine` have changed to
263 * The command line options to `ipcontroller` and `ipengine` have changed to
261 reflect the new Foolscap network protocol and the FURL files. Please see the
264 reflect the new Foolscap network protocol and the FURL files. Please see the
262 help for these scripts for details.
265 help for these scripts for details.
263
266
264 * The configuration files for the kernel have changed because of the Foolscap
267 * The configuration files for the kernel have changed because of the Foolscap
265 stuff. If you were using custom config files before, you should delete them
268 stuff. If you were using custom config files before, you should delete them
266 and regenerate new ones.
269 and regenerate new ones.
267
270
268 Changes merged in from IPython1
271 Changes merged in from IPython1
269 -------------------------------
272 -------------------------------
270
273
271 New features
274 New features
272 ............
275 ............
273
276
274 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted and
277 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted and
275 zope.interface are now easy installable, we can declare them as dependencies
278 zope.interface are now easy installable, we can declare them as dependencies
276 in our setupegg.py script.
279 in our setupegg.py script.
277
280
278 * IPython is now compatible with Twisted 2.5.0 and 8.x.
281 * IPython is now compatible with Twisted 2.5.0 and 8.x.
279
282
280 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
283 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
281
284
282 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
285 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
283 been merged into IPython and is still in `ipython1-dev`.
286 been merged into IPython and is still in `ipython1-dev`.
284
287
285 * The ``TaskController`` now has methods for getting the queue status.
288 * The ``TaskController`` now has methods for getting the queue status.
286
289
287 * The ``TaskResult`` objects not have information about how long the task
290 * The ``TaskResult`` objects not have information about how long the task
288 took to run.
291 took to run.
289
292
290 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
293 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
291 we use to carry additional info around.
294 we use to carry additional info around.
292
295
293 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
296 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
294 return deferreds) of the client classes. This is designed to users who want
297 return deferreds) of the client classes. This is designed to users who want
295 to run their own Twisted reactor.
298 to run their own Twisted reactor.
296
299
297 * All the clients in :mod:`client` are now based on Twisted. This is done by
300 * All the clients in :mod:`client` are now based on Twisted. This is done by
298 running the Twisted reactor in a separate thread and using the
301 running the Twisted reactor in a separate thread and using the
299 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
302 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
300
303
301 * Functions can now be pushed/pulled to/from engines using
304 * Functions can now be pushed/pulled to/from engines using
302 :meth:`MultiEngineClient.push_function` and
305 :meth:`MultiEngineClient.push_function` and
303 :meth:`MultiEngineClient.pull_function`.
306 :meth:`MultiEngineClient.pull_function`.
304
307
305 * Gather/scatter are now implemented in the client to reduce the work load
308 * Gather/scatter are now implemented in the client to reduce the work load
306 of the controller and improve performance.
309 of the controller and improve performance.
307
310
308 * Complete rewrite of the IPython docuementation. All of the documentation
311 * Complete rewrite of the IPython docuementation. All of the documentation
309 from the IPython website has been moved into docs/source as restructured
312 from the IPython website has been moved into docs/source as restructured
310 text documents. PDF and HTML documentation are being generated using
313 text documents. PDF and HTML documentation are being generated using
311 Sphinx.
314 Sphinx.
312
315
313 * New developer oriented documentation: development guidelines and roadmap.
316 * New developer oriented documentation: development guidelines and roadmap.
314
317
315 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt``
318 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt``
316 file that is organized by release and is meant to provide something more
319 file that is organized by release and is meant to provide something more
317 relevant for users.
320 relevant for users.
318
321
319 Bug fixes
322 Bug fixes
320 .........
323 .........
321
324
322 * Created a proper ``MANIFEST.in`` file to create source distributions.
325 * Created a proper ``MANIFEST.in`` file to create source distributions.
323
326
324 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
327 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
325 actions were being collected with a :class:`DeferredList` with
328 actions were being collected with a :class:`DeferredList` with
326 ``fireononeerrback=1``. This meant that methods were returning
329 ``fireononeerrback=1``. This meant that methods were returning
327 before all engines had given their results. This was causing extremely odd
330 before all engines had given their results. This was causing extremely odd
328 bugs in certain cases. To fix this problem, we have 1) set
331 bugs in certain cases. To fix this problem, we have 1) set
329 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
332 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
330 before returning and 2) introduced a :exc:`CompositeError` exception
333 before returning and 2) introduced a :exc:`CompositeError` exception
331 that wraps all of the engine exceptions. This is a huge change as it means
334 that wraps all of the engine exceptions. This is a huge change as it means
332 that users will have to catch :exc:`CompositeError` rather than the actual
335 that users will have to catch :exc:`CompositeError` rather than the actual
333 exception.
336 exception.
334
337
335 Backwards incompatible changes
338 Backwards incompatible changes
336 ..............................
339 ..............................
337
340
338 * All names have been renamed to conform to the lowercase_with_underscore
341 * All names have been renamed to conform to the lowercase_with_underscore
339 convention. This will require users to change references to all names like
342 convention. This will require users to change references to all names like
340 ``queueStatus`` to ``queue_status``.
343 ``queueStatus`` to ``queue_status``.
341
344
342 * Previously, methods like :meth:`MultiEngineClient.push` and
345 * Previously, methods like :meth:`MultiEngineClient.push` and
343 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
346 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
344 becoming a problem as we weren't able to introduce new keyword arguments into
347 becoming a problem as we weren't able to introduce new keyword arguments into
345 the API. Now these methods simple take a dict or sequence. This has also
348 the API. Now these methods simple take a dict or sequence. This has also
346 allowed us to get rid of the ``*All`` methods like :meth:`pushAll` and
349 allowed us to get rid of the ``*All`` methods like :meth:`pushAll` and
347 :meth:`pullAll`. These things are now handled with the ``targets`` keyword
350 :meth:`pullAll`. These things are now handled with the ``targets`` keyword
348 argument that defaults to ``'all'``.
351 argument that defaults to ``'all'``.
349
352
350 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
353 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
351 :attr:`MultiEngineClient.targets`.
354 :attr:`MultiEngineClient.targets`.
352
355
353 * All methods in the MultiEngine interface now accept the optional keyword
356 * All methods in the MultiEngine interface now accept the optional keyword
354 argument ``block``.
357 argument ``block``.
355
358
356 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
359 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
357 :class:`TaskController` to :class:`TaskClient`.
360 :class:`TaskController` to :class:`TaskClient`.
358
361
359 * Renamed the top-level module from :mod:`api` to :mod:`client`.
362 * Renamed the top-level module from :mod:`api` to :mod:`client`.
360
363
361 * Most methods in the multiengine interface now raise a :exc:`CompositeError`
364 * Most methods in the multiengine interface now raise a :exc:`CompositeError`
362 exception that wraps the user's exceptions, rather than just raising the raw
365 exception that wraps the user's exceptions, rather than just raising the raw
363 user's exception.
366 user's exception.
364
367
365 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
368 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
366 and ``pull``.
369 and ``pull``.
367
370
368
371
369 Release 0.8.4
372 Release 0.8.4
370 =============
373 =============
371
374
372 This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
375 This was a quick release to fix an unfortunate bug that slipped into the 0.8.3
373 release. The ``--twisted`` option was disabled, as it turned out to be broken
376 release. The ``--twisted`` option was disabled, as it turned out to be broken
374 across several platforms.
377 across several platforms.
375
378
376
379
377 Release 0.8.3
380 Release 0.8.3
378 =============
381 =============
379
382
380 * pydb is now disabled by default (due to %run -d problems). You can enable
383 * pydb is now disabled by default (due to %run -d problems). You can enable
381 it by passing -pydb command line argument to IPython. Note that setting
384 it by passing -pydb command line argument to IPython. Note that setting
382 it in config file won't work.
385 it in config file won't work.
383
386
384
387
385 Release 0.8.2
388 Release 0.8.2
386 =============
389 =============
387
390
388 * %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
391 * %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
389 and jumps to /foo. The current behaviour is closer to the documented
392 and jumps to /foo. The current behaviour is closer to the documented
390 behaviour, and should not trip anyone.
393 behaviour, and should not trip anyone.
391
394
392
395
393 Older releases
396 Older releases
394 ==============
397 ==============
395
398
396 Changes in earlier releases of IPython are described in the older file
399 Changes in earlier releases of IPython are described in the older file
397 ``ChangeLog``. Please refer to this document for details.
400 ``ChangeLog``. Please refer to this document for details.
398
401
General Comments 0
You need to be logged in to leave comments. Login now