##// END OF EJS Templates
Merging upstream work, and fixing installation docs....
Brian Granger -
r1675:2cbe8d0b merge
parent child Browse files
Show More
@@ -36,7 +36,7 b' import re'
36
36
37 _DEFAULT_SIZE = 10
37 _DEFAULT_SIZE = 10
38 if sys.platform == 'darwin':
38 if sys.platform == 'darwin':
39 _DEFAULT_STYLE = 12
39 _DEFAULT_SIZE = 12
40
40
41 _DEFAULT_STYLE = {
41 _DEFAULT_STYLE = {
42 'stdout' : 'fore:#0000FF',
42 'stdout' : 'fore:#0000FF',
@@ -60,62 +60,78 b' New features'
60 major Achilles heel (the lack of proper test coverage made it effectively
60 major Achilles heel (the lack of proper test coverage made it effectively
61 impossible to do large-scale refactoring).
61 impossible to do large-scale refactoring).
62
62
63 * The notion of a task has been completely reworked. An `ITask` interface has
63 * The notion of a task has been completely reworked. An `ITask` interface has
64 been created. This interface defines the methods that tasks need to implement.
64 been created. This interface defines the methods that tasks need to implement.
65 These methods are now responsible for things like submitting tasks and processing
65 These methods are now responsible for things like submitting tasks and processing
66 results. There are two basic task types: :class:`IPython.kernel.task.StringTask`
66 results. There are two basic task types: :class:`IPython.kernel.task.StringTask`
67 (this is the old `Task` object, but renamed) and the new
67 (this is the old `Task` object, but renamed) and the new
68 :class:`IPython.kernel.task.MapTask`, which is based on a function.
68 :class:`IPython.kernel.task.MapTask`, which is based on a function.
69 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
69
70 standardize the idea of a `map` method. This interface has a single
70 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
71 `map` method that has the same syntax as the built-in `map`. We have also defined
71 standardize the idea of a `map` method. This interface has a single
72 a `mapper` factory interface that creates objects that implement
72 `map` method that has the same syntax as the built-in `map`. We have also defined
73 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both
73 a `mapper` factory interface that creates objects that implement
74 the multiengine and task controller now have mapping capabilties.
74 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both
75 * The parallel function capabilities have been reworks. The major changes are that
75 the multiengine and task controller now have mapping capabilties.
76 i) there is now an `@parallel` magic that creates parallel functions, ii)
76
77 the syntax for mulitple variable follows that of `map`, iii) both the
77 * The parallel function capabilities have been reworks. The major changes are that
78 multiengine and task controller now have a parallel function implementation.
78 i) there is now an `@parallel` magic that creates parallel functions, ii)
79 * All of the parallel computing capabilities from `ipython1-dev` have been merged into
79 the syntax for mulitple variable follows that of `map`, iii) both the
80 IPython proper. This resulted in the following new subpackages:
80 multiengine and task controller now have a parallel function implementation.
81 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
81
82 :mod:`IPython.tools` and :mod:`IPython.testing`.
82 * All of the parallel computing capabilities from `ipython1-dev` have been merged into
83 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and friends
83 IPython proper. This resulted in the following new subpackages:
84 have been completely refactored. Now we are checking for dependencies using
84 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
85 the approach that matplotlib uses.
85 :mod:`IPython.tools` and :mod:`IPython.testing`.
86 * The documentation has been completely reorganized to accept the documentation
86
87 from `ipython1-dev`.
87 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and friends
88 * We have switched to using Foolscap for all of our network protocols in
88 have been completely refactored. Now we are checking for dependencies using
89 :mod:`IPython.kernel`. This gives us secure connections that are both encrypted
89 the approach that matplotlib uses.
90 and authenticated.
90
91 * We have a brand new `COPYING.txt` files that describes the IPython license
91 * The documentation has been completely reorganized to accept the documentation
92 and copyright. The biggest change is that we are putting "The IPython
92 from `ipython1-dev`.
93 Development Team" as the copyright holder. We give more details about exactly
93
94 what this means in this file. All developer should read this and use the new
94 * We have switched to using Foolscap for all of our network protocols in
95 banner in all IPython source code files.
95 :mod:`IPython.kernel`. This gives us secure connections that are both encrypted
96 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
96 and authenticated.
97 * String lists now support 'sort(field, nums = True)' method (to easily
97
98 sort system command output). Try it with 'a = !ls -l ; a.sort(1, nums=1)'
98 * We have a brand new `COPYING.txt` files that describes the IPython license
99 * '%cpaste foo' now assigns the pasted block as string list, instead of string
99 and copyright. The biggest change is that we are putting "The IPython
100 * The ipcluster script now run by default with no security. This is done because
100 Development Team" as the copyright holder. We give more details about exactly
101 the main usage of the script is for starting things on localhost. Eventually
101 what this means in this file. All developer should read this and use the new
102 when ipcluster is able to start things on other hosts, we will put security
102 banner in all IPython source code files.
103 back.
103
104 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
104 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
105 Last part of dir name is checked first. If no matches for that are found,
105
106 look at the whole path.
106 * String lists now support 'sort(field, nums = True)' method (to easily
107 sort system command output). Try it with 'a = !ls -l ; a.sort(1, nums=1)'
108
109 * '%cpaste foo' now assigns the pasted block as string list, instead of string
110
111 * The ipcluster script now run by default with no security. This is done because
112 the main usage of the script is for starting things on localhost. Eventually
113 when ipcluster is able to start things on other hosts, we will put security
114 back.
115
116 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
117 Last part of dir name is checked first. If no matches for that are found,
118 look at the whole path.
107
119
108 Bug fixes
120 Bug fixes
109 ---------
121 ---------
110
122
111 * The colors escapes in the multiengine client are now turned off on win32 as they
123 * The colors escapes in the multiengine client are now turned off on win32 as they
112 don't print correctly.
124 don't print correctly.
113 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing mpi_import_statement
125
114 incorrectly, which was leading the engine to crash when mpi was enabled.
126 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing mpi_import_statement
115 * A few subpackages has missing `__init__.py` files.
127 incorrectly, which was leading the engine to crash when mpi was enabled.
116 * The documentation is only created is Sphinx is found. Previously, the `setup.py`
128
117 script would fail if it was missing.
129 * A few subpackages has missing `__init__.py` files.
118 * Greedy 'cd' completion has been disabled again (it was enabled in 0.8.4)
130
131 * The documentation is only created is Sphinx is found. Previously, the `setup.py`
132 script would fail if it was missing.
133
134 * Greedy 'cd' completion has been disabled again (it was enabled in 0.8.4)
119
135
120
136
121 Backwards incompatible changes
137 Backwards incompatible changes
@@ -125,28 +141,35 b' Backwards incompatible changes'
125 :func:`make_user_namespaces`, to support dict subclasses in namespace
141 :func:`make_user_namespaces`, to support dict subclasses in namespace
126 creation.
142 creation.
127
143
128 * :class:`IPython.kernel.client.Task` has been renamed
144 * :class:`IPython.kernel.client.Task` has been renamed
129 :class:`IPython.kernel.client.StringTask` to make way for new task types.
145 :class:`IPython.kernel.client.StringTask` to make way for new task types.
130 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
146
131 and `map`.
147 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
132 * Renamed the values that the rename `dist` keyword argument can have from
148 and `map`.
133 `'basic'` to `'b'`.
149
134 * IPython has a larger set of dependencies if you want all of its capabilities.
150 * Renamed the values that the rename `dist` keyword argument can have from
135 See the `setup.py` script for details.
151 `'basic'` to `'b'`.
136 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
152
137 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
153 * IPython has a larger set of dependencies if you want all of its capabilities.
138 Instead they take the filename of a file that contains the FURL for that
154 See the `setup.py` script for details.
139 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
155
140 and the constructor can be left empty.
156 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
141 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
157 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
142 using the factory functions :func:`get_multiengine_client` and
158 Instead they take the filename of a file that contains the FURL for that
143 :func:`get_task_client`. These return a `Deferred` to the actual client.
159 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
144 * The command line options to `ipcontroller` and `ipengine` have changed to
160 and the constructor can be left empty.
145 reflect the new Foolscap network protocol and the FURL files. Please see the
161
146 help for these scripts for details.
162 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
147 * The configuration files for the kernel have changed because of the Foolscap stuff.
163 using the factory functions :func:`get_multiengine_client` and
148 If you were using custom config files before, you should delete them and regenerate
164 :func:`get_task_client`. These return a `Deferred` to the actual client.
149 new ones.
165
166 * The command line options to `ipcontroller` and `ipengine` have changed to
167 reflect the new Foolscap network protocol and the FURL files. Please see the
168 help for these scripts for details.
169
170 * The configuration files for the kernel have changed because of the Foolscap stuff.
171 If you were using custom config files before, you should delete them and regenerate
172 new ones.
150
173
151 Changes merged in from IPython1
174 Changes merged in from IPython1
152 -------------------------------
175 -------------------------------
@@ -154,76 +177,97 b' Changes merged in from IPython1'
154 New features
177 New features
155 ............
178 ............
156
179
157 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted
180 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted
158 and zope.interface are now easy installable, we can declare them as dependencies
181 and zope.interface are now easy installable, we can declare them as dependencies
159 in our setupegg.py script.
182 in our setupegg.py script.
160 * IPython is now compatible with Twisted 2.5.0 and 8.x.
183
161 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
184 * IPython is now compatible with Twisted 2.5.0 and 8.x.
162 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
185
163 been merged into IPython and is still in `ipython1-dev`.
186 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
164 * The ``TaskController`` now has methods for getting the queue status.
187
165 * The ``TaskResult`` objects not have information about how long the task
188 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
166 took to run.
189 been merged into IPython and is still in `ipython1-dev`.
167 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
190
168 we use to carry additional info around.
191 * The ``TaskController`` now has methods for getting the queue status.
169 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
192
170 return deferreds) of the client classes. This is designed to users who want
193 * The ``TaskResult`` objects not have information about how long the task
171 to run their own Twisted reactor
194 took to run.
172 * All the clients in :mod:`client` are now based on Twisted. This is done by
195
173 running the Twisted reactor in a separate thread and using the
196 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
174 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
197 we use to carry additional info around.
175 * Functions can now be pushed/pulled to/from engines using
198
176 :meth:`MultiEngineClient.push_function` and :meth:`MultiEngineClient.pull_function`.
199 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
177 * Gather/scatter are now implemented in the client to reduce the work load
200 return deferreds) of the client classes. This is designed to users who want
178 of the controller and improve performance.
201 to run their own Twisted reactor.
179 * Complete rewrite of the IPython docuementation. All of the documentation
202
180 from the IPython website has been moved into docs/source as restructured
203 * All the clients in :mod:`client` are now based on Twisted. This is done by
181 text documents. PDF and HTML documentation are being generated using
204 running the Twisted reactor in a separate thread and using the
182 Sphinx.
205 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
183 * New developer oriented documentation: development guidelines and roadmap.
206
184 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt`` file
207 * Functions can now be pushed/pulled to/from engines using
185 that is organized by release and is meant to provide something more relevant
208 :meth:`MultiEngineClient.push_function` and :meth:`MultiEngineClient.pull_function`.
186 for users.
209
210 * Gather/scatter are now implemented in the client to reduce the work load
211 of the controller and improve performance.
212
213 * Complete rewrite of the IPython docuementation. All of the documentation
214 from the IPython website has been moved into docs/source as restructured
215 text documents. PDF and HTML documentation are being generated using
216 Sphinx.
217
218 * New developer oriented documentation: development guidelines and roadmap.
219
220 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt`` file
221 that is organized by release and is meant to provide something more relevant
222 for users.
187
223
188 Bug fixes
224 Bug fixes
189 .........
225 .........
190
226
191 * Created a proper ``MANIFEST.in`` file to create source distributions.
227 * Created a proper ``MANIFEST.in`` file to create source distributions.
192 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
228
193 actions were being collected with a :class:`DeferredList` with
229 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
194 ``fireononeerrback=1``. This meant that methods were returning
230 actions were being collected with a :class:`DeferredList` with
195 before all engines had given their results. This was causing extremely odd
231 ``fireononeerrback=1``. This meant that methods were returning
196 bugs in certain cases. To fix this problem, we have 1) set
232 before all engines had given their results. This was causing extremely odd
197 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
233 bugs in certain cases. To fix this problem, we have 1) set
198 before returning and 2) introduced a :exc:`CompositeError` exception
234 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
199 that wraps all of the engine exceptions. This is a huge change as it means
235 before returning and 2) introduced a :exc:`CompositeError` exception
200 that users will have to catch :exc:`CompositeError` rather than the actual
236 that wraps all of the engine exceptions. This is a huge change as it means
201 exception.
237 that users will have to catch :exc:`CompositeError` rather than the actual
238 exception.
202
239
203 Backwards incompatible changes
240 Backwards incompatible changes
204 ..............................
241 ..............................
205
242
206 * All names have been renamed to conform to the lowercase_with_underscore
243 * All names have been renamed to conform to the lowercase_with_underscore
207 convention. This will require users to change references to all names like
244 convention. This will require users to change references to all names like
208 ``queueStatus`` to ``queue_status``.
245 ``queueStatus`` to ``queue_status``.
209 * Previously, methods like :meth:`MultiEngineClient.push` and
246
210 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
247 * Previously, methods like :meth:`MultiEngineClient.push` and
211 becoming a problem as we weren't able to introduce new keyword arguments into
248 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
212 the API. Now these methods simple take a dict or sequence. This has also allowed
249 becoming a problem as we weren't able to introduce new keyword arguments into
213 us to get rid of the ``*All`` methods like :meth:`pushAll` and :meth:`pullAll`.
250 the API. Now these methods simple take a dict or sequence. This has also allowed
214 These things are now handled with the ``targets`` keyword argument that defaults
251 us to get rid of the ``*All`` methods like :meth:`pushAll` and :meth:`pullAll`.
215 to ``'all'``.
252 These things are now handled with the ``targets`` keyword argument that defaults
216 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
253 to ``'all'``.
217 :attr:`MultiEngineClient.targets`.
254
218 * All methods in the MultiEngine interface now accept the optional keyword argument
255 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
219 ``block``.
256 :attr:`MultiEngineClient.targets`.
220 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
257
221 :class:`TaskController` to :class:`TaskClient`.
258 * All methods in the MultiEngine interface now accept the optional keyword argument
222 * Renamed the top-level module from :mod:`api` to :mod:`client`.
259 ``block``.
223 * Most methods in the multiengine interface now raise a :exc:`CompositeError` exception
260
224 that wraps the user's exceptions, rather than just raising the raw user's exception.
261 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
225 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
262 :class:`TaskController` to :class:`TaskClient`.
226 and ``pull``.
263
264 * Renamed the top-level module from :mod:`api` to :mod:`client`.
265
266 * Most methods in the multiengine interface now raise a :exc:`CompositeError` exception
267 that wraps the user's exceptions, rather than just raising the raw user's exception.
268
269 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
270 and ``pull``.
227
271
228 Release 0.8.4
272 Release 0.8.4
229 =============
273 =============
@@ -2,11 +2,15 b''
2 IPython Documentation
2 IPython Documentation
3 =====================
3 =====================
4
4
5 Contents
5 .. htmlonly::
6 ========
6
7 :Release: |version|
8 :Date: |today|
9
10 Contents:
7
11
8 .. toctree::
12 .. toctree::
9 :maxdepth: 1
13 :maxdepth: 2
10
14
11 overview.txt
15 overview.txt
12 install/index.txt
16 install/index.txt
@@ -20,9 +24,9 b' Contents'
20 license_and_copyright.txt
24 license_and_copyright.txt
21 credits.txt
25 credits.txt
22
26
23 Indices and tables
24 ==================
25
27
26 * :ref:`genindex`
28 .. htmlonly::
27 * :ref:`modindex`
29
28 * :ref:`search` No newline at end of file
30 * :ref:`genindex`
31 * :ref:`modindex`
32 * :ref:`search`
@@ -7,5 +7,4 b' Installation'
7 .. toctree::
7 .. toctree::
8 :maxdepth: 2
8 :maxdepth: 2
9
9
10 basic.txt
10 install.txt
11 advanced.txt
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now