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