| | 1 | 2008-02-19 Brian Granger <ellisonbg@gmail.com> |
|---|
| | 2 | |
|---|
| | 3 | * ipython1.kernel: Changed all of the public interfaces to use the |
|---|
| | 4 | new coding conventions. All future development should use the |
|---|
| | 5 | lowercase_with_underscores convention. This means that users of |
|---|
| | 6 | ipython1 will have to update their code to reflect these changes. |
|---|
| | 7 | |
|---|
| | 8 | * ipython1.kernel: Previously methods like push and pull, used |
|---|
| | 9 | *args and **kwargs respectively. This was becoming a problem as |
|---|
| | 10 | we weren't able to introduce new keyword arguments. We have moved |
|---|
| | 11 | away from this, so now our core interfaces DO NOT use *args/**kwargs. |
|---|
| | 12 | This has allowed us to get rid of the *All methods in the MultiEngine |
|---|
| | 13 | interface. Now all of the methods in this interface simply have |
|---|
| | 14 | a targets keyword argument that defaults to 'all'. Furthermore, this |
|---|
| | 15 | also means we can have block as a keyword argument. This means that |
|---|
| | 16 | the public API is extremely different for users (but much better). |
|---|
| | 17 | |
|---|
| | 18 | * ipython1.kernel: Renamed RemoteController everywhere to |
|---|
| | 19 | MultiEngineController to better reflect what it actually is. |
|---|
| | 20 | |
|---|
| | 21 | * ipython1.kernel: Renamed the magicTargets attribute of the |
|---|
| | 22 | RemoteController to simply targets. |
|---|
| | 23 | |
|---|
| | 24 | * ipython1.kernel: Fixed a bug in the MultiEngine interface. |
|---|
| | 25 | Previously, multi-engine actions were being collected with a |
|---|
| | 26 | DeferredList with fireononeerrback set to 1. This meant that |
|---|
| | 27 | methods were returning before all engines had given their results. |
|---|
| | 28 | This was causing extremely odd bugs in certain cases. To fix this |
|---|
| | 29 | problem, we have 1) set fireononeerrback=0 to make sure all results |
|---|
| | 30 | (or exceptions) are in before returning, 2) introduced a CompositeError |
|---|
| | 31 | exception that wraps all of the engine exceptions. This is a huge change |
|---|
| | 32 | as it means that users will have to catch CompositeErrors rather than |
|---|
| | 33 | the real exceptions. But the CompositeError class has a number of methods |
|---|
| | 34 | for introspecting the actual exceptions (see kernel.error.CompositeError). |
|---|
| | 35 | As a part of all of this, we refactored how exceptions were being formatted. |
|---|
| | 36 | Now, we are attaching additional attributes to exceptions (_ipython_*) |
|---|
| | 37 | that we use to carry additional info around. |
|---|
| | 38 | |
|---|
| | 39 | * ipython1.kernel: The multienginexmlrpc and taskxmlrpc clients are now |
|---|
| | 40 | twisted based. We are doing this by running the reactor in a thread |
|---|
| | 41 | and using blockingCallFromThread. This makes it possible for different |
|---|
| | 42 | client to share most of the code and lets us have good test coverage of |
|---|
| | 43 | clients. We have expanded our test coverage of these two interfaces. |
|---|
| | 44 | Overall a huge win! |
|---|
| | 45 | |
|---|