##// END OF EJS Templates
updated IPython module organization descriptions...
Paul Ivanov -
Show More
@@ -1,71 +1,85 b''
1 1 .. _module_reorg:
2 2
3 3 ===========================
4 4 IPython module organization
5 5 ===========================
6 6
7 7 As of the 0.11 release of IPython, the top-level packages and modules have
8 8 been completely reorganized. This section describes the purpose of the
9 9 top-level IPython subpackages.
10 10
11 11 Subpackage descriptions
12 12 =======================
13 13
14 * :mod:`IPython.config`. This package contains the configuration system of
15 IPython, as well as default configuration files for the different IPython
16 applications.
14 * :mod:`IPython.config`. This package contains the :ref:`configuration system
15 <config_index>` of IPython, as well as default configuration files for the
16 different IPython applications.
17 17
18 18 * :mod:`IPython.core`. This sub-package contains the core of the IPython
19 19 interpreter, but none of its extended capabilities.
20 20
21 21 * :mod:`IPython.deathrow`. This is for code that is outdated, untested,
22 22 rotting, or that belongs in a separate third party project. Eventually all
23 this code will either i) be revived by someone willing to maintain it with
23 this code will either 1) be revived by someone willing to maintain it with
24 24 tests and docs and re-included into IPython or 2) be removed from IPython
25 25 proper, but put into a separate third-party Python package. No new code will
26 26 be allowed here. If your favorite extension has been moved here please
27 27 contact the IPython developer mailing list to help us determine the best
28 28 course of action.
29 29
30 30 * :mod:`IPython.extensions`. This package contains fully supported IPython
31 31 extensions. These extensions adhere to the official IPython extension API
32 32 and can be enabled by adding them to a field in the configuration file.
33 33 If your extension is no longer in this location, please look in
34 34 :mod:`IPython.quarantine` and :mod:`IPython.deathrow` and contact the
35 35 IPython developer mailing list.
36 36
37 37 * :mod:`IPython.external`. This package contains third party packages and
38 38 modules that IPython ships internally to reduce the number of dependencies.
39 39 Usually, these are short, single file modules.
40 40
41 41 * :mod:`IPython.frontend`. This package contains the various IPython
42 frontends. Currently, the code in this subpackage is very experimental and
43 may be broken.
44
45 * :mod:`IPython.gui`. Another semi-experimental wxPython based IPython GUI.
46
47 * :mod:`IPython.kernel`. This contains IPython's parallel computing system.
42 frontends which communicate with the :mod:`IPython.zmq` kernels (see
43 :ref:`Messaging in IPython <messaging>`). This includes the
44 :ref:`ipython notebook <htmlnotebook>`, :ref:`ipython qtconsole
45 <qtconsole>`, and :ref:`ipython console <two_process_console>` entry points.
48 46
49 47 * :mod:`IPython.lib`. IPython has many extended capabilities that are not part
50 48 of the IPython core. These things will go here and in. Modules in this
51 49 package are similar to extensions, but don't adhere to the official
52 50 IPython extension API.
53 51
52 * :mod:`IPython.nbformat`. This package contains code related to reading and
53 writing :ref:`IPython Notebook's <htmlnotebook>` file format (`.ipynb`
54 files).
55
56 * :mod:`IPython.parallel`. This contains :ref:`IPython's parallel computing
57 system <parallel_index>`. This previously lived under :mod:`IPython.kernel`,
58 but that module has been deprecated.
59
54 60 * :mod:`IPython.quarantine`. This is for code that doesn't meet IPython's
55 61 standards, but that we plan on keeping. To be moved out of this sub-package
56 62 a module needs to have approval of the core IPython developers, tests and
57 63 documentation. If your favorite extension has been moved here please contact
58 64 the IPython developer mailing list to help us determine the best course of
59 65 action.
60 66
61 67 * :mod:`IPython.scripts`. This package contains a variety of top-level
62 68 command line scripts. Eventually, these should be moved to the
63 69 :file:`scripts` subdirectory of the appropriate IPython subpackage.
64 70
71 * :mod:`IPython.testing`. This package contains code related to the IPython
72 test suite, which locates and executes the `tests` submodules of all
73 IPython sub-packages. It also contains decorators and utilities relevant for
74 testing.
75
65 76 * :mod:`IPython.utils`. This sub-package will contain anything that might
66 77 eventually be found in the Python standard library, like things in
67 78 :mod:`genutils`. Each sub-module in this sub-package should contain
68 79 functions and classes that serve a single purpose and that don't
69 80 depend on things in the rest of IPython.
70 81
82 * :mod:`IPython.zmq`. This sub-package contains code related to starting and
83 managing IPython kernels, which :mod:`IPython.frontend` instances can then
84 communicate with (see :ref:`Messaging in IPython <messaging>`).
71 85
@@ -1,369 +1,370 b''
1 1 =============
2 2 0.12 Series
3 3 =============
4 4
5 5 Release 0.12.1
6 6 ==============
7 7
8 8 IPython 0.12.1 is a bugfix release of 0.12, pulling only bugfixes and minor
9 9 cleanup from 0.13, timed for the Ubuntu 12.04 LTS release.
10 10
11 11 See the :ref:`list of fixed issues <issues_list_012>` for specific backported issues.
12 12
13 13
14 14 Release 0.12
15 15 ============
16 16
17 17 IPython 0.12 contains several major new features, as well as a large amount of
18 18 bug and regression fixes. The 0.11 release brought with it a lot of new
19 19 functionality and major refactorings of the codebase; by and large this has
20 20 proven to be a success as the number of contributions to the project has
21 21 increased dramatically, proving that the code is now much more approachable.
22 22 But in the refactoring inevitably some bugs were introduced, and we have also
23 23 squashed many of those as well as recovered some functionality that had been
24 24 temporarily disabled due to the API changes.
25 25
26 26 The following major new features appear in this version.
27 27
28 28
29 29 An interactive browser-based Notebook with rich media support
30 30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 31
32 32 A powerful new interface puts IPython in your browser. You can start it with
33 33 the command ``ipython notebook``:
34 34
35 35 .. figure:: ../_static/notebook_specgram.png
36 36 :width: 400px
37 37 :alt: The IPython notebook with embedded text, code, math and figures.
38 38 :align: center
39 39 :target: ../_static/notebook_specgram.png
40 40
41 41 The new IPython notebook showing text, mathematical expressions in LaTeX,
42 42 code, results and embedded figures created with Matplotlib.
43 43
44 44 This new interface maintains all the features of IPython you are used to, as it
45 45 is a new client that communicates with the same IPython kernels used by the
46 46 terminal and Qt console. But the web notebook provides for a different
47 47 workflow where you can integrate, along with code execution, also text,
48 48 mathematical expressions, graphics, video, and virtually any content that a
49 49 modern browser is capable of displaying.
50 50
51 51 You can save your work sessions as documents that retain all these elements and
52 52 which can be version controlled, emailed to colleagues or saved as HTML or PDF
53 53 files for printing or publishing statically on the web. The internal storage
54 54 format is a JSON file that can be easily manipulated for manual exporting to
55 55 other formats.
56 56
57 57 This Notebook is a major milestone for IPython, as for years we have tried to
58 58 build this kind of system. We were inspired originally by the excellent
59 59 implementation in Mathematica, we made a number of attempts using older
60 60 technologies in earlier Summer of Code projects in 2005 (both students and
61 61 Robert Kern developed early prototypes), and in recent years we have seen the
62 62 excellent implementation offered by the `Sage <http://sagemath.org>` system.
63 63 But we continued to work on something that would be consistent with the rest of
64 64 IPython's design, and it is clear now that the effort was worth it: based on
65 65 the ZeroMQ communications architecture introduced in version 0.11, the notebook
66 66 can now retain 100% of the features of the real IPython. But it can also
67 67 provide the rich media support and high quality Javascript libraries that were
68 68 not available in browsers even one or two years ago (such as high-quality
69 69 mathematical rendering or built-in video).
70 70
71 71 The notebook has too many useful and important features to describe in these
72 72 release notes; our documentation now contains a directory called
73 73 ``examples/notebooks`` with several notebooks that illustrate various aspects
74 74 of the system. You should start by reading those named
75 75 ``00_notebook_tour.ipynb`` and ``01_notebook_introduction.ipynb`` first, and
76 76 then can proceed to read the others in any order you want.
77 77
78 78 To start the notebook server, go to a directory containing the notebooks you
79 79 want to open (or where you want to create new ones) and type::
80 80
81 81 ipython notebook
82 82
83 83 You can see all the relevant options with::
84 84
85 85 ipython notebook --help
86 86 ipython notebook --help-all # even more
87 87
88 88 and just like the Qt console, you can start the notebook server with pylab
89 89 support by using::
90 90
91 91 ipython notebook --pylab
92 92
93 93 for floating matplotlib windows or::
94 94
95 95 ipython notebook --pylab inline
96 96
97 97 for plotting support with automatically inlined figures. Note that it is now
98 98 possible also to activate pylab support at runtime via ``%pylab``, so you do
99 99 not need to make this decision when starting the server.
100 100
101 101 See :ref:`the Notebook docs <htmlnotebook>` for technical details.
102 102
103 .. _two_process_console:
103 104
104 105 Two-process terminal console
105 106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106 107
107 108 Based on the same architecture as the notebook and the Qt console, we also have
108 109 now a terminal-based console that can connect to an external IPython kernel
109 110 (the same kernels used by the Qt console or the notebook, in fact). While this
110 111 client behaves almost identically to the usual IPython terminal application,
111 112 this capability can be very useful to attach an interactive console to an
112 113 existing kernel that was started externally. It lets you use the interactive
113 114 ``%debug`` facilities in a notebook, for example (the web browser can't
114 115 interact directly with the debugger) or debug a third-party code where you may
115 116 have embedded an IPython kernel.
116 117
117 118 This is also something that we have wanted for a long time, and which is a
118 119 culmination (as a team effort) of the work started last year during the 2010
119 120 Google Summer of Code project.
120 121
121 122 Tabbed QtConsole
122 123 ~~~~~~~~~~~~~~~~
123 124
124 125 The QtConsole now supports starting multiple kernels in tabs, and has a
125 126 menubar, so it looks and behaves more like a real application. Keyboard
126 127 enthusiasts can disable the menubar with ctrl-shift-M (:ghpull:`887`).
127 128
128 129 .. figure:: ../_static/qtconsole_tabbed.png
129 130 :width: 400px
130 131 :alt: Tabbed IPython Qt console with embedded plots and menus.
131 132 :align: center
132 133 :target: ../_static/qtconsole_tabbed.png
133 134
134 135 The improved Qt console for IPython, now with tabs to control multiple
135 136 kernels and full menu support.
136 137
137 138
138 139 Full Python 3 compatibility
139 140 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
140 141
141 142 IPython can now be installed from a single codebase on Python 2 and
142 143 Python 3. The installation process for Python 3 automatically runs 2to3. The
143 144 same 'default' profile is now used for Python 2 and 3 (the previous version had
144 145 a separate 'python3' profile).
145 146
146 147 Standalone Kernel
147 148 ~~~~~~~~~~~~~~~~~
148 149
149 150 The ``ipython kernel`` subcommand has been added, to allow starting a
150 151 standalone kernel, that can be used with various frontends. You can then later
151 152 connect a Qt console or a terminal console to this kernel by typing e.g.::
152 153
153 154 ipython qtconsole --existing
154 155
155 156 if it's the only one running, or by passing explicitly the connection
156 157 parameters (printed by the kernel at startup).
157 158
158 159
159 160 PyPy support
160 161 ~~~~~~~~~~~~
161 162
162 163 The terminal interface to IPython now runs under `PyPy <http://pypy.org/>`_.
163 164 We will continue to monitor PyPy's progress, and hopefully before long at least
164 165 we'll be able to also run the notebook. The Qt console may take longer, as Qt
165 166 is a very complex set of bindings to a huge C++ library, and that is currently
166 167 the area where PyPy still lags most behind. But for everyday interactive use
167 168 at the terminal, with this release and PyPy 1.7, things seem to work quite well
168 169 from our admittedly limited testing.
169 170
170 171
171 172 Other important new features
172 173 ----------------------------
173 174
174 175 * **SSH Tunnels**: In 0.11, the :mod:`IPython.parallel` Client could tunnel its
175 176 connections to the Controller via ssh. Now, the QtConsole :ref:`supports
176 177 <ssh_tunnels>` ssh tunneling, as do parallel engines.
177 178
178 179 * **relaxed command-line parsing**: 0.11 was released with overly-strict
179 180 command-line parsing, preventing the ability to specify arguments with spaces,
180 181 e.g. ``ipython --pylab qt`` or ``ipython -c "print 'hi'"``. This has
181 182 been fixed, by using argparse. The new parsing is a strict superset of 0.11, so
182 183 any commands in 0.11 should still work in 0.12.
183 184
184 185 * **HistoryAccessor**: The :class:`~IPython.core.history.HistoryManager` class
185 186 for interacting with your IPython SQLite history database has been split,
186 187 adding a parent :class:`~IPython.core.history.HistoryAccessor` class, so that
187 188 users can write code to access and search their IPython history without being
188 189 in an IPython session (:ghpull:`824`).
189 190
190 191 * **kernel %gui and %pylab**: The ``%gui`` and ``%pylab`` magics have been
191 192 restored to the IPython kernel (e.g. in the qtconsole or notebook). This
192 193 allows activation of pylab-mode, or eventloop integration after starting the
193 194 kernel, which was unavailable in 0.11. Unlike in the terminal, this can be
194 195 set only once, and cannot be changed.
195 196
196 197 * **%config**: A new ``%config`` magic has been added, giving easy access to the
197 198 IPython configuration system at runtime (:ghpull:`923`).
198 199
199 200 * **Multiline History**: Multiline readline history has been restored to the
200 201 Terminal frontend by default (:ghpull:`838`).
201 202
202 203 * **%store**: The ``%store`` magic from earlier versions has been updated and
203 204 re-enabled (:ref:`extensions_storemagic`; :ghpull:`1029`). To autorestore
204 205 stored variables on startup, specify ``c.StoreMagic.autorestore = True`` in
205 206 :file:`ipython_config.py`.
206 207
207 208
208 209 Major Bugs fixed
209 210 ----------------
210 211
211 212 In this cycle, we have :ref:`closed over 500 issues <issues_list_012>`, but a
212 213 few major ones merit special mention:
213 214
214 215 * Simple configuration errors should no longer crash IPython. In 0.11, errors
215 216 in config files, as well as invalid trait values, could crash IPython. Now,
216 217 such errors are reported, and help is displayed.
217 218
218 219 * Certain SyntaxErrors no longer crash IPython (e.g. just typing keywords, such
219 220 as ``return``, ``break``, etc.). See :ghissue:`704`.
220 221
221 222 * IPython path utils, such as :func:`~IPython.utils.path.get_ipython_dir` now
222 223 check for write permissions, so IPython should function on systems where the
223 224 default path resolution might point to a read-only location, such as
224 225 ``HOMESHARE`` on Windows (:ghissue:`669`).
225 226
226 227 * :func:`raw_input` now works in the kernel when multiple frontends are in
227 228 use. The request will be sent to the frontend that made the request, and an
228 229 exception is raised if that frontend does not support stdin requests
229 230 (e.g. the notebook) (:ghissue:`673`).
230 231
231 232 * :mod:`zmq` version detection no longer uses simple lexicographical comparison
232 233 to check minimum version, which prevents 0.11 from working with pyzmq-2.1.10
233 234 (:ghpull:`758`).
234 235
235 236 * A bug in PySide < 1.0.7 caused crashes on OSX when tooltips were shown
236 237 (:ghissue:`711`). these tooltips are now disabled on old PySide
237 238 (:ghpull:`963`).
238 239
239 240 * IPython no longer crashes when started on recent versions of Python 3 in
240 241 Windows (:ghissue:`737`).
241 242
242 243 * Instances of classes defined interactively can now be pickled (:ghissue:`29`;
243 244 :ghpull:`648`). Note that pickling saves a reference to the class definition,
244 245 so unpickling the instances will only work where the class has been defined.
245 246
246 247
247 248 Backwards incompatible changes
248 249 ------------------------------
249 250
250 251 * IPython connection information is no longer specified via ip/port directly,
251 252 rather via json connection files. These files are stored in the security
252 253 directory, and enable us to turn on HMAC message authentication by default,
253 254 significantly improving the security of kernels. Various utility functions
254 255 have been added to :mod:`IPython.lib.kernel`, for easier connecting to existing
255 256 kernels.
256 257
257 258 * :class:`~IPython.zmq.kernelmanager.KernelManager` now has one ip, and several
258 259 port traits, rather than several ip/port pair ``_addr`` traits. This better
259 260 matches the rest of the code, where the ip cannot not be set separately for
260 261 each channel.
261 262
262 263 * Custom prompts are now configured using a new class,
263 264 :class:`~IPython.core.prompts.PromptManager`, which has traits for
264 265 :attr:`in_template`, :attr:`in2_template` (the ``...:`` continuation prompt),
265 266 :attr:`out_template` and :attr:`rewrite_template`. This uses Python's string
266 267 formatting system, so you can use ``{time}`` and ``{cwd}``, although we have
267 268 preserved the abbreviations from previous versions, e.g. ``\#`` (prompt number)
268 269 and ``\w`` (working directory). For the list of available fields, refer to the
269 270 source of :file:`IPython/core/prompts.py`.
270 271
271 272 * The class inheritance of the Launchers in
272 273 :mod:`IPython.parallel.apps.launcher` used by ipcluster has changed, so that
273 274 trait names are more consistent across batch systems. This may require a few
274 275 renames in your config files, if you customized the command-line args for
275 276 launching controllers and engines. The configurable names have also been
276 277 changed to be clearer that they point to class names, and can now be
277 278 specified by name only, rather than requiring the full import path of each
278 279 class, e.g.::
279 280
280 281 IPClusterEngines.engine_launcher = 'IPython.parallel.apps.launcher.MPIExecEngineSetLauncher'
281 282 IPClusterStart.controller_launcher = 'IPython.parallel.apps.launcher.SSHControllerLauncher'
282 283
283 284 would now be specified as::
284 285
285 286 IPClusterEngines.engine_launcher_class = 'MPI'
286 287 IPClusterStart.controller_launcher_class = 'SSH'
287 288
288 289 The full path will still work, and is necessary for using custom launchers
289 290 not in IPython's launcher module.
290 291
291 292 Further, MPIExec launcher names are now prefixed with just MPI, to better match
292 293 other batch launchers, and be generally more intuitive. The MPIExec names are
293 294 deprecated, but continue to work.
294 295
295 296 * For embedding a shell, note that the parameters ``user_global_ns`` and
296 297 ``global_ns`` have been deprectated in favour of ``user_module`` and
297 298 ``module`` respsectively. The new parameters expect a module-like object,
298 299 rather than a namespace dict. The old parameters remain for backwards
299 300 compatibility, although ``user_global_ns`` is now ignored. The ``user_ns``
300 301 parameter works the same way as before, and calling
301 302 :func:`~IPython.frontend.terminal.embed.embed` with no arguments still works
302 303 as before.
303 304
304 305
305 306 Development summary and credits
306 307 -------------------------------
307 308
308 309 The previous version (IPython 0.11) was released on July 31 2011, so this
309 310 release cycle was roughly 4 1/2 months long, we closed a total of 515 issues,
310 311 257 pull requests and 258 regular issues (a :ref:`detailed list
311 312 <issues_list_012>`_ is available).
312 313
313 314 Many users and developers contributed code, features, bug reports and ideas to
314 315 this release. Please do not hesitate in contacting us if we've failed to
315 316 acknowledge your contribution here. In particular, for this release we have
316 317 had commits from the following 45 contributors, a mix of new and regular names
317 318 (in alphabetical order by first name):
318 319
319 320 * Alcides <alcides-at-do-not-span-me.com>
320 321 * Ben Edwards <bedwards-at-cs.unm.edu>
321 322 * Benjamin Ragan-Kelley <benjaminrk-at-gmail.com>
322 323 * Benjamin Thyreau <benjamin.thyreau-at-gmail.com>
323 324 * Bernardo B. Marques <bernardo.fire-at-gmail.com>
324 325 * Bernard Paulus <bprecyclebin-at-gmail.com>
325 326 * Bradley M. Froehle <brad.froehle-at-gmail.com>
326 327 * Brian E. Granger <ellisonbg-at-gmail.com>
327 328 * Christian Boos <cboos-at-bct-technology.com>
328 329 * Daniel Velkov <danielv-at-mylife.com>
329 330 * Erik Tollerud <erik.tollerud-at-gmail.com>
330 331 * Evan Patterson <epatters-at-enthought.com>
331 332 * Felix Werner <Felix.Werner-at-kit.edu>
332 333 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
333 334 * Gabriel <g2p.code-at-gmail.com>
334 335 * Grahame Bowland <grahame-at-angrygoats.net>
335 336 * Hannes Schulz <schulz-at-ais.uni-bonn.de>
336 337 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
337 338 * Jonathan March <jmarch-at-enthought.com>
338 339 * Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>
339 340 * Julian Taylor <jtaylor.debian-at-googlemail.com>
340 341 * Kefu Chai <tchaikov-at-gmail.com>
341 342 * macgyver <neil.rabinowitz-at-merton.ox.ac.uk>
342 343 * Matt Cottingham <matt.cottingham-at-gmail.com>
343 344 * Matthew Brett <matthew.brett-at-gmail.com>
344 345 * Matthias BUSSONNIER <bussonniermatthias-at-gmail.com>
345 346 * Michael Droettboom <mdboom-at-gmail.com>
346 347 * Nicolas Rougier <Nicolas.Rougier-at-inria.fr>
347 348 * Olivier Verdier <olivier.verdier-at-gmail.com>
348 349 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
349 350 * Pablo Winant <pablo.winant-at-gmail.com>
350 351 * Paul Ivanov <pivanov314-at-gmail.com>
351 352 * Pauli Virtanen <pav-at-iki.fi>
352 353 * Pete Aykroyd <aykroyd-at-gmail.com>
353 354 * Prabhu Ramachandran <prabhu-at-enthought.com>
354 355 * Puneeth Chaganti <punchagan-at-gmail.com>
355 356 * Robert Kern <robert.kern-at-gmail.com>
356 357 * Satrajit Ghosh <satra-at-mit.edu>
357 358 * Stefan van der Walt <stefan-at-sun.ac.za>
358 359 * Szabolcs Horvát <szhorvat-at-gmail.com>
359 360 * Thomas Kluyver <takowl-at-gmail.com>
360 361 * Thomas Spura <thomas.spura-at-gmail.com>
361 362 * Timo Paulssen <timonator-at-perpetuum-immobile.de>
362 363 * Valentin Haenel <valentin.haenel-at-gmx.de>
363 364 * Yaroslav Halchenko <debian-at-onerussian.com>
364 365
365 366 .. note::
366 367
367 368 This list was generated with the output of
368 369 ``git log rel-0.11..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
369 370 after some cleanup. If you should be on this list, please add yourself.
General Comments 0
You need to be logged in to leave comments. Login now