##// END OF EJS Templates
Merge updates for 0.9.rc1 release.
Fernando Perez -
r1597:43a326b1 merge
parent child Browse files
Show More
@@ -1,99 +1,99
1 1 # -*- coding: utf-8 -*-
2 2 """Release data for the IPython project.
3 3
4 4 $Id: Release.py 3002 2008-02-01 07:17:00Z fperez $"""
5 5
6 6 #*****************************************************************************
7 7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 8 #
9 9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
10 10 # <n8gray@caltech.edu>
11 11 #
12 12 # Distributed under the terms of the BSD License. The full license is in
13 13 # the file COPYING, distributed as part of this software.
14 14 #*****************************************************************************
15 15
16 16 # Name of the package for release purposes. This is the name which labels
17 17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
18 18 name = 'ipython'
19 19
20 20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
21 21 # the new substring. We have to avoid using either dashes or underscores,
22 22 # because bdist_rpm does not accept dashes (an RPM) convention, and
23 23 # bdist_deb does not accept underscores (a Debian convention).
24 24
25 25 development = False # change this to False to do a release
26 version_base = '0.9.beta3'
26 version_base = '0.9.rc1'
27 27 branch = 'ipython'
28 revision = '1106'
28 revision = '1124'
29 29
30 30 if development:
31 31 if branch == 'ipython':
32 32 version = '%s.bzr.r%s' % (version_base, revision)
33 33 else:
34 34 version = '%s.bzr.r%s.%s' % (version_base, revision, branch)
35 35 else:
36 36 version = version_base
37 37
38 38
39 39 description = "Tools for interactive development in Python."
40 40
41 41 long_description = \
42 42 """
43 43 IPython provides a replacement for the interactive Python interpreter with
44 44 extra functionality.
45 45
46 46 Main features:
47 47
48 48 * Comprehensive object introspection.
49 49
50 50 * Input history, persistent across sessions.
51 51
52 52 * Caching of output results during a session with automatically generated
53 53 references.
54 54
55 55 * Readline based name completion.
56 56
57 57 * Extensible system of 'magic' commands for controlling the environment and
58 58 performing many tasks related either to IPython or the operating system.
59 59
60 60 * Configuration system with easy switching between different setups (simpler
61 61 than changing $PYTHONSTARTUP environment variables every time).
62 62
63 63 * Session logging and reloading.
64 64
65 65 * Extensible syntax processing for special purpose situations.
66 66
67 67 * Access to the system shell with user-extensible alias system.
68 68
69 69 * Easily embeddable in other Python programs.
70 70
71 71 * Integrated access to the pdb debugger and the Python profiler.
72 72
73 73 The latest development version is always available at the IPython subversion
74 74 repository_.
75 75
76 76 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
77 77 """
78 78
79 79 license = 'BSD'
80 80
81 81 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
82 82 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
83 83 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
84 84 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
85 85 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
86 86 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com')
87 87 }
88 88
89 89 author = 'The IPython Development Team'
90 90
91 91 author_email = 'ipython-dev@scipy.org'
92 92
93 93 url = 'http://ipython.scipy.org'
94 94
95 95 download_url = 'http://ipython.scipy.org/dist'
96 96
97 97 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
98 98
99 99 keywords = ['Interactive','Interpreter','Shell','Parallel','Distributed']
@@ -1,87 +1,86
1 1 # Makefile for Sphinx documentation
2 2 #
3 3
4 4 # You can set these variables from the command line.
5 5 SPHINXOPTS =
6 6 SPHINXBUILD = sphinx-build
7 7 PAPER =
8 8
9 9 # Internal variables.
10 10 PAPEROPT_a4 = -D latex_paper_size=a4
11 11 PAPEROPT_letter = -D latex_paper_size=letter
12 12 ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
13 13
14 14 .PHONY: help clean html web pickle htmlhelp latex changes linkcheck
15 15
16 16 help:
17 17 @echo "Please use \`make <target>' where <target> is one of"
18 18 @echo " html to make standalone HTML files"
19 19 @echo " pickle to make pickle files (usable by e.g. sphinx-web)"
20 20 @echo " htmlhelp to make HTML files and a HTML help project"
21 21 @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
22 22 @echo " changes to make an overview over all changed/added/deprecated items"
23 23 @echo " linkcheck to check all external links for integrity"
24 24 @echo
25 25 @echo "Compound utility targets:"
26 26 @echo "pdf latex and then runs the PDF generation"
27 27 @echo "all html and pdf"
28 28 @echo "dist all, and then puts the results in dist/"
29 29
30 30 clean:
31 -rm -rf build/*
31 -rm -rf build/* dist/*
32 32
33 33 pdf: latex
34 34 cd build/latex && make all-pdf
35 35
36 36 all: html pdf
37 37
38 dist: all
38 dist: clean all
39 39 mkdir -p dist
40 -rm -rf dist/*
41 ln build/latex/IPython.pdf dist/
40 ln build/latex/ipython.pdf dist/
42 41 cp -al build/html dist/
43 42 @echo "Build finished. Final docs are in dist/"
44 43
45 44 html:
46 45 mkdir -p build/html build/doctrees
47 46 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
48 47 @echo
49 48 @echo "Build finished. The HTML pages are in build/html."
50 49
51 50 pickle:
52 51 mkdir -p build/pickle build/doctrees
53 52 $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
54 53 @echo
55 54 @echo "Build finished; now you can process the pickle files or run"
56 55 @echo " sphinx-web build/pickle"
57 56 @echo "to start the sphinx-web server."
58 57
59 58 web: pickle
60 59
61 60 htmlhelp:
62 61 mkdir -p build/htmlhelp build/doctrees
63 62 $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
64 63 @echo
65 64 @echo "Build finished; now you can run HTML Help Workshop with the" \
66 65 ".hhp project file in build/htmlhelp."
67 66
68 67 latex:
69 68 mkdir -p build/latex build/doctrees
70 69 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
71 70 @echo
72 71 @echo "Build finished; the LaTeX files are in build/latex."
73 72 @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
74 73 "run these through (pdf)latex."
75 74
76 75 changes:
77 76 mkdir -p build/changes build/doctrees
78 77 $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
79 78 @echo
80 79 @echo "The overview file is in build/changes."
81 80
82 81 linkcheck:
83 82 mkdir -p build/linkcheck build/doctrees
84 83 $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
85 84 @echo
86 85 @echo "Link check complete; look for any errors in the above output " \
87 86 "or in build/linkcheck/output.txt."
@@ -1,247 +1,252
1 1 .. _changes:
2 2
3 3 ==========
4 4 What's new
5 5 ==========
6 6
7 7 .. contents::
8 8 ..
9 9 1 Release 0.9
10 10 1.1 New features
11 11 1.2 Bug fixes
12 12 1.3 Backwards incompatible changes
13 13 1.4 Changes merged in from IPython1
14 14 1.4.1 New features
15 15 1.4.2 Bug fixes
16 16 1.4.3 Backwards incompatible changes
17 17 2 Release 0.8.4
18 18 3 Release 0.8.2
19 19 4 Release 0.8.3
20 20 5 Older releases
21 21 ..
22 22
23 23
24 24 Release 0.9
25 25 ===========
26 26
27 27 New features
28 28 ------------
29 29
30 * Laurent's WX application has been given a top-level script called ipython-wx,
31 and it has received numerous fixes. We expect this code to be
32 architecturally better integrated with Gael's WX 'ipython widget' over the
33 next few releases.
34
30 35 * The Editor synchronization work by Vivian De Smedt has been merged in. This
31 36 code adds a number of new editor hooks to synchronize with editors under
32 37 Windows.
33 38
34 39 * A new, still experimental but highly functional, WX shell by Gael Varoquaux.
35 40 This work was sponsored by Enthought, and while it's still very new, it is
36 41 based on a more cleanly organized arhictecture of the various IPython
37 42 components. We will continue to develop this over the next few releases as a
38 43 model for GUI components that use IPython.
39 44
40 45 * Another GUI frontend, Cocoa based (Cocoa is the OSX native GUI framework),
41 46 authored by Barry Wark. Currently the WX and the Cocoa ones have slightly
42 47 different internal organizations, but the whole team is working on finding
43 48 what the right abstraction points are for a unified codebase.
44 49
45 50 * As part of the frontend work, Barry Wark also implemented an experimental
46 51 event notification system that various ipython components can use. In the
47 52 next release the implications and use patterns of this system regarding the
48 53 various GUI options will be worked out.
49 54
50 55 * IPython finally has a full test system, that can test docstrings with
51 56 IPython-specific functionality. There are still a few pieces missing for it
52 57 to be widely accessible to all users (so they can run the test suite at any
53 58 time and report problems), but it now works for the developers. We are
54 59 working hard on continuing to improve it, as this was probably IPython's
55 60 major Achilles heel (the lack of proper test coverage made it effectively
56 61 impossible to do large-scale refactoring).
57 62
58 63 * The notion of a task has been completely reworked. An `ITask` interface has
59 64 been created. This interface defines the methods that tasks need to implement.
60 65 These methods are now responsible for things like submitting tasks and processing
61 66 results. There are two basic task types: :class:`IPython.kernel.task.StringTask`
62 67 (this is the old `Task` object, but renamed) and the new
63 68 :class:`IPython.kernel.task.MapTask`, which is based on a function.
64 69 * A new interface, :class:`IPython.kernel.mapper.IMapper` has been defined to
65 70 standardize the idea of a `map` method. This interface has a single
66 71 `map` method that has the same syntax as the built-in `map`. We have also defined
67 72 a `mapper` factory interface that creates objects that implement
68 73 :class:`IPython.kernel.mapper.IMapper` for different controllers. Both
69 74 the multiengine and task controller now have mapping capabilties.
70 75 * The parallel function capabilities have been reworks. The major changes are that
71 76 i) there is now an `@parallel` magic that creates parallel functions, ii)
72 77 the syntax for mulitple variable follows that of `map`, iii) both the
73 78 multiengine and task controller now have a parallel function implementation.
74 79 * All of the parallel computing capabilities from `ipython1-dev` have been merged into
75 80 IPython proper. This resulted in the following new subpackages:
76 81 :mod:`IPython.kernel`, :mod:`IPython.kernel.core`, :mod:`IPython.config`,
77 82 :mod:`IPython.tools` and :mod:`IPython.testing`.
78 83 * As part of merging in the `ipython1-dev` stuff, the `setup.py` script and friends
79 84 have been completely refactored. Now we are checking for dependencies using
80 85 the approach that matplotlib uses.
81 86 * The documentation has been completely reorganized to accept the documentation
82 87 from `ipython1-dev`.
83 88 * We have switched to using Foolscap for all of our network protocols in
84 89 :mod:`IPython.kernel`. This gives us secure connections that are both encrypted
85 90 and authenticated.
86 91 * We have a brand new `COPYING.txt` files that describes the IPython license
87 92 and copyright. The biggest change is that we are putting "The IPython
88 93 Development Team" as the copyright holder. We give more details about exactly
89 94 what this means in this file. All developer should read this and use the new
90 95 banner in all IPython source code files.
91 96 * sh profile: ./foo runs foo as system command, no need to do !./foo anymore
92 97 * String lists now support 'sort(field, nums = True)' method (to easily
93 98 sort system command output). Try it with 'a = !ls -l ; a.sort(1, nums=1)'
94 99 * '%cpaste foo' now assigns the pasted block as string list, instead of string
95 100 * The ipcluster script now run by default with no security. This is done because
96 101 the main usage of the script is for starting things on localhost. Eventually
97 102 when ipcluster is able to start things on other hosts, we will put security
98 103 back.
99 104 * 'cd --foo' searches directory history for string foo, and jumps to that dir.
100 105 Last part of dir name is checked first. If no matches for that are found,
101 106 look at the whole path.
102 107
103 108 Bug fixes
104 109 ---------
105 110
106 111 * The colors escapes in the multiengine client are now turned off on win32 as they
107 112 don't print correctly.
108 113 * The :mod:`IPython.kernel.scripts.ipengine` script was exec'ing mpi_import_statement
109 114 incorrectly, which was leading the engine to crash when mpi was enabled.
110 115 * A few subpackages has missing `__init__.py` files.
111 116 * The documentation is only created is Sphinx is found. Previously, the `setup.py`
112 117 script would fail if it was missing.
113 118 * Greedy 'cd' completion has been disabled again (it was enabled in 0.8.4)
114 119
115 120
116 121 Backwards incompatible changes
117 122 ------------------------------
118 123
119 124 * In ipapi, the :func:`make_user_ns` function has been replaced with
120 125 :func:`make_user_namespaces`, to support dict subclasses in namespace
121 126 creation.
122 127
123 128 * :class:`IPython.kernel.client.Task` has been renamed
124 129 :class:`IPython.kernel.client.StringTask` to make way for new task types.
125 130 * The keyword argument `style` has been renamed `dist` in `scatter`, `gather`
126 131 and `map`.
127 132 * Renamed the values that the rename `dist` keyword argument can have from
128 133 `'basic'` to `'b'`.
129 134 * IPython has a larger set of dependencies if you want all of its capabilities.
130 135 See the `setup.py` script for details.
131 136 * The constructors for :class:`IPython.kernel.client.MultiEngineClient` and
132 137 :class:`IPython.kernel.client.TaskClient` no longer take the (ip,port) tuple.
133 138 Instead they take the filename of a file that contains the FURL for that
134 139 client. If the FURL file is in your IPYTHONDIR, it will be found automatically
135 140 and the constructor can be left empty.
136 141 * The asynchronous clients in :mod:`IPython.kernel.asyncclient` are now created
137 142 using the factory functions :func:`get_multiengine_client` and
138 143 :func:`get_task_client`. These return a `Deferred` to the actual client.
139 144 * The command line options to `ipcontroller` and `ipengine` have changed to
140 145 reflect the new Foolscap network protocol and the FURL files. Please see the
141 146 help for these scripts for details.
142 147 * The configuration files for the kernel have changed because of the Foolscap stuff.
143 148 If you were using custom config files before, you should delete them and regenerate
144 149 new ones.
145 150
146 151 Changes merged in from IPython1
147 152 -------------------------------
148 153
149 154 New features
150 155 ............
151 156
152 157 * Much improved ``setup.py`` and ``setupegg.py`` scripts. Because Twisted
153 158 and zope.interface are now easy installable, we can declare them as dependencies
154 159 in our setupegg.py script.
155 160 * IPython is now compatible with Twisted 2.5.0 and 8.x.
156 161 * Added a new example of how to use :mod:`ipython1.kernel.asynclient`.
157 162 * Initial draft of a process daemon in :mod:`ipython1.daemon`. This has not
158 163 been merged into IPython and is still in `ipython1-dev`.
159 164 * The ``TaskController`` now has methods for getting the queue status.
160 165 * The ``TaskResult`` objects not have information about how long the task
161 166 took to run.
162 167 * We are attaching additional attributes to exceptions ``(_ipython_*)`` that
163 168 we use to carry additional info around.
164 169 * New top-level module :mod:`asyncclient` that has asynchronous versions (that
165 170 return deferreds) of the client classes. This is designed to users who want
166 171 to run their own Twisted reactor
167 172 * All the clients in :mod:`client` are now based on Twisted. This is done by
168 173 running the Twisted reactor in a separate thread and using the
169 174 :func:`blockingCallFromThread` function that is in recent versions of Twisted.
170 175 * Functions can now be pushed/pulled to/from engines using
171 176 :meth:`MultiEngineClient.push_function` and :meth:`MultiEngineClient.pull_function`.
172 177 * Gather/scatter are now implemented in the client to reduce the work load
173 178 of the controller and improve performance.
174 179 * Complete rewrite of the IPython docuementation. All of the documentation
175 180 from the IPython website has been moved into docs/source as restructured
176 181 text documents. PDF and HTML documentation are being generated using
177 182 Sphinx.
178 183 * New developer oriented documentation: development guidelines and roadmap.
179 184 * Traditional ``ChangeLog`` has been changed to a more useful ``changes.txt`` file
180 185 that is organized by release and is meant to provide something more relevant
181 186 for users.
182 187
183 188 Bug fixes
184 189 .........
185 190
186 191 * Created a proper ``MANIFEST.in`` file to create source distributions.
187 192 * Fixed a bug in the ``MultiEngine`` interface. Previously, multi-engine
188 193 actions were being collected with a :class:`DeferredList` with
189 194 ``fireononeerrback=1``. This meant that methods were returning
190 195 before all engines had given their results. This was causing extremely odd
191 196 bugs in certain cases. To fix this problem, we have 1) set
192 197 ``fireononeerrback=0`` to make sure all results (or exceptions) are in
193 198 before returning and 2) introduced a :exc:`CompositeError` exception
194 199 that wraps all of the engine exceptions. This is a huge change as it means
195 200 that users will have to catch :exc:`CompositeError` rather than the actual
196 201 exception.
197 202
198 203 Backwards incompatible changes
199 204 ..............................
200 205
201 206 * All names have been renamed to conform to the lowercase_with_underscore
202 207 convention. This will require users to change references to all names like
203 208 ``queueStatus`` to ``queue_status``.
204 209 * Previously, methods like :meth:`MultiEngineClient.push` and
205 210 :meth:`MultiEngineClient.push` used ``*args`` and ``**kwargs``. This was
206 211 becoming a problem as we weren't able to introduce new keyword arguments into
207 212 the API. Now these methods simple take a dict or sequence. This has also allowed
208 213 us to get rid of the ``*All`` methods like :meth:`pushAll` and :meth:`pullAll`.
209 214 These things are now handled with the ``targets`` keyword argument that defaults
210 215 to ``'all'``.
211 216 * The :attr:`MultiEngineClient.magicTargets` has been renamed to
212 217 :attr:`MultiEngineClient.targets`.
213 218 * All methods in the MultiEngine interface now accept the optional keyword argument
214 219 ``block``.
215 220 * Renamed :class:`RemoteController` to :class:`MultiEngineClient` and
216 221 :class:`TaskController` to :class:`TaskClient`.
217 222 * Renamed the top-level module from :mod:`api` to :mod:`client`.
218 223 * Most methods in the multiengine interface now raise a :exc:`CompositeError` exception
219 224 that wraps the user's exceptions, rather than just raising the raw user's exception.
220 225 * Changed the ``setupNS`` and ``resultNames`` in the ``Task`` class to ``push``
221 226 and ``pull``.
222 227
223 228 Release 0.8.4
224 229 =============
225 230
226 231 Someone needs to describe what went into 0.8.4.
227 232
228 233 Release 0.8.2
229 234 =============
230 235
231 236 * %pushd/%popd behave differently; now "pushd /foo" pushes CURRENT directory
232 237 and jumps to /foo. The current behaviour is closer to the documented
233 238 behaviour, and should not trip anyone.
234 239
235 240 Release 0.8.3
236 241 =============
237 242
238 243 * pydb is now disabled by default (due to %run -d problems). You can enable
239 244 it by passing -pydb command line argument to IPython. Note that setting
240 245 it in config file won't work.
241 246
242 247 Older releases
243 248 ==============
244 249
245 250 Changes in earlier releases of IPython are described in the older file ``ChangeLog``.
246 251 Please refer to this document for details.
247 252
@@ -1,180 +1,180
1 1 # -*- coding: utf-8 -*-
2 2 #
3 3 # IPython documentation build configuration file, created by
4 4 # sphinx-quickstart on Thu May 8 16:45:02 2008.
5 5
6 6 # NOTE: This file has been edited manually from the auto-generated one from
7 7 # sphinx. Do NOT delete and re-generate. If any changes from sphinx are
8 8 # needed, generate a scratch one and merge by hand any new fields needed.
9 9
10 10 #
11 11 # This file is execfile()d with the current directory set to its containing dir.
12 12 #
13 13 # The contents of this file are pickled, so don't put values in the namespace
14 14 # that aren't pickleable (module imports are okay, they're removed automatically).
15 15 #
16 16 # All configuration values have a default value; values that are commented out
17 17 # serve to show the default value.
18 18
19 19 import sys, os
20 20
21 21 # If your extensions are in another directory, add it here. If the directory
22 22 # is relative to the documentation root, use os.path.abspath to make it
23 23 # absolute, like shown here.
24 24 #sys.path.append(os.path.abspath('some/directory'))
25 25
26 26 # We load the ipython release info into a dict by explicit execution
27 27 iprelease = {}
28 28 execfile('../../IPython/Release.py',iprelease)
29 29
30 30 # General configuration
31 31 # ---------------------
32 32
33 33 # Add any Sphinx extension module names here, as strings. They can be extensions
34 34 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
35 35 #extensions = []
36 36
37 37 # Add any paths that contain templates here, relative to this directory.
38 38 templates_path = ['_templates']
39 39
40 40 # The suffix of source filenames.
41 41 source_suffix = '.txt'
42 42
43 43 # The master toctree document.
44 44 master_doc = 'index'
45 45
46 46 # General substitutions.
47 47 project = 'IPython'
48 48 copyright = '2008, The IPython Development Team'
49 49
50 50 # The default replacements for |version| and |release|, also used in various
51 51 # other places throughout the built documents.
52 52 #
53 53 # The full version, including alpha/beta/rc tags.
54 54 release = iprelease['version']
55 55 # The short X.Y version.
56 56 version = '.'.join(release.split('.',2)[:2])
57 57
58 58
59 59 # There are two options for replacing |today|: either, you set today to some
60 60 # non-false value, then it is used:
61 61 #today = ''
62 62 # Else, today_fmt is used as the format for a strftime call.
63 63 today_fmt = '%B %d, %Y'
64 64
65 65 # List of documents that shouldn't be included in the build.
66 66 #unused_docs = []
67 67
68 68 # List of directories, relative to source directories, that shouldn't be searched
69 69 # for source files.
70 70 #exclude_dirs = []
71 71
72 72 # If true, '()' will be appended to :func: etc. cross-reference text.
73 73 #add_function_parentheses = True
74 74
75 75 # If true, the current module name will be prepended to all description
76 76 # unit titles (such as .. function::).
77 77 #add_module_names = True
78 78
79 79 # If true, sectionauthor and moduleauthor directives will be shown in the
80 80 # output. They are ignored by default.
81 81 #show_authors = False
82 82
83 83 # The name of the Pygments (syntax highlighting) style to use.
84 84 pygments_style = 'sphinx'
85 85
86 86
87 87 # Options for HTML output
88 88 # -----------------------
89 89
90 90 # The style sheet to use for HTML and HTML Help pages. A file of that name
91 91 # must exist either in Sphinx' static/ path, or in one of the custom paths
92 92 # given in html_static_path.
93 93 html_style = 'default.css'
94 94
95 95 # The name for this set of Sphinx documents. If None, it defaults to
96 96 # "<project> v<release> documentation".
97 97 #html_title = None
98 98
99 99 # The name of an image file (within the static path) to place at the top of
100 100 # the sidebar.
101 101 #html_logo = None
102 102
103 103 # Add any paths that contain custom static files (such as style sheets) here,
104 104 # relative to this directory. They are copied after the builtin static files,
105 105 # so a file named "default.css" will overwrite the builtin "default.css".
106 106 html_static_path = ['_static']
107 107
108 108 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
109 109 # using the given strftime format.
110 110 html_last_updated_fmt = '%b %d, %Y'
111 111
112 112 # If true, SmartyPants will be used to convert quotes and dashes to
113 113 # typographically correct entities.
114 114 #html_use_smartypants = True
115 115
116 116 # Custom sidebar templates, maps document names to template names.
117 117 #html_sidebars = {}
118 118
119 119 # Additional templates that should be rendered to pages, maps page names to
120 120 # template names.
121 121 #html_additional_pages = {}
122 122
123 123 # If false, no module index is generated.
124 124 #html_use_modindex = True
125 125
126 126 # If true, the reST sources are included in the HTML build as _sources/<name>.
127 127 #html_copy_source = True
128 128
129 129 # If true, an OpenSearch description file will be output, and all pages will
130 130 # contain a <link> tag referring to it. The value of this option must be the
131 131 # base URL from which the finished HTML is served.
132 132 #html_use_opensearch = ''
133 133
134 134 # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
135 135 #html_file_suffix = ''
136 136
137 137 # Output file base name for HTML help builder.
138 138 htmlhelp_basename = 'IPythondoc'
139 139
140 140
141 141 # Options for LaTeX output
142 142 # ------------------------
143 143
144 144 # The paper size ('letter' or 'a4').
145 145 latex_paper_size = 'letter'
146 146
147 147 # The font size ('10pt', '11pt' or '12pt').
148 148 latex_font_size = '11pt'
149 149
150 150 # Grouping the document tree into LaTeX files. List of tuples
151 151 # (source start file, target name, title, author, document class [howto/manual]).
152 152
153 latex_documents = [ ('index', 'IPython.tex', 'IPython Documentation',
153 latex_documents = [ ('index', 'ipython.tex', 'IPython Documentation',
154 154 ur"""Brian Granger, Fernando PΓ©rez and Ville Vainio\\
155 155 \ \\
156 156 With contributions from:\\
157 Benjamin Ragan-Kelley.""",
157 Benjamin Ragan-Kelley and Barry Wark.""",
158 158 'manual'),
159 159 ]
160 160
161 161 # The name of an image file (relative to this directory) to place at the top of
162 162 # the title page.
163 163 #latex_logo = None
164 164
165 165 # For "manual" documents, if this is true, then toplevel headings are parts,
166 166 # not chapters.
167 167 #latex_use_parts = False
168 168
169 169 # Additional stuff for the LaTeX preamble.
170 170 #latex_preamble = ''
171 171
172 172 # Documents to append as an appendix to all manuals.
173 173 #latex_appendices = []
174 174
175 175 # If false, no module index is generated.
176 176 #latex_use_modindex = True
177 177
178 178
179 179 # Cleanup: delete release info to avoid pickling errors from sphinx
180 180 del iprelease
@@ -1,178 +1,189
1 1 #!/usr/bin/env python
2 2 # -*- coding: utf-8 -*-
3 3 """Setup script for IPython.
4 4
5 5 Under Posix environments it works like a typical setup.py script.
6 6 Under Windows, the command sdist is not supported, since IPython
7 7 requires utilities which are not available under Windows."""
8 8
9 9 #-------------------------------------------------------------------------------
10 10 # Copyright (C) 2008 The IPython Development Team
11 11 #
12 12 # Distributed under the terms of the BSD License. The full license is in
13 13 # the file COPYING, distributed as part of this software.
14 14 #-------------------------------------------------------------------------------
15 15
16 16 #-------------------------------------------------------------------------------
17 17 # Imports
18 18 #-------------------------------------------------------------------------------
19 19
20 20 # Stdlib imports
21 21 import os
22 22 import sys
23 23
24 24 from glob import glob
25 25
26 26 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
27 27 # update it when the contents of directories change.
28 28 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
29 29
30 30 from distutils.core import setup
31 31
32 32 # Local imports
33 33 from IPython.genutils import target_update
34 34
35 35 from setupbase import (
36 36 setup_args,
37 37 find_packages,
38 38 find_package_data,
39 39 find_scripts,
40 40 find_data_files,
41 41 check_for_dependencies
42 42 )
43 43
44 44 isfile = os.path.isfile
45 45
46 46 #-------------------------------------------------------------------------------
47 47 # Handle OS specific things
48 48 #-------------------------------------------------------------------------------
49 49
50 50 if os.name == 'posix':
51 51 os_name = 'posix'
52 52 elif os.name in ['nt','dos']:
53 53 os_name = 'windows'
54 54 else:
55 55 print 'Unsupported operating system:',os.name
56 56 sys.exit(1)
57 57
58 58 # Under Windows, 'sdist' has not been supported. Now that the docs build with
59 59 # Sphinx it might work, but let's not turn it on until someone confirms that it
60 60 # actually works.
61 61 if os_name == 'windows' and 'sdist' in sys.argv:
62 62 print 'The sdist command is not available under Windows. Exiting.'
63 63 sys.exit(1)
64 64
65 65 #-------------------------------------------------------------------------------
66 66 # Things related to the IPython documentation
67 67 #-------------------------------------------------------------------------------
68 68
69 69 # update the manuals when building a source dist
70 70 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
71 71 import textwrap
72 72
73 73 # List of things to be updated. Each entry is a triplet of args for
74 74 # target_update()
75 75 to_update = [
76 76 # FIXME - Disabled for now: we need to redo an automatic way
77 77 # of generating the magic info inside the rst.
78 78 #('docs/magic.tex',
79 79 #['IPython/Magic.py'],
80 80 #"cd doc && ./update_magic.sh" ),
81 81
82 82 ('docs/man/ipython.1.gz',
83 83 ['docs/man/ipython.1'],
84 84 "cd docs/man && gzip -9c ipython.1 > ipython.1.gz"),
85 85
86 86 ('docs/man/pycolor.1.gz',
87 87 ['docs/man/pycolor.1'],
88 88 "cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz"),
89 89 ]
90 90
91 # Only build the docs is sphinx is present
91 # Only build the docs if sphinx is present
92 92 try:
93 93 import sphinx
94 94 except ImportError:
95 95 pass
96 96 else:
97 pass
98 # BEG: This is disabled as I am not sure what to depend on.
99 # I actually don't think we should be automatically building
100 # the docs for people.
101 # The do_sphinx scripts builds html and pdf, so just one
102 # target is enough to cover all manual generation
103 # to_update.append(
104 # ('docs/manual/ipython.pdf',
105 # ['IPython/Release.py','docs/source/ipython.rst'],
106 # "cd docs && python do_sphinx.py")
107 # )
97 # The Makefile calls the do_sphinx scripts to build html and pdf, so
98 # just one target is enough to cover all manual generation
99
100 # First, compute all the dependencies that can force us to rebuild the
101 # docs. Start with the main release file that contains metadata
102 docdeps = ['IPython/Release.py']
103 # Inculde all the reST sources
104 pjoin = os.path.join
105 for dirpath,dirnames,filenames in os.walk('docs/source'):
106 if dirpath in ['_static','_templates']:
107 continue
108 docdeps += [ pjoin(dirpath,f) for f in filenames
109 if f.endswith('.txt') ]
110 # and the examples
111 for dirpath,dirnames,filenames in os.walk('docs/example'):
112 docdeps += [ pjoin(dirpath,f) for f in filenames
113 if not f.endswith('~') ]
114 # then, make them all dependencies for the main PDF (the html will get
115 # auto-generated as well).
116 to_update.append(
117 ('docs/dist/ipython.pdf',
118 docdeps,
119 "cd docs && make dist")
120 )
108 121
109 122 [ target_update(*t) for t in to_update ]
110 123
111 # Build the docs
112 os.system('cd docs && make dist')
113 124
114 125 #---------------------------------------------------------------------------
115 126 # Find all the packages, package data, scripts and data_files
116 127 #---------------------------------------------------------------------------
117 128
118 129 packages = find_packages()
119 130 package_data = find_package_data()
120 131 scripts = find_scripts()
121 132 data_files = find_data_files()
122 133
123 134 #---------------------------------------------------------------------------
124 135 # Handle dependencies and setuptools specific things
125 136 #---------------------------------------------------------------------------
126 137
127 138 # This dict is used for passing extra arguments that are setuptools
128 139 # specific to setup
129 140 setuptools_extra_args = {}
130 141
131 142 if 'setuptools' in sys.modules:
132 143 setuptools_extra_args['zip_safe'] = False
133 144 setuptools_extra_args['entry_points'] = {
134 145 'console_scripts': [
135 146 'ipython = IPython.ipapi:launch_new_instance',
136 147 'pycolor = IPython.PyColorize:main',
137 148 'ipcontroller = IPython.kernel.scripts.ipcontroller:main',
138 149 'ipengine = IPython.kernel.scripts.ipengine:main',
139 150 'ipcluster = IPython.kernel.scripts.ipcluster:main',
140 151 'ipythonx = IPython.frontend.wx.ipythonx:main',
141 152 'iptest = IPython.testing.iptest:main',
142 153 ]
143 154 }
144 155 setup_args['extras_require'] = dict(
145 156 kernel = [
146 157 'zope.interface>=3.4.1',
147 158 'Twisted>=8.0.1',
148 159 'foolscap>=0.2.6'
149 160 ],
150 161 doc='Sphinx>=0.3',
151 162 test='nose>=0.10.1',
152 163 security='pyOpenSSL>=0.6'
153 164 )
154 165 # Allow setuptools to handle the scripts
155 166 scripts = []
156 167 else:
157 168 # package_data of setuptools was introduced to distutils in 2.4
158 169 cfgfiles = filter(isfile, glob('IPython/UserConfig/*'))
159 170 if sys.version_info < (2,4):
160 171 data_files.append(('lib', 'IPython/UserConfig', cfgfiles))
161 172 # If we are running without setuptools, call this function which will
162 173 # check for dependencies an inform the user what is needed. This is
163 174 # just to make life easy for users.
164 175 check_for_dependencies()
165 176
166 177
167 178 #---------------------------------------------------------------------------
168 179 # Do the actual setup now
169 180 #---------------------------------------------------------------------------
170 181
171 182 setup_args['packages'] = packages
172 183 setup_args['package_data'] = package_data
173 184 setup_args['scripts'] = scripts
174 185 setup_args['data_files'] = data_files
175 186 setup_args.update(setuptools_extra_args)
176 187
177 188 if __name__ == '__main__':
178 189 setup(**setup_args)
@@ -1,101 +1,60
1 1 #!/bin/sh
2 2 # IPython release script
3 3
4 4 PYVER=`python -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1$2}' `
5 5 version=`ipython -Version`
6 6 ipdir=~/ipython/ipython
7 7 ipbackupdir=~/ipython/backup
8 8
9 9 echo
10 10 echo "Releasing IPython version $version"
11 11 echo "=================================="
12 12
13 13 echo "Marking ChangeLog with release information and making NEWS file..."
14 14
15 # Stamp changelog and save a copy of the status at each version, in case later
16 # we want the NEWS file to start from a point before the very last release (if
17 # very small interim releases have no significant changes).
18
19 cd $ipdir/doc
20 cp ChangeLog ChangeLog.old
21 cp ChangeLog ChangeLog.$version
22 daystamp=`date +%Y-%m-%d`
23 echo $daystamp " ***" Released version $version > ChangeLog
24 echo >> ChangeLog
25 cat ChangeLog.old >> ChangeLog
26 rm ChangeLog.old
27
28 # Build NEWS file
29 echo "Changes between the last two releases (major or minor)" > NEWS
30 echo "Note that this is an auto-generated diff of the ChangeLogs" >> NEWS
31 echo >> NEWS
32 diff ChangeLog.previous ChangeLog | grep -v '^0a' | sed 's/^> //g' >> NEWS
33 cp ChangeLog ChangeLog.previous
34
35 15 # Clean up build/dist directories
36 16 rm -rf $ipdir/build/*
37 17 rm -rf $ipdir/dist/*
38 18
39 19 # Perform local backup
40 20 cd $ipdir/tools
41 21 ./make_tarball.py
42 22 mv ipython-*.tgz $ipbackupdir
43 23
44 24 # Build source and binary distros
45 25 cd $ipdir
46 26 ./setup.py sdist --formats=gztar
47 27
48 28 # Build version-specific RPMs, where we must use the --python option to ensure
49 29 # that the resulting RPM is really built with the requested python version (so
50 30 # things go to lib/python2.X/...)
51 31 python2.4 ./setup.py bdist_rpm --binary-only --release=py24 --python=/usr/bin/python2.4
52 32 python2.5 ./setup.py bdist_rpm --binary-only --release=py25 --python=/usr/bin/python2.5
53 33
54 34 # Build eggs
55 35 python2.4 ./setup_bdist_egg.py
56 36 python2.5 ./setup_bdist_egg.py
57 37
58 38 # Call the windows build separately, so that the extra Windows scripts don't
59 39 # get pulled into Unix builds (setup.py has code which checks for
60 40 # bdist_wininst)
61 41 ./setup.py bdist_wininst --install-script=ipython_win_post_install.py
62 42
63 43 # Change name so retarded Vista runs the installer correctly
64 44 rename 's/win32/win32-setup/' $ipdir/dist/*.exe
65 45
66 46 # Register with the Python Package Index (PyPI)
67 47 echo "Registering with PyPI..."
68 48 cd $ipdir
69 49 ./setup.py register
70 50
71 51 # Upload all files
72 52 cd $ipdir/dist
73 53 echo "Uploading distribution files..."
74 54 scp * ipython@ipython.scipy.org:www/dist/
75 55
76 56 echo "Uploading backup files..."
77 57 cd $ipbackupdir
78 58 scp `ls -1tr *tgz | tail -1` ipython@ipython.scipy.org:www/backup/
79 59
80 echo "Updating webpage..."
81 cd $ipdir/doc
82 www=~/ipython/homepage
83 cp ChangeLog NEWS $www
84 rm -rf $www/doc/*
85 cp -r manual/ $www/doc
86 cd $www
87 ./update
88
89 # Alert package maintainers
90 #echo "Alerting package maintainers..."
91 #maintainers='fernando.perez@berkeley.edu ariciputi@users.sourceforge.net jack@xiph.org tretkowski@inittab.de dryice@hotpop.com willmaier@ml1.net'
92 # maintainers='fernando.perez@berkeley.edu'
93
94 # for email in $maintainers
95 # do
96 # echo "Emailing $email..."
97 # mail -s "[Package maintainer notice] A new IPython is out. Version: $version" \
98 # $email < NEWS
99 # done
100
101 60 echo "Done!"
General Comments 0
You need to be logged in to leave comments. Login now