##// END OF EJS Templates
Add 0.10.1 release notes to docs and minor tool updates....
Fernando Perez -
Show More
@@ -1,223 +1,318 b''
1 ========================================
1 =============
2 0.10 series
2 0.10 series
3 ========================================
3 =============
4
5 Release 0.10.1
6 ==============
7
8 IPython 0.10.1 was released October 11, 2010, over a year after version 0.10.
9 This is mostly a bugfix release, since after version 0.10 was released, the
10 development team's energy has been focused on the 0.11 series. We have
11 nonetheless tried to backport what fixes we could into 0.10.1, as it remains
12 the stable series that many users have in production systems they rely on.
13
14 Since the 0.11 series changes many APIs in backwards-incompatible ways, we are
15 willing to continue maintaining the 0.10.x series. We don't really have time
16 to actively write new code for 0.10.x, but we are happy to accept patches and
17 pull requests on the IPython `github site`_. If sufficient contributions are
18 made that improve 0.10.1, we will roll them into future releases. For this
19 purpose, we will have a branch called 0.10.2 on github, on which you can base
20 your contributions.
21
22 .. _github site: http://github.com/ipython
23
24 For this release, we applied approximately 60 commits totaling a diff of over
25 7000 lines::
26
27 (0.10.1)amirbar[dist]> git diff --oneline rel-0.10.. | wc -l
28 7296
29
30 Highlights of this release:
31
32 - The only significant new feature is that IPython's parallel computing
33 machinery now supports natively the Sun Grid Engine and LSF schedulers. This
34 work was a joint contribution from Justin Riley, Satra Ghosh and Matthieu
35 Brucher, who put a lot of work into it. We also improved traceback handling
36 in remote tasks, as well as providing better control for remote task IDs.
37
38 - New IPython Sphinx directive. You can use this directive to mark blocks in
39 reSructuredText documents as containig IPython syntax (including figures) and
40 the will be executed during the build::
41
42 .. ipython::
43
44 In [2]: plt.figure() # ensure a fresh figure
45
46 @savefig psimple.png width=4in
47 In [3]: plt.plot([1,2,3])
48 Out[3]: [<matplotlib.lines.Line2D object at 0x9b74d8c>]
49
50 - Various fixes to the standalone ipython-wx application.
51
52 - We now ship internally the excellent argparse library, graciously licensed
53 under BSD terms by Steven Bethard. Now (2010) that argparse has become part
54 of Python 2.7 this will be less of an issue, but Steven's relicensing allowed
55 us to start updating IPython to using argparse well before Python 2.7. Many
56 thanks!
57
58 - Robustness improvements so that IPython doesn't crash if the readline library
59 is absent (though obviously a lot of functionality that requires readline
60 will not be available).
61
62 - Improvements to tab completion in Emacs with Python 2.6.
63
64 - Logging now supports timestamps (see ``%logstart?`` for full details).
65
66 - A long-standing and quite annoying bug where parentheses would be added to
67 ``print`` statements, under Python 2.5 and 2.6, was finally fixed.
68
69 - Improved handling of libreadline on Apple OSX.
70
71 - Fix ``reload`` method of IPython demos, which was broken.
72
73 - Fixes for the ipipe/ibrowse system on OSX.
74
75 - Fixes for Zope profile.
76
77 - Fix %timeit reporting when the time is longer than 1000s.
78
79 - Avoid lockups with ? or ?? in SunOS, due to a bug in termios.
80
81 - The usual assortment of miscellaneous bug fixes and small improvements.
82
83 The following people contributed to this release (please let us know if we
84 omitted your name and we'll gladly fix this in the notes for the future):
85
86 * Beni Cherniavsky
87 * Boyd Waters.
88 * David Warde-Farley
89 * Fernando Perez
90 * GΓΆkhan Sever
91 * Justin Riley
92 * Kiorky
93 * Laurent Dufrechou
94 * Mark E. Smith
95 * Matthieu Brucher
96 * Satrajit Ghosh
97 * Sebastian Busch
98 * VΓ‘clav Ε milauer
4
99
5 Release 0.10
100 Release 0.10
6 ============
101 ============
7
102
8 This release brings months of slow but steady development, and will be the last
103 This release brings months of slow but steady development, and will be the last
9 before a major restructuring and cleanup of IPython's internals that is already
104 before a major restructuring and cleanup of IPython's internals that is already
10 under way. For this reason, we hope that 0.10 will be a stable and robust
105 under way. For this reason, we hope that 0.10 will be a stable and robust
11 release so that while users adapt to some of the API changes that will come
106 release so that while users adapt to some of the API changes that will come
12 with the refactoring that will become IPython 0.11, they can safely use 0.10 in
107 with the refactoring that will become IPython 0.11, they can safely use 0.10 in
13 all existing projects with minimal changes (if any).
108 all existing projects with minimal changes (if any).
14
109
15 IPython 0.10 is now a medium-sized project, with roughly (as reported by David
110 IPython 0.10 is now a medium-sized project, with roughly (as reported by David
16 Wheeler's :command:`sloccount` utility) 40750 lines of Python code, and a diff
111 Wheeler's :command:`sloccount` utility) 40750 lines of Python code, and a diff
17 between 0.9.1 and this release that contains almost 28000 lines of code and
112 between 0.9.1 and this release that contains almost 28000 lines of code and
18 documentation. Our documentation, in PDF format, is a 495-page long PDF
113 documentation. Our documentation, in PDF format, is a 495-page long PDF
19 document (also available in HTML format, both generated from the same sources).
114 document (also available in HTML format, both generated from the same sources).
20
115
21 Many users and developers contributed code, features, bug reports and ideas to
116 Many users and developers contributed code, features, bug reports and ideas to
22 this release. Please do not hesitate in contacting us if we've failed to
117 this release. Please do not hesitate in contacting us if we've failed to
23 acknowledge your contribution here. In particular, for this release we have
118 acknowledge your contribution here. In particular, for this release we have
24 contribution from the following people, a mix of new and regular names (in
119 contribution from the following people, a mix of new and regular names (in
25 alphabetical order by first name):
120 alphabetical order by first name):
26
121
27 * Alexander Clausen: fix #341726.
122 * Alexander Clausen: fix #341726.
28 * Brian Granger: lots of work everywhere (features, bug fixes, etc).
123 * Brian Granger: lots of work everywhere (features, bug fixes, etc).
29 * Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.
124 * Daniel Ashbrook: bug report on MemoryError during compilation, now fixed.
30 * Darren Dale: improvements to documentation build system, feedback, design
125 * Darren Dale: improvements to documentation build system, feedback, design
31 ideas.
126 ideas.
32 * Fernando Perez: various places.
127 * Fernando Perez: various places.
33 * GaΓ«l Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...
128 * GaΓ«l Varoquaux: core code, ipythonx GUI, design discussions, etc. Lots...
34 * John Hunter: suggestions, bug fixes, feedback.
129 * John Hunter: suggestions, bug fixes, feedback.
35 * Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.
130 * Jorgen Stenarson: work on many fronts, tests, fixes, win32 support, etc.
36 * Laurent DufrΓ©chou: many improvements to ipython-wx standalone app.
131 * Laurent DufrΓ©chou: many improvements to ipython-wx standalone app.
37 * Lukasz Pankowski: prefilter, `%edit`, demo improvements.
132 * Lukasz Pankowski: prefilter, `%edit`, demo improvements.
38 * Matt Foster: TextMate support in `%edit`.
133 * Matt Foster: TextMate support in `%edit`.
39 * Nathaniel Smith: fix #237073.
134 * Nathaniel Smith: fix #237073.
40 * Pauli Virtanen: fixes and improvements to extensions, documentation.
135 * Pauli Virtanen: fixes and improvements to extensions, documentation.
41 * Prabhu Ramachandran: improvements to `%timeit`.
136 * Prabhu Ramachandran: improvements to `%timeit`.
42 * Robert Kern: several extensions.
137 * Robert Kern: several extensions.
43 * Sameer D'Costa: help on critical bug #269966.
138 * Sameer D'Costa: help on critical bug #269966.
44 * Stephan Peijnik: feedback on Debian compliance and many man pages.
139 * Stephan Peijnik: feedback on Debian compliance and many man pages.
45 * Steven Bethard: we are now shipping his :mod:`argparse` module.
140 * Steven Bethard: we are now shipping his :mod:`argparse` module.
46 * Tom Fetherston: many improvements to :mod:`IPython.demo` module.
141 * Tom Fetherston: many improvements to :mod:`IPython.demo` module.
47 * Ville Vainio: lots of work everywhere (features, bug fixes, etc).
142 * Ville Vainio: lots of work everywhere (features, bug fixes, etc).
48 * Vishal Vasta: ssh support in ipcluster.
143 * Vishal Vasta: ssh support in ipcluster.
49 * Walter Doerwald: work on the :mod:`IPython.ipipe` system.
144 * Walter Doerwald: work on the :mod:`IPython.ipipe` system.
50
145
51 Below we give an overview of new features, bug fixes and backwards-incompatible
146 Below we give an overview of new features, bug fixes and backwards-incompatible
52 changes. For a detailed account of every change made, feel free to view the
147 changes. For a detailed account of every change made, feel free to view the
53 project log with :command:`bzr log`.
148 project log with :command:`bzr log`.
54
149
55 New features
150 New features
56 ------------
151 ------------
57
152
58 * New `%paste` magic automatically extracts current contents of clipboard and
153 * New `%paste` magic automatically extracts current contents of clipboard and
59 pastes it directly, while correctly handling code that is indented or
154 pastes it directly, while correctly handling code that is indented or
60 prepended with `>>>` or `...` python prompt markers. A very useful new
155 prepended with `>>>` or `...` python prompt markers. A very useful new
61 feature contributed by Robert Kern.
156 feature contributed by Robert Kern.
62
157
63 * IPython 'demos', created with the :mod:`IPython.demo` module, can now be
158 * IPython 'demos', created with the :mod:`IPython.demo` module, can now be
64 created from files on disk or strings in memory. Other fixes and
159 created from files on disk or strings in memory. Other fixes and
65 improvements to the demo system, by Tom Fetherston.
160 improvements to the demo system, by Tom Fetherston.
66
161
67 * Added :func:`find_cmd` function to :mod:`IPython.platutils` module, to find
162 * Added :func:`find_cmd` function to :mod:`IPython.platutils` module, to find
68 commands in a cross-platform manner.
163 commands in a cross-platform manner.
69
164
70 * Many improvements and fixes to GaΓ«l Varoquaux's :command:`ipythonx`, a
165 * Many improvements and fixes to GaΓ«l Varoquaux's :command:`ipythonx`, a
71 WX-based lightweight IPython instance that can be easily embedded in other WX
166 WX-based lightweight IPython instance that can be easily embedded in other WX
72 applications. These improvements have made it possible to now have an
167 applications. These improvements have made it possible to now have an
73 embedded IPython in Mayavi and other tools.
168 embedded IPython in Mayavi and other tools.
74
169
75 * :class:`MultiengineClient` objects now have a :meth:`benchmark` method.
170 * :class:`MultiengineClient` objects now have a :meth:`benchmark` method.
76
171
77 * The manual now includes a full set of auto-generated API documents from the
172 * The manual now includes a full set of auto-generated API documents from the
78 code sources, using Sphinx and some of our own support code. We are now
173 code sources, using Sphinx and some of our own support code. We are now
79 using the `Numpy Documentation Standard`_ for all docstrings, and we have
174 using the `Numpy Documentation Standard`_ for all docstrings, and we have
80 tried to update as many existing ones as possible to this format.
175 tried to update as many existing ones as possible to this format.
81
176
82 * The new :mod:`IPython.Extensions.ipy_pretty` extension by Robert Kern
177 * The new :mod:`IPython.Extensions.ipy_pretty` extension by Robert Kern
83 provides configurable pretty-printing.
178 provides configurable pretty-printing.
84
179
85 * Many improvements to the :command:`ipython-wx` standalone WX-based IPython
180 * Many improvements to the :command:`ipython-wx` standalone WX-based IPython
86 application by Laurent DufrΓ©chou. It can optionally run in a thread, and
181 application by Laurent DufrΓ©chou. It can optionally run in a thread, and
87 this can be toggled at runtime (allowing the loading of Matplotlib in a
182 this can be toggled at runtime (allowing the loading of Matplotlib in a
88 running session without ill effects).
183 running session without ill effects).
89
184
90 * IPython includes a copy of Steven Bethard's argparse_ in the
185 * IPython includes a copy of Steven Bethard's argparse_ in the
91 :mod:`IPython.external` package, so we can use it internally and it is also
186 :mod:`IPython.external` package, so we can use it internally and it is also
92 available to any IPython user. By installing it in this manner, we ensure
187 available to any IPython user. By installing it in this manner, we ensure
93 zero conflicts with any system-wide installation you may already have while
188 zero conflicts with any system-wide installation you may already have while
94 minimizing external dependencies for new users. In IPython 0.10, We ship
189 minimizing external dependencies for new users. In IPython 0.10, We ship
95 argparse version 1.0.
190 argparse version 1.0.
96
191
97 * An improved and much more robust test suite, that runs groups of tests in
192 * An improved and much more robust test suite, that runs groups of tests in
98 separate subprocesses using either Nose or Twisted's :command:`trial` runner
193 separate subprocesses using either Nose or Twisted's :command:`trial` runner
99 to ensure proper management of Twisted-using code. The test suite degrades
194 to ensure proper management of Twisted-using code. The test suite degrades
100 gracefully if optional dependencies are not available, so that the
195 gracefully if optional dependencies are not available, so that the
101 :command:`iptest` command can be run with only Nose installed and nothing
196 :command:`iptest` command can be run with only Nose installed and nothing
102 else. We also have more and cleaner test decorators to better select tests
197 else. We also have more and cleaner test decorators to better select tests
103 depending on runtime conditions, do setup/teardown, etc.
198 depending on runtime conditions, do setup/teardown, etc.
104
199
105 * The new ipcluster now has a fully working ssh mode that should work on
200 * The new ipcluster now has a fully working ssh mode that should work on
106 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
201 Linux, Unix and OS X. Thanks to Vishal Vatsa for implementing this!
107
202
108 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
203 * The wonderful TextMate editor can now be used with %edit on OS X. Thanks
109 to Matt Foster for this patch.
204 to Matt Foster for this patch.
110
205
111 * The documentation regarding parallel uses of IPython, including MPI and PBS,
206 * The documentation regarding parallel uses of IPython, including MPI and PBS,
112 has been significantly updated and improved.
207 has been significantly updated and improved.
113
208
114 * The developer guidelines in the documentation have been updated to explain
209 * The developer guidelines in the documentation have been updated to explain
115 our workflow using :command:`bzr` and Launchpad.
210 our workflow using :command:`bzr` and Launchpad.
116
211
117 * Fully refactored :command:`ipcluster` command line program for starting
212 * Fully refactored :command:`ipcluster` command line program for starting
118 IPython clusters. This new version is a complete rewrite and 1) is fully
213 IPython clusters. This new version is a complete rewrite and 1) is fully
119 cross platform (we now use Twisted's process management), 2) has much
214 cross platform (we now use Twisted's process management), 2) has much
120 improved performance, 3) uses subcommands for different types of clusters, 4)
215 improved performance, 3) uses subcommands for different types of clusters, 4)
121 uses argparse for parsing command line options, 5) has better support for
216 uses argparse for parsing command line options, 5) has better support for
122 starting clusters using :command:`mpirun`, 6) has experimental support for
217 starting clusters using :command:`mpirun`, 6) has experimental support for
123 starting engines using PBS. It can also reuse FURL files, by appropriately
218 starting engines using PBS. It can also reuse FURL files, by appropriately
124 passing options to its subcommands. However, this new version of ipcluster
219 passing options to its subcommands. However, this new version of ipcluster
125 should be considered a technology preview. We plan on changing the API in
220 should be considered a technology preview. We plan on changing the API in
126 significant ways before it is final.
221 significant ways before it is final.
127
222
128 * Full description of the security model added to the docs.
223 * Full description of the security model added to the docs.
129
224
130 * cd completer: show bookmarks if no other completions are available.
225 * cd completer: show bookmarks if no other completions are available.
131
226
132 * sh profile: easy way to give 'title' to prompt: assign to variable
227 * sh profile: easy way to give 'title' to prompt: assign to variable
133 '_prompt_title'. It looks like this::
228 '_prompt_title'. It looks like this::
134
229
135 [~]|1> _prompt_title = 'sudo!'
230 [~]|1> _prompt_title = 'sudo!'
136 sudo![~]|2>
231 sudo![~]|2>
137
232
138 * %edit: If you do '%edit pasted_block', pasted_block variable gets updated
233 * %edit: If you do '%edit pasted_block', pasted_block variable gets updated
139 with new data (so repeated editing makes sense)
234 with new data (so repeated editing makes sense)
140
235
141 .. _Numpy Documentation Standard: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard
236 .. _Numpy Documentation Standard: http://projects.scipy.org/numpy/wiki/CodingStyleGuidelines#docstring-standard
142
237
143 .. _argparse: http://code.google.com/p/argparse/
238 .. _argparse: http://code.google.com/p/argparse/
144
239
145 Bug fixes
240 Bug fixes
146 ---------
241 ---------
147
242
148 * Fix #368719, removed top-level debian/ directory to make the job of Debian
243 * Fix #368719, removed top-level debian/ directory to make the job of Debian
149 packagers easier.
244 packagers easier.
150
245
151 * Fix #291143 by including man pages contributed by Stephan Peijnik from the
246 * Fix #291143 by including man pages contributed by Stephan Peijnik from the
152 Debian project.
247 Debian project.
153
248
154 * Fix #358202, effectively a race condition, by properly synchronizing file
249 * Fix #358202, effectively a race condition, by properly synchronizing file
155 creation at cluster startup time.
250 creation at cluster startup time.
156
251
157 * `%timeit` now handles correctly functions that take a long time to execute
252 * `%timeit` now handles correctly functions that take a long time to execute
158 even the first time, by not repeating them.
253 even the first time, by not repeating them.
159
254
160 * Fix #239054, releasing of references after exiting.
255 * Fix #239054, releasing of references after exiting.
161
256
162 * Fix #341726, thanks to Alexander Clausen.
257 * Fix #341726, thanks to Alexander Clausen.
163
258
164 * Fix #269966. This long-standing and very difficult bug (which is actually a
259 * Fix #269966. This long-standing and very difficult bug (which is actually a
165 problem in Python itself) meant long-running sessions would inevitably grow
260 problem in Python itself) meant long-running sessions would inevitably grow
166 in memory size, often with catastrophic consequences if users had large
261 in memory size, often with catastrophic consequences if users had large
167 objects in their scripts. Now, using `%run` repeatedly should not cause any
262 objects in their scripts. Now, using `%run` repeatedly should not cause any
168 memory leaks. Special thanks to John Hunter and Sameer D'Costa for their
263 memory leaks. Special thanks to John Hunter and Sameer D'Costa for their
169 help with this bug.
264 help with this bug.
170
265
171 * Fix #295371, bug in `%history`.
266 * Fix #295371, bug in `%history`.
172
267
173 * Improved support for py2exe.
268 * Improved support for py2exe.
174
269
175 * Fix #270856: IPython hangs with PyGTK
270 * Fix #270856: IPython hangs with PyGTK
176
271
177 * Fix #270998: A magic with no docstring breaks the '%magic magic'
272 * Fix #270998: A magic with no docstring breaks the '%magic magic'
178
273
179 * fix #271684: -c startup commands screw up raw vs. native history
274 * fix #271684: -c startup commands screw up raw vs. native history
180
275
181 * Numerous bugs on Windows with the new ipcluster have been fixed.
276 * Numerous bugs on Windows with the new ipcluster have been fixed.
182
277
183 * The ipengine and ipcontroller scripts now handle missing furl files
278 * The ipengine and ipcontroller scripts now handle missing furl files
184 more gracefully by giving better error messages.
279 more gracefully by giving better error messages.
185
280
186 * %rehashx: Aliases no longer contain dots. python3.0 binary
281 * %rehashx: Aliases no longer contain dots. python3.0 binary
187 will create alias python30. Fixes:
282 will create alias python30. Fixes:
188 #259716 "commands with dots in them don't work"
283 #259716 "commands with dots in them don't work"
189
284
190 * %cpaste: %cpaste -r repeats the last pasted block.
285 * %cpaste: %cpaste -r repeats the last pasted block.
191 The block is assigned to pasted_block even if code
286 The block is assigned to pasted_block even if code
192 raises exception.
287 raises exception.
193
288
194 * Bug #274067 'The code in get_home_dir is broken for py2exe' was
289 * Bug #274067 'The code in get_home_dir is broken for py2exe' was
195 fixed.
290 fixed.
196
291
197 * Many other small bug fixes not listed here by number (see the bzr log for
292 * Many other small bug fixes not listed here by number (see the bzr log for
198 more info).
293 more info).
199
294
200 Backwards incompatible changes
295 Backwards incompatible changes
201 ------------------------------
296 ------------------------------
202
297
203 * `ipykit` and related files were unmaintained and have been removed.
298 * `ipykit` and related files were unmaintained and have been removed.
204
299
205 * The :func:`IPython.genutils.doctest_reload` does not actually call
300 * The :func:`IPython.genutils.doctest_reload` does not actually call
206 `reload(doctest)` anymore, as this was causing many problems with the test
301 `reload(doctest)` anymore, as this was causing many problems with the test
207 suite. It still resets `doctest.master` to None.
302 suite. It still resets `doctest.master` to None.
208
303
209 * While we have not deliberately broken Python 2.4 compatibility, only minor
304 * While we have not deliberately broken Python 2.4 compatibility, only minor
210 testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
305 testing was done with Python 2.4, while 2.5 and 2.6 were fully tested. But
211 if you encounter problems with 2.4, please do report them as bugs.
306 if you encounter problems with 2.4, please do report them as bugs.
212
307
213 * The :command:`ipcluster` now requires a mode argument; for example to start a
308 * The :command:`ipcluster` now requires a mode argument; for example to start a
214 cluster on the local machine with 4 engines, you must now type::
309 cluster on the local machine with 4 engines, you must now type::
215
310
216 $ ipcluster local -n 4
311 $ ipcluster local -n 4
217
312
218 * The controller now has a ``-r`` flag that needs to be used if you want to
313 * The controller now has a ``-r`` flag that needs to be used if you want to
219 reuse existing furl files. Otherwise they are deleted (the default).
314 reuse existing furl files. Otherwise they are deleted (the default).
220
315
221 * Remove ipy_leo.py. You can use :command:`easy_install ipython-extension` to
316 * Remove ipy_leo.py. You can use :command:`easy_install ipython-extension` to
222 get it. (done to decouple it from ipython release cycle)
317 get it. (done to decouple it from ipython release cycle)
223
318
@@ -1,34 +1,35 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 """IPython release build script.
2 """IPython release build script.
3 """
3 """
4 from toollib import *
4 from toollib import *
5
5
6 # Get main ipython dir, this will raise if it doesn't pass some checks
6 # Get main ipython dir, this will raise if it doesn't pass some checks
7 ipdir = get_ipdir()
7 ipdir = get_ipdir()
8 cd(ipdir)
8 cd(ipdir)
9
9
10 # Load release info
10 # Load release info
11 execfile(pjoin('IPython','core','release.py'))
11 execfile(pjoin('IPython','core','release.py'))
12
12
13 # Check that everything compiles
13 # Check that everything compiles
14 compile_tree()
14 compile_tree()
15
15
16 # Cleanup
16 # Cleanup
17 for d in ['build','dist',pjoin('docs','build'),pjoin('docs','dist')]:
17 for d in ['build','dist',pjoin('docs','build'),pjoin('docs','dist'),
18 pjoin('docs','source','api','generated')]:
18 if os.path.isdir(d):
19 if os.path.isdir(d):
19 remove_tree(d)
20 remove_tree(d)
20
21
21 # Build source and binary distros
22 # Build source and binary distros
22 c('./setup.py sdist --formats=gztar,zip')
23 c('./setup.py sdist --formats=gztar,zip')
23
24
24 # Build eggs
25 # Build eggs
25 c('python2.5 ./setupegg.py bdist_egg')
26 c('python2.6 ./setupegg.py bdist_egg')
26 c('python2.6 ./setupegg.py bdist_egg')
27
27
28 # Call the windows build separately, so that the extra Windows scripts don't
28 # Call the windows build separately, so that the extra Windows scripts don't
29 # get pulled into Unix builds (setup.py has code which checks for
29 # get pulled into Unix builds (setup.py has code which checks for
30 # bdist_wininst)
30 # bdist_wininst)
31 c("python setup.py bdist_wininst")
31 c("python setup.py bdist_wininst --install-script=ipython_win_post_install.py")
32
32
33 # Change name so retarded Vista runs the installer correctly
33 # Change name so retarded Vista runs the installer correctly
34 c("rename 's/linux-i686/win32-setup/' dist/*.exe")
34 c("rename 's/linux-i686/win32-setup/' dist/*.exe")
35 c("rename 's/linux-x86_64/win32-setup/' dist/*.exe")
@@ -1,23 +1,25 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 """Simple script to create a tarball with proper bzr version info.
2 """Simple script to create a tarball with proper git info.
3 """
3 """
4
4
5 import commands
5 import os
6 import os
6 import sys
7 import sys
7 import shutil
8 import shutil
8
9
9 from toollib import *
10 from toollib import *
10
11
11 c('python update_revnum.py')
12 tag = commands.getoutput('git describe')
13 base_name = 'ipython-%s' % tag
14 tar_name = '%s.tgz' % base_name
12
15
13 execfile('../IPython/core/release.py') # defines version_base
16 # git archive is weird: Even if I give it a specific path, it still won't
17 # archive the whole tree. It seems the only way to get the whole tree is to cd
18 # to the top of the tree. There are long threads (since 2007) on the git list
19 # about this and it still doesn't work in a sensible way...
14
20
15 ver = version_info()
21 start_dir = os.getcwd()
16
22 cd('..')
17 if ver['branch-nick'] == 'ipython':
23 git_tpl = 'git archive --format=tar --prefix={0}/ HEAD | gzip > {1}'
18 tarname = 'ipython-%s.bzr.r%s.tgz' % (version_base, ver['revno'])
24 c(git_tpl.format(base_name, tar_name))
19 else:
25 c('mv {0} tools/'.format(tar_name))
20 tarname = 'ipython-%s.bzr.r%s.%s.tgz' % (version_base, ver['revno'],
21 ver['branch-nick'])
22
23 c('bzr export ' + tarname)
@@ -1,44 +1,52 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 """IPython release script.
2 """IPython release script.
3
3
4 This should only be run at real release time.
4 This should only be run at real release time.
5 """
5 """
6
6
7 from toollib import *
7 from toollib import *
8
8
9 # Get main ipython dir, this will raise if it doesn't pass some checks
9 # Get main ipython dir, this will raise if it doesn't pass some checks
10 ipdir = get_ipdir()
10 ipdir = get_ipdir()
11 tooldir = pjoin(ipdir,'tools')
12 distdir = pjoin(ipdir,'dist')
13 # Where I keep static backups of each release
14 ipbackupdir = os.path.expanduser('~/ipython/backup')
15
16 # Start in main IPython dir
11 cd(ipdir)
17 cd(ipdir)
12
18
13 # Load release info
19 # Load release info
14 execfile(pjoin('IPython','core','release.py'))
20 execfile(pjoin('IPython','core','release.py'))
15
21
16 # Where I keep static backups of each release
17 ipbackupdir = os.path.expanduser('~/ipython/backup')
18
19 print
22 print
20 print "Releasing IPython version $version"
23 print "Releasing IPython"
21 print "=================================="
24 print "================="
25 print
26 print 'Source IPython directory:', ipdir
27 print
22
28
23 # Perform local backup
29 # Perform local backup, go to tools dir to run it.
30 cd(tooldir)
24 c('./make_tarball.py')
31 c('./make_tarball.py')
25 c('mv ipython-*.tgz %s' % ipbackupdir)
32 c('mv ipython-*.tgz %s' % ipbackupdir)
26
33
27 # Build release files
34 # Build release files
28 #c('./mkrel.py %s' % ipdir)
35 c('./build_release %s' % ipdir)
29 c('./build_release')
30
36
31 # Register with the Python Package Index (PyPI)
37 # Register with the Python Package Index (PyPI)
32 print "Registering with PyPI..."
38 print "Registering with PyPI..."
39 cd(ipdir)
33 c('./setup.py register')
40 c('./setup.py register')
34
41
35 # Upload all files
42 # Upload all files
36 cd('dist')
43 c('./setup.py sdist --formats=gztar,zip upload')
44 cd(distdir)
37 print "Uploading distribution files..."
45 print "Uploading distribution files..."
38 c('scp * ipython@ipython.scipy.org:www/dist/')
46 c('scp * ipython@ipython.scipy.org:www/dist/')
39
47
40 print "Uploading backup files..."
48 print "Uploading backup files..."
41 cd(ipbackupdir)
49 cd(ipbackupdir)
42 c('scp `ls -1tr *tgz | tail -1` ipython@ipython.scipy.org:www/backup/')
50 c('scp `ls -1tr *tgz | tail -1` ipython@ipython.scipy.org:www/backup/')
43
51
44 print "Done!"
52 print "Done!"
General Comments 0
You need to be logged in to leave comments. Login now