##// END OF EJS Templates
Small updates for actual 0.11 release.
Fernando Perez -
Show More
@@ -1,123 +1,123 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Release data for the IPython project."""
3 3
4 4 #-----------------------------------------------------------------------------
5 5 # Copyright (c) 2008-2010, IPython Development Team.
6 6 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
7 7 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
8 8 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
9 9 #
10 10 # Distributed under the terms of the Modified BSD License.
11 11 #
12 12 # The full license is in the file COPYING.txt, distributed with this software.
13 13 #-----------------------------------------------------------------------------
14 14
15 15 # Name of the package for release purposes. This is the name which labels
16 16 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
17 17 name = 'ipython'
18 18
19 19 # IPython version information. An empty _version_extra corresponds to a full
20 20 # release. 'dev' as a _version_extra string means this is a development
21 21 # version
22 22 _version_major = 0
23 23 _version_minor = 11
24 24 _version_micro = '' # use '' for first of series, number for 1 and above
25 _version_extra = 'dev'
26 #_version_extra = '' # Uncomment this for full releases
25 #_version_extra = 'dev'
26 _version_extra = '' # Uncomment this for full releases
27 27
28 28 # Construct full version string from these.
29 29 _ver = [_version_major, _version_minor]
30 30 if _version_micro:
31 31 _ver.append(_version_micro)
32 32 if _version_extra:
33 33 _ver.append(_version_extra)
34 34
35 35 __version__ = '.'.join(map(str, _ver))
36 36
37 37 version = __version__ # backwards compatibility name
38 38
39 39 description = "An interactive computing environment for Python"
40 40
41 41 long_description = \
42 42 """
43 43 The goal of IPython is to create a comprehensive environment for
44 44 interactive and exploratory computing. To support this goal, IPython
45 45 has two main components:
46 46
47 47 * An enhanced interactive Python shell.
48 48
49 49 * An architecture for interactive parallel computing.
50 50
51 51 The enhanced interactive Python shell has the following main features:
52 52
53 53 * Comprehensive object introspection.
54 54
55 55 * Input history, persistent across sessions.
56 56
57 57 * Caching of output results during a session with automatically generated
58 58 references.
59 59
60 60 * Readline based name completion.
61 61
62 62 * Extensible system of 'magic' commands for controlling the environment and
63 63 performing many tasks related either to IPython or the operating system.
64 64
65 65 * Configuration system with easy switching between different setups (simpler
66 66 than changing $PYTHONSTARTUP environment variables every time).
67 67
68 68 * Session logging and reloading.
69 69
70 70 * Extensible syntax processing for special purpose situations.
71 71
72 72 * Access to the system shell with user-extensible alias system.
73 73
74 74 * Easily embeddable in other Python programs and wxPython GUIs.
75 75
76 76 * Integrated access to the pdb debugger and the Python profiler.
77 77
78 78 The parallel computing architecture has the following main features:
79 79
80 80 * Quickly parallelize Python code from an interactive Python/IPython session.
81 81
82 82 * A flexible and dynamic process model that be deployed on anything from
83 83 multicore workstations to supercomputers.
84 84
85 85 * An architecture that supports many different styles of parallelism, from
86 86 message passing to task farming.
87 87
88 88 * Both blocking and fully asynchronous interfaces.
89 89
90 90 * High level APIs that enable many things to be parallelized in a few lines
91 91 of code.
92 92
93 93 * Share live parallel jobs with other users securely.
94 94
95 95 * Dynamically load balanced task farming system.
96 96
97 97 * Robust error handling in parallel code.
98 98
99 99 The latest development version is always available from IPython's `GitHub
100 100 site <http://github.com/ipython>`_.
101 101 """
102 102
103 103 license = 'BSD'
104 104
105 105 authors = {'Fernando' : ('Fernando Perez','fperez.net@gmail.com'),
106 106 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
107 107 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
108 108 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
109 109 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
110 110 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com')
111 111 }
112 112
113 113 author = 'The IPython Development Team'
114 114
115 115 author_email = 'ipython-dev@scipy.org'
116 116
117 117 url = 'http://ipython.org'
118 118
119 119 download_url = 'http://ipython.scipy.org/dist'
120 120
121 121 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
122 122
123 123 keywords = ['Interactive','Interpreter','Shell','Parallel','Distributed']
@@ -1,756 +1,756 b''
1 1 =============
2 2 0.11 Series
3 3 =============
4 4
5 5 Release 0.11
6 6 ============
7 7
8 8 IPython 0.11 is a *major* overhaul of IPython, two years in the making. Most
9 9 of the code base has been rewritten or at least reorganized, breaking backward
10 10 compatibility with several APIs in previous versions. It is the first major
11 11 release in two years, and probably the most significant change to IPython since
12 12 its inception. We plan to have a relatively quick succession of releases, as
13 13 people discover new bugs and regressions. Once we iron out any significant
14 14 bugs in this process and settle down the new APIs, this series will become
15 15 IPython 1.0. We encourage feedback now on the core APIs, which we hope to
16 16 maintain stable during the 1.0 series.
17 17
18 18 Since the internal APIs have changed so much, projects using IPython as a
19 19 library (as opposed to end-users of the application) are the most likely to
20 20 encounter regressions or changes that break their existing use patterns. We
21 21 will make every effort to provide updated versions of the APIs to facilitate
22 22 the transition, and we encourage you to contact us on the `development mailing
23 23 list`__ with questions and feedback.
24 24
25 25 .. __: http://mail.scipy.org/mailman/listinfo/ipython-dev
26 26
27 27 Chris Fonnesbeck recently wrote an `excellent post`__ that highlights some of
28 28 our major new features, with examples and screenshots. We encourage you to
29 29 read it as it provides an illustrated, high-level overview complementing the
30 30 detailed feature breakdown in this document.
31 31
32 32 .. __: http://stronginference.com/weblog/2011/7/15/innovations-in-ipython.html
33 33
34 34 A quick summary of the major changes (see below for details):
35 35
36 36 * **Standalone Qt console**: a new rich console has been added to IPython,
37 37 started with `ipython qtconsole`. In this application we have tried to
38 38 retain the feel of a terminal for fast and efficient workflows, while adding
39 39 many features that a plain text terminal simply can not support, such as
40 40 inline figures, full multiline editing with syntax highlighting, tooltips for
41 41 function calls and much more. This development was sponsored by `Enthought
42 42 Inc.`__. See :ref:`below <qtconsole_011>` for details.
43 43
44 44 .. __: http://enthought.com
45 45
46 46 * **High-level parallel computing with ZeroMQ**. Using the same architecture
47 47 that our Qt console is based on, we have completely rewritten our high-level
48 48 parallel computing machinery that in prior versions used the Twisted
49 49 networking framework. While this change will require users to update their
50 50 codes, the improvements in performance, memory control and internal
51 51 consistency across our codebase convinced us it was a price worth paying. We
52 52 have tried to explain how to best proceed with this update, and will be happy
53 53 to answer questions that may arise. A full tutorial describing these
54 54 features `was presented at SciPy'11`__.
55 55
56 56 .. __: http://minrk.github.com/scipy-tutorial-2011
57 57
58 58 * **New model for GUI/plotting support in the terminal**. Now instead of the
59 59 various `-Xthread` flags we had before, GUI support is provided without the
60 60 use of any threads, by directly integrating GUI event loops with Python's
61 61 `PyOS_InputHook` API. A new command-line flag `--gui` controls GUI support,
62 62 and it can also be enabled after IPython startup via the new `%gui` magic.
63 63 This requires some changes if you want to execute GUI-using scripts inside
64 64 IPython, see :ref:`the GUI support section <gui_support>` for more details.
65 65
66 66 * **A two-process architecture.** The Qt console is the first example of using
67 67 a new model that splits IPython between a kernel process where code is
68 68 executed and a client that handles user interaction. We plan on also
69 69 providing terminal and web-browser based clients using this infrastructure in
70 70 future releases. This model allows multiple clients to interact with an
71 71 IPython process through a well-documented protocol using the ZeroMQ
72 72 networking library.
73 73
74 74 * **Refactoring.** the entire codebase has been refactored, in order to make it
75 75 more modular and easier to contribute to. IPython has traditionally been a
76 76 hard project to participate because the old codebase was very monolithic. We
77 77 hope this (ongoing) restructuring will make it easier for new developers to
78 78 join us.
79 79
80 80 * **Vim integration**. Vim can be configured to seamlessly control an IPython
81 81 kernel, see the files in :file:`docs/examples/vim` for the full details.
82 82 This work was done by Paul Ivanov, who prepared a nice `video
83 83 demonstration`__ of the features it provides.
84 84
85 85 .. __: http://pirsquared.org/blog/2011/07/28/vim-ipython/
86 86
87 87 * **Integration into Microsoft Visual Studio**. Thanks to the work of the
88 88 Microsoft `Python Tools for Visual Studio`__ team, this version of IPython
89 89 has been integrated into Microsoft Visual Studio's Python tools open source
90 90 plug-in. `Details below`_
91 91
92 92 .. __: http://pytools.codeplex.com
93 93 .. _details below: ms_visual_studio_011_
94 94
95 95 * **Improved unicode support**. We closed many bugs related to unicode input.
96 96
97 97 * **Python 3**. IPython now runs on Python 3.x. See :ref:`python3_011` for
98 98 details.
99 99
100 100 * **New profile model**. Profiles are now directories that contain all relevant
101 101 infromation for that session, and thus better isolate IPython use-cases.
102 102
103 103 * **SQLite storage for history**. All history is now stored in a SQLite
104 104 database, providing support for multiple simultaneous sessions that won't
105 105 clobber each other as well as the ability to perform queries on all stored
106 106 data.
107 107
108 108 * **New configuration system**. All parts of IPython are now configured via a
109 109 mechanism inspired by the Enthought Traits library. Any configurable element
110 110 can have its attributes set either via files that now use real Python syntax
111 111 or from the command-line.
112 112
113 113 * **Pasting of code with prompts**. IPython now intelligently strips out input
114 114 prompts , be they plain Python ones (``>>>`` and ``...``) or IPython ones
115 115 (``In [N]:`` and `` ...:``). More details :ref:`here <pasting_with_prompts>`.
116 116
117 117
118 118 Authors and support
119 119 -------------------
120 120
121 121 Over 60 separate authors have contributed to this release, see :ref:`below
122 122 <credits_011>` for a full list. In particular, we want to highlight the
123 123 extremely active participation of two new core team members: Evan Patterson
124 124 implemented the Qt console, and Thomas Kluyver started with our Python 3 port
125 125 and by now has made major contributions to just about every area of IPython.
126 126
127 127 We are also grateful for the support we have received during this development
128 128 cycle from several institutions:
129 129
130 130 - `Enthought Inc`__ funded the development of our new Qt console, an effort that
131 131 required developing major pieces of underlying infrastructure, which now
132 132 power not only the Qt console but also our new parallel machinery. We'd like
133 133 to thank Eric Jones and Travis Oliphant for their support, as well as Ilan
134 134 Schnell for his tireless work integrating and testing IPython in the
135 135 `Enthought Python Distribution`_.
136 136
137 137 .. __: http://enthought.com
138 138 .. _Enthought Python Distribution: http://www.enthought.com/products/epd.php
139 139
140 140 - Nipy/NIH: funding via the `NiPy project`__ (NIH grant 5R01MH081909-02) helped
141 141 us jumpstart the development of this series by restructuring the entire
142 142 codebase two years ago in a way that would make modular development and
143 143 testing more approachable. Without this initial groundwork, all the new
144 144 features we have added would have been impossible to develop.
145 145
146 146 .. __: http://nipy.org
147 147
148 148 - Sage/NSF: funding via the grant `Sage: Unifying Mathematical Software for
149 149 Scientists, Engineers, and Mathematicians`__ (NSF grant DMS-1015114)
150 150 supported a meeting in spring 2011 of several of the core IPython developers
151 151 where major progress was made integrating the last key pieces leading to this
152 152 release.
153 153
154 154 .. __: http://modular.math.washington.edu/grants/compmath09
155 155
156 156 - Microsoft's team working on `Python Tools for Visual Studio`__ developed the
157 157 integraton of IPython into the Python plugin for Visual Studio 2010.
158 158
159 159 .. __: http://pytools.codeplex.com
160 160
161 161 - Google Summer of Code: in 2010, we had two students developing prototypes of
162 162 the new machinery that is now maturing in this release: `Omar Zapata`_ and
163 163 `Gerardo GutiΓ©rrez`_.
164 164
165 165 .. _Omar Zapata: http://ipythonzmq.blogspot.com/2010/08/ipython-zmq-status.html
166 166 .. _Gerardo GutiΓ©rrez: http://ipythonqt.blogspot.com/2010/04/ipython-qt-interface-gsoc-2010-proposal.html>
167 167
168 168
169 169 Development summary
170 170 -------------------
171 171
172 172 In April 2010, after `one breakage too many with bzr`__, we decided to move our
173 173 entire development process to Git and Github.com. This has proven to be one of
174 174 the best decisions in the project's history, as the combination of git and
175 175 github have made us far, far more productive than we could be with our previous
176 176 tools. We first converted our bzr repo to a git one without losing history,
177 177 and a few weeks later ported all open Launchpad bugs to github issues with
178 178 their comments mostly intact (modulo some formatting changes). This ensured a
179 179 smooth transition where no development history or submitted bugs were lost.
180 180
181 181 .. __: http://mail.scipy.org/pipermail/ipython-dev/2010-April/005944.html
182 182
183 183 These simple statistics show how much work has been done on the new release, by
184 184 comparing the current code to the last point it had in common with the 0.10
185 185 series. A huge diff and over 2000 commits make up this development::
186 186
187 187 git diff $(git merge-base 0.10.2 HEAD) | wc -l
188 287676
188 287985
189 189
190 git log $(git merge-base 0.10.2 HEAD) --oneline | wc -l
191 2046
190 git log $(git merge-base 0.10.2 HEAD)..HEAD --oneline | wc -l
191 2192
192 192
193 193 Since our move to github, 510 issues were closed, 225 of which were pull
194 194 requests and 285 regular issues (see :ref:`below <issues_list_011>` for a full
195 195 list). Github's pull requests are a fantastic mechanism for reviewing code and
196 196 building a shared ownership of the project, and we are making enthusiastic use
197 197 of it.
198 198
199 199 .. Note::
200 200
201 201 This undercounts the number of issues closed in this development cycle,
202 202 since we only moved to github for issue tracking in May 2010, but we have no
203 203 way of collecting statistics on the number of issues closed in the old
204 204 Launchpad bug tracker prior to that.
205 205
206 206
207 207 .. _qtconsole_011:
208 208
209 209 Qt Console
210 210 ----------
211 211
212 212 IPython now ships with a Qt application that feels very much like a terminal,
213 213 but is in fact a rich GUI that runs an IPython client but supports inline
214 214 figures, saving sessions to PDF and HTML, multiline editing with syntax
215 215 highlighting, graphical calltips and much more:
216 216
217 217 .. figure:: ../_static/qtconsole.png
218 218 :width: 400px
219 219 :alt: IPython Qt console with embedded plots
220 220 :align: center
221 221 :target: ../_static/qtconsole.png
222 222
223 223 The Qt console for IPython, using inline matplotlib plots.
224 224
225 225 We hope that many projects will embed this widget, which we've kept
226 226 deliberately very lightweight, into their own environments. In the future we
227 227 may also offer a slightly more featureful application (with menus and other GUI
228 228 elements), but we remain committed to always shipping this easy to embed
229 229 widget.
230 230
231 231 See the :ref:`Qt console section <qtconsole>` of the docs for a detailed
232 232 description of the console's features and use.
233 233
234 234
235 235 High-level parallel computing with ZeroMQ
236 236 -----------------------------------------
237 237
238 238 We have completely rewritten the Twisted-based code for high-level parallel
239 239 computing to work atop our new ZeroMQ architecture. While we realize this will
240 240 break compatibility for a number of users, we hope to make the transition as
241 241 easy as possible with our docs, and we are convinced the change is worth it.
242 242 ZeroMQ provides us with much tighter control over memory, higher performance,
243 243 and its communications are impervious to the Python Global Interpreter Lock
244 244 because they take place in a system-level C++ thread. The impact of the GIL in
245 245 our previous code was something we could simply not work around, given that
246 246 Twisted is itself a Python library. So while Twisted is a very capable
247 247 framework, we think ZeroMQ fits our needs much better and we hope you will find
248 248 the change to be a significant improvement in the long run.
249 249
250 250 Our manual contains :ref:`a full description of how to use IPython for parallel
251 251 computing <parallel_overview>`, and the `tutorial`__ presented by Min
252 252 Ragan-Kelley at the SciPy 2011 conference provides a hands-on complement to the
253 253 reference docs.
254 254
255 255 .. __: http://minrk.github.com/scipy-tutorial-2011
256 256
257 257
258 258 Refactoring
259 259 -----------
260 260
261 261 As of this release, a signifiant portion of IPython has been refactored. This
262 262 refactoring is founded on a number of new abstractions. The main new classes
263 263 that implement these abstractions are:
264 264
265 265 * :class:`IPython.utils.traitlets.HasTraits`.
266 266 * :class:`IPython.config.configurable.Configurable`.
267 267 * :class:`IPython.config.application.Application`.
268 268 * :class:`IPython.config.loader.ConfigLoader`.
269 269 * :class:`IPython.config.loader.Config`
270 270
271 271 We are still in the process of writing developer focused documentation about
272 272 these classes, but for now our :ref:`configuration documentation
273 273 <config_overview>` contains a high level overview of the concepts that these
274 274 classes express.
275 275
276 276 The biggest user-visible change is likely the move to using the config system to
277 277 determine the command-line arguments for IPython applications. The benefit of
278 278 this is that *all* configurable values in IPython are exposed on the
279 279 command-line, but the syntax for specifying values has changed. The gist is that
280 280 assigning values is pure Python assignment, so there is always an '=', and never
281 281 a leading '-', nor a space separating key from value. Flags exist, to set
282 282 multiple values or boolean flags, and these are always prefixed with '--', and
283 283 never take arguments.
284 284
285 285 ZeroMQ architecture
286 286 -------------------
287 287
288 288 There is a new GUI framework for IPython, based on a client-server model in
289 289 which multiple clients can communicate with one IPython kernel, using the
290 290 ZeroMQ messaging framework. There is already a Qt console client, which can
291 291 be started by calling ``ipython qtconsole``. The protocol is :ref:`documented
292 292 <messaging>`.
293 293
294 294 The parallel computing framework has also been rewritten using ZMQ. The
295 295 protocol is described :ref:`here <parallel_messages>`, and the code is in the
296 296 new :mod:`IPython.parallel` module.
297 297
298 298 .. _python3_011:
299 299
300 300 Python 3 support
301 301 ----------------
302 302
303 303 A Python 3 version of IPython has been prepared. For the time being, this is
304 304 maintained separately and updated from the main codebase. Its code can be found
305 305 `here <https://github.com/ipython/ipython-py3k>`_. The parallel computing
306 306 components are not perfect on Python3, but most functionality appears to be
307 307 working. As this work is evolving quickly, the best place to find updated
308 308 information about it is our `Python 3 wiki page`__.
309 309
310 310 .. __: http://wiki.ipython.org/index.php?title=Python_3
311 311
312 312
313 313 Unicode
314 314 -------
315 315
316 316 Entering non-ascii characters in unicode literals (``u"€ø"``) now works
317 317 properly on all platforms. However, entering these in byte/string literals
318 318 (``"€ø"``) will not work as expected on Windows (or any platform where the
319 319 terminal encoding is not UTF-8, as it typically is for Linux & Mac OS X). You
320 320 can use escape sequences (``"\xe9\x82"``) to get bytes above 128, or use
321 321 unicode literals and encode them. This is a limitation of Python 2 which we
322 322 cannot easily work around.
323 323
324 324 .. _ms_visual_studio_011:
325 325
326 326 Integration with Microsoft Visual Studio
327 327 ----------------------------------------
328 328
329 329 IPython can be used as the interactive shell in the `Python plugin for
330 330 Microsoft Visual Studio`__, as seen here:
331 331
332 332 .. figure:: ../_static/ms_visual_studio.png
333 333 :width: 500px
334 334 :alt: IPython console embedded in Microsoft Visual Studio.
335 335 :align: center
336 336 :target: ../_static/ms_visual_studio.png
337 337
338 338 IPython console embedded in Microsoft Visual Studio.
339 339
340 340 The Microsoft team developing this currently has a release candidate out using
341 341 IPython 0.11. We will continue to collaborate with them to ensure that as they
342 342 approach their final release date, the integration with IPython remains smooth.
343 343 We'd like to thank Dino Viehland and Shahrokh Mortazavi for the work they have
344 344 done towards this feature, as well as Wenming Ye for his support of our WinHPC
345 345 capabilities.
346 346
347 347 .. __: http://pytools.codeplex.com
348 348
349 349
350 350 Additional new features
351 351 -----------------------
352 352
353 353 * Added ``Bytes`` traitlet, removing ``Str``. All 'string' traitlets should
354 354 either be ``Unicode`` if a real string, or ``Bytes`` if a C-string. This
355 355 removes ambiguity and helps the Python 3 transition.
356 356
357 357 * New magic ``%loadpy`` loads a python file from disk or web URL into
358 358 the current input buffer.
359 359
360 360 * New magic ``%pastebin`` for sharing code via the 'Lodge it' pastebin.
361 361
362 362 * New magic ``%precision`` for controlling float and numpy pretty printing.
363 363
364 364 * IPython applications initiate logging, so any object can gain access to
365 365 a the logger of the currently running Application with:
366 366
367 367 .. sourcecode:: python
368 368
369 369 from IPython.config.application import Application
370 370 logger = Application.instance().log
371 371
372 372 * You can now get help on an object halfway through typing a command. For
373 373 instance, typing ``a = zip?`` shows the details of :func:`zip`. It also
374 374 leaves the command at the next prompt so you can carry on with it.
375 375
376 376 * The input history is now written to an SQLite database. The API for
377 377 retrieving items from the history has also been redesigned.
378 378
379 379 * The :mod:`IPython.extensions.pretty` extension has been moved out of
380 380 quarantine and fully updated to the new extension API.
381 381
382 382 * New magics for loading/unloading/reloading extensions have been added:
383 383 ``%load_ext``, ``%unload_ext`` and ``%reload_ext``.
384 384
385 385 * The configuration system and configuration files are brand new. See the
386 386 configuration system :ref:`documentation <config_index>` for more details.
387 387
388 388 * The :class:`~IPython.core.interactiveshell.InteractiveShell` class is now a
389 389 :class:`~IPython.config.configurable.Configurable` subclass and has traitlets
390 390 that determine the defaults and runtime environment. The ``__init__`` method
391 391 has also been refactored so this class can be instantiated and run without
392 392 the old :mod:`ipmaker` module.
393 393
394 394 * The methods of :class:`~IPython.core.interactiveshell.InteractiveShell` have
395 395 been organized into sections to make it easier to turn more sections
396 396 of functionality into components.
397 397
398 398 * The embedded shell has been refactored into a truly standalone subclass of
399 399 :class:`InteractiveShell` called :class:`InteractiveShellEmbed`. All
400 400 embedding logic has been taken out of the base class and put into the
401 401 embedded subclass.
402 402
403 403 * Added methods of :class:`~IPython.core.interactiveshell.InteractiveShell` to
404 404 help it cleanup after itself. The :meth:`cleanup` method controls this. We
405 405 couldn't do this in :meth:`__del__` because we have cycles in our object
406 406 graph that prevent it from being called.
407 407
408 408 * Created a new module :mod:`IPython.utils.importstring` for resolving
409 409 strings like ``foo.bar.Bar`` to the actual class.
410 410
411 411 * Completely refactored the :mod:`IPython.core.prefilter` module into
412 412 :class:`~IPython.config.configurable.Configurable` subclasses. Added a new
413 413 layer into the prefilter system, called "transformations" that all new
414 414 prefilter logic should use (rather than the older "checker/handler"
415 415 approach).
416 416
417 417 * Aliases are now components (:mod:`IPython.core.alias`).
418 418
419 419 * New top level :func:`~IPython.frontend.terminal.embed.embed` function that can
420 420 be called to embed IPython at any place in user's code. On the first call it
421 421 will create an :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`
422 422 instance and call it. In later calls, it just calls the previously created
423 423 :class:`~IPython.frontend.terminal.embed.InteractiveShellEmbed`.
424 424
425 425 * Created a configuration system (:mod:`IPython.config.configurable`) that is
426 426 based on :mod:`IPython.utils.traitlets`. Configurables are arranged into a
427 427 runtime containment tree (not inheritance) that i) automatically propagates
428 428 configuration information and ii) allows singletons to discover each other in
429 429 a loosely coupled manner. In the future all parts of IPython will be
430 430 subclasses of :class:`~IPython.config.configurable.Configurable`. All IPython
431 431 developers should become familiar with the config system.
432 432
433 433 * Created a new :class:`~IPython.config.loader.Config` for holding
434 434 configuration information. This is a dict like class with a few extras: i)
435 435 it supports attribute style access, ii) it has a merge function that merges
436 436 two :class:`~IPython.config.loader.Config` instances recursively and iii) it
437 437 will automatically create sub-:class:`~IPython.config.loader.Config`
438 438 instances for attributes that start with an uppercase character.
439 439
440 440 * Created new configuration loaders in :mod:`IPython.config.loader`. These
441 441 loaders provide a unified loading interface for all configuration
442 442 information including command line arguments and configuration files. We
443 443 have two default implementations based on :mod:`argparse` and plain python
444 444 files. These are used to implement the new configuration system.
445 445
446 446 * Created a top-level :class:`Application` class in
447 447 :mod:`IPython.core.application` that is designed to encapsulate the starting
448 448 of any basic Python program. An application loads and merges all the
449 449 configuration objects, constructs the main application, configures and
450 450 initiates logging, and creates and configures any :class:`Configurable`
451 451 instances and then starts the application running. An extended
452 452 :class:`BaseIPythonApplication` class adds logic for handling the
453 453 IPython directory as well as profiles, and all IPython entry points
454 454 extend it.
455 455
456 456 * The :class:`Type` and :class:`Instance` traitlets now handle classes given
457 457 as strings, like ``foo.bar.Bar``. This is needed for forward declarations.
458 458 But, this was implemented in a careful way so that string to class
459 459 resolution is done at a single point, when the parent
460 460 :class:`~IPython.utils.traitlets.HasTraitlets` is instantiated.
461 461
462 462 * :mod:`IPython.utils.ipstruct` has been refactored to be a subclass of
463 463 dict. It also now has full docstrings and doctests.
464 464
465 465 * Created a Traits like implementation in :mod:`IPython.utils.traitlets`. This
466 466 is a pure Python, lightweight version of a library that is similar to
467 467 Enthought's Traits project, but has no dependencies on Enthought's code. We
468 468 are using this for validation, defaults and notification in our new component
469 469 system. Although it is not 100% API compatible with Enthought's Traits, we
470 470 plan on moving in this direction so that eventually our implementation could
471 471 be replaced by a (yet to exist) pure Python version of Enthought Traits.
472 472
473 473 * Added a new module :mod:`IPython.lib.inputhook` to manage the integration
474 474 with GUI event loops using `PyOS_InputHook`. See the docstrings in this
475 475 module or the main IPython docs for details.
476 476
477 477 * For users, GUI event loop integration is now handled through the new
478 478 :command:`%gui` magic command. Type ``%gui?`` at an IPython prompt for
479 479 documentation.
480 480
481 481 * For developers :mod:`IPython.lib.inputhook` provides a simple interface
482 482 for managing the event loops in their interactive GUI applications.
483 483 Examples can be found in our :file:`docs/examples/lib` directory.
484 484
485 485 Backwards incompatible changes
486 486 ------------------------------
487 487
488 488 * The Twisted-based :mod:`IPython.kernel` has been removed, and completely
489 489 rewritten as :mod:`IPython.parallel`, using ZeroMQ.
490 490
491 491 * Profiles are now directories. Instead of a profile being a single config file,
492 492 profiles are now self-contained directories. By default, profiles get their
493 493 own IPython history, log files, and everything. To create a new profile, do
494 494 ``ipython profile create <name>``.
495 495
496 496 * All IPython applications have been rewritten to use
497 497 :class:`~IPython.config.loader.KeyValueConfigLoader`. This means that
498 498 command-line options have changed. Now, all configurable values are accessible
499 499 from the command-line with the same syntax as in a configuration file.
500 500
501 501 * The command line options ``-wthread``, ``-qthread`` and
502 502 ``-gthread`` have been removed. Use ``--gui=wx``, ``--gui=qt``, ``--gui=gtk``
503 503 instead.
504 504
505 505 * The extension loading functions have been renamed to
506 506 :func:`load_ipython_extension` and :func:`unload_ipython_extension`.
507 507
508 508 * :class:`~IPython.core.interactiveshell.InteractiveShell` no longer takes an
509 509 ``embedded`` argument. Instead just use the
510 510 :class:`~IPython.core.interactiveshell.InteractiveShellEmbed` class.
511 511
512 512 * ``__IPYTHON__`` is no longer injected into ``__builtin__``.
513 513
514 514 * :meth:`Struct.__init__` no longer takes `None` as its first argument. It
515 515 must be a :class:`dict` or :class:`Struct`.
516 516
517 517 * :meth:`~IPython.core.interactiveshell.InteractiveShell.ipmagic` has been
518 518 renamed :meth:`~IPython.core.interactiveshell.InteractiveShell.magic.`
519 519
520 520 * The functions :func:`ipmagic` and :func:`ipalias` have been removed from
521 521 :mod:`__builtins__`.
522 522
523 523 * The references to the global
524 524 :class:`~IPython.core.interactivehell.InteractiveShell` instance (``_ip``, and
525 525 ``__IP``) have been removed from the user's namespace. They are replaced by a
526 526 new function called :func:`get_ipython` that returns the current
527 527 :class:`~IPython.core.interactiveshell.InteractiveShell` instance. This
528 528 function is injected into the user's namespace and is now the main way of
529 529 accessing the running IPython.
530 530
531 531 * Old style configuration files :file:`ipythonrc` and :file:`ipy_user_conf.py`
532 532 are no longer supported. Users should migrate there configuration files to
533 533 the new format described :ref:`here <config_overview>` and :ref:`here
534 534 <configuring_ipython>`.
535 535
536 536 * The old IPython extension API that relied on :func:`ipapi` has been
537 537 completely removed. The new extension API is described :ref:`here
538 538 <configuring_ipython>`.
539 539
540 540 * Support for ``qt3`` has been dropped. Users who need this should use
541 541 previous versions of IPython.
542 542
543 543 * Removed :mod:`shellglobals` as it was obsolete.
544 544
545 545 * Removed all the threaded shells in :mod:`IPython.core.shell`. These are no
546 546 longer needed because of the new capabilities in
547 547 :mod:`IPython.lib.inputhook`.
548 548
549 549 * New top-level sub-packages have been created: :mod:`IPython.core`,
550 550 :mod:`IPython.lib`, :mod:`IPython.utils`, :mod:`IPython.deathrow`,
551 551 :mod:`IPython.quarantine`. All existing top-level modules have been
552 552 moved to appropriate sub-packages. All internal import statements
553 553 have been updated and tests have been added. The build system (setup.py
554 554 and friends) have been updated. See :ref:`this section <module_reorg>` of the
555 555 documentation for descriptions of these new sub-packages.
556 556
557 557 * :mod:`IPython.ipapi` has been moved to :mod:`IPython.core.ipapi`.
558 558 :mod:`IPython.Shell` and :mod:`IPython.iplib` have been split and removed as
559 559 part of the refactor.
560 560
561 561 * :mod:`Extensions` has been moved to :mod:`extensions` and all existing
562 562 extensions have been moved to either :mod:`IPython.quarantine` or
563 563 :mod:`IPython.deathrow`. :mod:`IPython.quarantine` contains modules that we
564 564 plan on keeping but that need to be updated. :mod:`IPython.deathrow` contains
565 565 modules that are either dead or that should be maintained as third party
566 566 libraries. More details about this can be found :ref:`here <module_reorg>`.
567 567
568 568 * Previous IPython GUIs in :mod:`IPython.frontend` and :mod:`IPython.gui` are
569 569 likely broken, and have been removed to :mod:`IPython.deathrow` because of the
570 570 refactoring in the core. With proper updates, these should still work.
571 571
572 572
573 573 Known Regressions
574 574 -----------------
575 575
576 576 We do our best to improve IPython, but there are some known regressions in 0.11
577 577 relative to 0.10.2. First of all, there are features that have yet to be
578 578 ported to the new APIs, and in order to ensure that all of the installed code
579 579 runs for our users, we have moved them to two separate directories in the
580 580 source distribution, `quarantine` and `deathrow`. Finally, we have some other
581 581 miscellaneous regressions that we hope to fix as soon as possible. We now
582 582 describe all of these in more detail.
583 583
584 584 Quarantine
585 585 ~~~~~~~~~~
586 586
587 587 These are tools and extensions that we consider relatively easy to update to
588 588 the new classes and APIs, but that we simply haven't had time for. Any user
589 589 who is interested in one of these is encouraged to help us by porting it and
590 590 submitting a pull request on our `development site`_.
591 591
592 592 .. _development site:: http://github.com/ipython/ipython
593 593
594 594 Currently, the quarantine directory contains::
595 595
596 596 clearcmd.py ipy_fsops.py ipy_signals.py
597 597 envpersist.py ipy_gnuglobal.py ipy_synchronize_with.py
598 598 ext_rescapture.py ipy_greedycompleter.py ipy_system_conf.py
599 599 InterpreterExec.py ipy_jot.py ipy_which.py
600 600 ipy_app_completers.py ipy_lookfor.py ipy_winpdb.py
601 601 ipy_autoreload.py ipy_profile_doctest.py ipy_workdir.py
602 602 ipy_completers.py ipy_pydb.py jobctrl.py
603 603 ipy_editors.py ipy_rehashdir.py ledit.py
604 604 ipy_exportdb.py ipy_render.py pspersistence.py
605 605 ipy_extutil.py ipy_server.py win32clip.py
606 606
607 607 Deathrow
608 608 ~~~~~~~~
609 609
610 610 These packages may be harder to update or make most sense as third-party
611 611 libraries. Some of them are completely obsolete and have been already replaced
612 612 by better functionality (we simply haven't had the time to carefully weed them
613 613 out so they are kept here for now). Others simply require fixes to code that
614 614 the current core team may not be familiar with. If a tool you were used to is
615 615 included here, we encourage you to contact the dev list and we can discuss
616 616 whether it makes sense to keep it in IPython (if it can be maintained).
617 617
618 618 Currently, the deathrow directory contains::
619 619
620 620 astyle.py ipy_defaults.py ipy_vimserver.py
621 621 dtutils.py ipy_kitcfg.py numeric_formats.py
622 622 Gnuplot2.py ipy_legacy.py numutils.py
623 623 GnuplotInteractive.py ipy_p4.py outputtrap.py
624 624 GnuplotRuntime.py ipy_profile_none.py PhysicalQInput.py
625 625 ibrowse.py ipy_profile_numpy.py PhysicalQInteractive.py
626 626 igrid.py ipy_profile_scipy.py quitter.py*
627 627 ipipe.py ipy_profile_sh.py scitedirector.py
628 628 iplib.py ipy_profile_zope.py Shell.py
629 629 ipy_constants.py ipy_traits_completer.py twshell.py
630 630
631 631
632 632 Other regressions
633 633 ~~~~~~~~~~~~~~~~~
634 634
635 635 * The machinery that adds functionality to the 'sh' profile for using IPython
636 636 as your system shell has not been updated to use the new APIs. As a result,
637 637 only the aesthetic (prompt) changes are still implemented. We intend to fix
638 638 this by 0.12. Tracked as issue 547_.
639 639
640 640 .. _547: https://github.com/ipython/ipython/issues/547
641 641
642 642 * The installation of scripts on Windows was broken without setuptools, so we
643 643 now depend on setuptools on Windows. We hope to fix setuptools-less
644 644 installation, and then remove the setuptools dependency. Issue 539_.
645 645
646 646 .. _539: https://github.com/ipython/ipython/issues/539
647 647
648 648 * The directory history `_dh` is not saved between sessions. Issue 634_.
649 649
650 650 .. _634: https://github.com/ipython/ipython/issues/634
651 651
652 652
653 653 Removed Features
654 654 ----------------
655 655
656 656 As part of the updating of IPython, we have removed a few features for the
657 657 purpsoes of cleaning up the codebase and interfaces. These removals are
658 658 permanent, but for any item listed below, equivalent functionality is
659 659 available.
660 660
661 661 * The magics Exit and Quit have been dropped as ways to exit IPython. Instead,
662 662 the lowercase forms of both work either as a bare name (``exit``) or a
663 663 function call (``exit()``). You can assign these to other names using
664 664 exec_lines in the config file.
665 665
666 666
667 667 .. _credits_011::
668 668
669 669 Credits
670 670 -------
671 671
672 672 Many users and developers contributed code, features, bug reports and ideas to
673 673 this release. Please do not hesitate in contacting us if we've failed to
674 674 acknowledge your contribution here. In particular, for this release we have
675 675 contribution from the following people, a mix of new and regular names (in
676 676 alphabetical order by first name):
677 677
678 678 * Aenugu Sai Kiran Reddy <saikrn08-at-gmail.com>
679 679 * andy wilson <wilson.andrew.j+github-at-gmail.com>
680 680 * Antonio Cuni <antocuni>
681 681 * Barry Wark <barrywark-at-gmail.com>
682 682 * Beetoju Anuradha <anu.beethoju-at-gmail.com>
683 683 * Benjamin Ragan-Kelley <minrk-at-Mercury.local>
684 684 * Brad Reisfeld
685 685 * Brian E. Granger <ellisonbg-at-gmail.com>
686 686 * Christoph Gohlke <cgohlke-at-uci.edu>
687 687 * Cody Precord
688 688 * dan.milstein
689 689 * Darren Dale <dsdale24-at-gmail.com>
690 690 * Dav Clark <davclark-at-berkeley.edu>
691 691 * David Warde-Farley <wardefar-at-iro.umontreal.ca>
692 692 * epatters <ejpatters-at-gmail.com>
693 693 * epatters <epatters-at-caltech.edu>
694 694 * epatters <epatters-at-enthought.com>
695 695 * Eric Firing <efiring-at-hawaii.edu>
696 696 * Erik Tollerud <erik.tollerud-at-gmail.com>
697 697 * Evan Patterson <epatters-at-enthought.com>
698 698 * Fernando Perez <Fernando.Perez-at-berkeley.edu>
699 699 * Gael Varoquaux <gael.varoquaux-at-normalesup.org>
700 700 * Gerardo <muzgash-at-Muzpelheim>
701 701 * Jason Grout <jason.grout-at-drake.edu>
702 702 * John Hunter <jdh2358-at-gmail.com>
703 703 * Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>
704 704 * Johann Cohen-Tanugi <johann.cohentanugi-at-gmail.com>
705 705 * JΓΆrgen Stenarson <jorgen.stenarson-at-bostream.nu>
706 706 * Justin Riley <justin.t.riley-at-gmail.com>
707 707 * Kiorky
708 708 * Laurent Dufrechou <laurent.dufrechou-at-gmail.com>
709 709 * Luis Pedro Coelho <lpc-at-cmu.edu>
710 710 * Mani chandra <mchandra-at-iitk.ac.in>
711 711 * Mark E. Smith
712 712 * Mark Voorhies <mark.voorhies-at-ucsf.edu>
713 713 * Martin Spacek <git-at-mspacek.mm.st>
714 714 * Michael Droettboom <mdroe-at-stsci.edu>
715 715 * MinRK <benjaminrk-at-gmail.com>
716 716 * muzuiget <muzuiget-at-gmail.com>
717 717 * Nick Tarleton <nick-at-quixey.com>
718 718 * Nicolas Rougier <Nicolas.rougier-at-inria.fr>
719 719 * Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>
720 720 * Paul Ivanov <pivanov314-at-gmail.com>
721 721 * Pauli Virtanen <pauli.virtanen-at-iki.fi>
722 722 * Prabhu Ramachandran
723 723 * Ramana <sramana9-at-gmail.com>
724 724 * Robert Kern <robert.kern-at-gmail.com>
725 725 * Sathesh Chandra <satheshchandra88-at-gmail.com>
726 726 * Satrajit Ghosh <satra-at-mit.edu>
727 727 * Sebastian Busch
728 728 * Skipper Seabold <jsseabold-at-gmail.com>
729 729 * Stefan van der Walt <bzr-at-mentat.za.net>
730 730 * Stephan Peijnik <debian-at-sp.or.at>
731 731 * Steven Bethard
732 732 * Thomas Kluyver <takowl-at-gmail.com>
733 733 * Thomas Spura <tomspur-at-fedoraproject.org>
734 734 * Tom Fetherston <tfetherston-at-aol.com>
735 735 * Tom MacWright
736 736 * tzanko
737 737 * vankayala sowjanya <hai.sowjanya-at-gmail.com>
738 738 * Vivian De Smedt <vds2212-at-VIVIAN>
739 739 * Ville M. Vainio <vivainio-at-gmail.com>
740 740 * Vishal Vatsa <vishal.vatsa-at-gmail.com>
741 741 * Vishnu S G <sgvishnu777-at-gmail.com>
742 742 * Walter Doerwald <walter-at-livinglogic.de>
743 743
744 744 .. note::
745 745
746 746 This list was generated with the output of
747 747 ``git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``
748 748 after some cleanup. If you should be on this list, please add yourself.
749 749
750 750
751 751 .. _issues_list_011:
752 752
753 753 Closed issues
754 754 =============
755 755
756 756 .. include:: github-stats-011.txt
General Comments 0
You need to be logged in to leave comments. Login now