##// END OF EJS Templates
Open 0.13 series for development.
Fernando Perez -
Show More
@@ -1,140 +1,141 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Release data for the IPython project."""
3 3
4 4 #-----------------------------------------------------------------------------
5 5 # Copyright (c) 2008-2011, IPython Development Team.
6 6 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
7 7 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
8 8 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
9 9 #
10 10 # Distributed under the terms of the Modified BSD License.
11 11 #
12 12 # The full license is in the file COPYING.txt, distributed with this software.
13 13 #-----------------------------------------------------------------------------
14 14
15 15 # Name of the package for release purposes. This is the name which labels
16 16 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
17 17 name = 'ipython'
18 18
19 19 # IPython version information. An empty _version_extra corresponds to a full
20 20 # release. 'dev' as a _version_extra string means this is a development
21 21 # version
22 22 _version_major = 0
23 _version_minor = 12
23 _version_minor = 13
24 24 _version_micro = '' # use '' for first of series, number for 1 and above
25 _version_extra = 'dev'
25 26 #_version_extra = 'rc1'
26 _version_extra = '' # Uncomment this for full releases
27 #_version_extra = '' # Uncomment this for full releases
27 28
28 29 # Construct full version string from these.
29 30 _ver = [_version_major, _version_minor]
30 31 if _version_micro:
31 32 _ver.append(_version_micro)
32 33 if _version_extra:
33 34 _ver.append(_version_extra)
34 35
35 36 __version__ = '.'.join(map(str, _ver))
36 37
37 38 version = __version__ # backwards compatibility name
38 39
39 40 description = "IPython: Productive Interactive Computing"
40 41
41 42 long_description = \
42 43 """
43 44 IPython provides a rich toolkit to help you make the most out of using Python
44 45 interactively. Its main components are:
45 46
46 47 * Powerful interactive Python shells (terminal- and Qt-based).
47 48 * Support for interactive data visualization and use of GUI toolkits.
48 49 * Flexible, embeddable interpreters to load into your own projects.
49 50 * Tools for high level and interactive parallel computing.
50 51
51 52 The enhanced interactive Python shells have the following main features:
52 53
53 54 * Comprehensive object introspection.
54 55
55 56 * Input history, persistent across sessions.
56 57
57 58 * Caching of output results during a session with automatically generated
58 59 references.
59 60
60 61 * Readline based name completion.
61 62
62 63 * Extensible system of 'magic' commands for controlling the environment and
63 64 performing many tasks related either to IPython or the operating system.
64 65
65 66 * Configuration system with easy switching between different setups (simpler
66 67 than changing $PYTHONSTARTUP environment variables every time).
67 68
68 69 * Session logging and reloading.
69 70
70 71 * Extensible syntax processing for special purpose situations.
71 72
72 73 * Access to the system shell with user-extensible alias system.
73 74
74 75 * Easily embeddable in other Python programs and wxPython GUIs.
75 76
76 77 * Integrated access to the pdb debugger and the Python profiler.
77 78
78 79 The parallel computing architecture has the following main features:
79 80
80 81 * Quickly parallelize Python code from an interactive Python/IPython session.
81 82
82 83 * A flexible and dynamic process model that be deployed on anything from
83 84 multicore workstations to supercomputers.
84 85
85 86 * An architecture that supports many different styles of parallelism, from
86 87 message passing to task farming.
87 88
88 89 * Both blocking and fully asynchronous interfaces.
89 90
90 91 * High level APIs that enable many things to be parallelized in a few lines
91 92 of code.
92 93
93 94 * Share live parallel jobs with other users securely.
94 95
95 96 * Dynamically load balanced task farming system.
96 97
97 98 * Robust error handling in parallel code.
98 99
99 100 The latest development version is always available from IPython's `GitHub
100 101 site <http://github.com/ipython>`_.
101 102 """
102 103
103 104 license = 'BSD'
104 105
105 106 authors = {'Fernando' : ('Fernando Perez','fperez.net@gmail.com'),
106 107 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
107 108 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
108 109 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
109 110 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
110 111 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com')
111 112 }
112 113
113 114 author = 'The IPython Development Team'
114 115
115 116 author_email = 'ipython-dev@scipy.org'
116 117
117 118 url = 'http://ipython.org'
118 119
119 120 # This will only be valid for actual releases sent to PyPI, but that's OK since
120 121 # those are the ones we want pip/easy_install to be able to find.
121 122 download_url = 'http://archive.ipython.org/release/%s' % version
122 123
123 124 platforms = ['Linux','Mac OSX','Windows XP/2000/NT']
124 125
125 126 keywords = ['Interactive','Interpreter','Shell','Parallel','Distributed']
126 127
127 128 classifiers = [
128 129 'Intended Audience :: Developers',
129 130 'Intended Audience :: Science/Research'
130 131 'License :: OSI Approved :: BSD License',
131 132 'Programming Language :: Python',
132 133 'Programming Language :: Python :: 2',
133 134 'Programming Language :: Python :: 2.6',
134 135 'Programming Language :: Python :: 2.7',
135 136 'Programming Language :: Python :: 3',
136 137 'Programming Language :: Python :: 3.1',
137 138 'Programming Language :: Python :: 3.2',
138 139 'Topic :: System :: Distributed Computing',
139 140 'Topic :: System :: Shells'
140 141 ]
@@ -1,136 +1,138 b''
1 1 #!/usr/bin/env python
2 2 """Script to commit the doc build outputs into the github-pages repo.
3 3
4 4 Use:
5 5
6 6 gh-pages.py [tag]
7 7
8 8 If no tag is given, the current output of 'git describe' is used. If given,
9 9 that is how the resulting directory will be named.
10 10
11 11 In practice, you should use either actual clean tags from a current build or
12 12 something like 'current' as a stable URL for the most current version of the """
13 13
14 14 #-----------------------------------------------------------------------------
15 15 # Imports
16 16 #-----------------------------------------------------------------------------
17 17 import os
18 18 import re
19 19 import shutil
20 20 import sys
21 21 from os import chdir as cd
22 22 from os.path import join as pjoin
23 23
24 24 from subprocess import Popen, PIPE, CalledProcessError, check_call
25 25
26 26 #-----------------------------------------------------------------------------
27 27 # Globals
28 28 #-----------------------------------------------------------------------------
29 29
30 30 pages_dir = 'gh-pages'
31 31 html_dir = 'build/html'
32 32 pdf_dir = 'build/latex'
33 33 pages_repo = 'git@github.com:ipython/ipython-doc.git'
34 34
35 35 #-----------------------------------------------------------------------------
36 36 # Functions
37 37 #-----------------------------------------------------------------------------
38 38 def sh(cmd):
39 39 """Execute command in a subshell, return status code."""
40 40 return check_call(cmd, shell=True)
41 41
42 42
43 43 def sh2(cmd):
44 44 """Execute command in a subshell, return stdout.
45 45
46 46 Stderr is unbuffered from the subshell.x"""
47 47 p = Popen(cmd, stdout=PIPE, shell=True)
48 48 out = p.communicate()[0]
49 49 retcode = p.returncode
50 50 if retcode:
51 51 raise CalledProcessError(retcode, cmd)
52 52 else:
53 53 return out.rstrip()
54 54
55 55
56 56 def sh3(cmd):
57 57 """Execute command in a subshell, return stdout, stderr
58 58
59 59 If anything appears in stderr, print it out to sys.stderr"""
60 60 p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
61 61 out, err = p.communicate()
62 62 retcode = p.returncode
63 63 if retcode:
64 64 raise CalledProcessError(retcode, cmd)
65 65 else:
66 66 return out.rstrip(), err.rstrip()
67 67
68 68
69 69 def init_repo(path):
70 70 """clone the gh-pages repo if we haven't already."""
71 71 sh("git clone %s %s"%(pages_repo, path))
72 72 here = os.getcwdu()
73 73 cd(path)
74 74 sh('git checkout gh-pages')
75 75 cd(here)
76 76
77 77 #-----------------------------------------------------------------------------
78 78 # Script starts
79 79 #-----------------------------------------------------------------------------
80 80 if __name__ == '__main__':
81 81 # The tag can be given as a positional argument
82 82 try:
83 83 tag = sys.argv[1]
84 84 except IndexError:
85 85 try:
86 86 tag = sh2('git describe --exact-match')
87 87 except CalledProcessError:
88 88 tag = "dev" # Fallback
89 89
90 90 startdir = os.getcwdu()
91 91 if not os.path.exists(pages_dir):
92 92 # init the repo
93 93 init_repo(pages_dir)
94 94 else:
95 95 # ensure up-to-date before operating
96 96 cd(pages_dir)
97 97 sh('git checkout gh-pages')
98 98 sh('git pull')
99 99 cd(startdir)
100 100
101 101 dest = pjoin(pages_dir, tag)
102 102
103 103 # don't `make html` here, because gh-pages already depends on html in Makefile
104 104 # sh('make html')
105 105 if tag != 'dev':
106 106 # only build pdf for non-dev targets
107 sh2('make pdf')
107 #sh2('make pdf')
108 pass
108 109
109 110 # This is pretty unforgiving: we unconditionally nuke the destination
110 111 # directory, and then copy the html tree in there
111 112 shutil.rmtree(dest, ignore_errors=True)
112 113 shutil.copytree(html_dir, dest)
113 114 if tag != 'dev':
114 shutil.copy(pjoin(pdf_dir, 'ipython.pdf'), pjoin(dest, 'ipython.pdf'))
115 #shutil.copy(pjoin(pdf_dir, 'ipython.pdf'), pjoin(dest, 'ipython.pdf'))
116 pass
115 117
116 118 try:
117 119 cd(pages_dir)
118 120 status = sh2('git status | head -1')
119 121 branch = re.match('\# On branch (.*)$', status).group(1)
120 122 if branch != 'gh-pages':
121 123 e = 'On %r, git branch is %r, MUST be "gh-pages"' % (pages_dir,
122 124 branch)
123 125 raise RuntimeError(e)
124 126
125 127 sh('git add -A %s' % tag)
126 128 sh('git commit -m"Updated doc release: %s"' % tag)
127 129 print
128 130 print 'Most recent 3 commits:'
129 131 sys.stdout.flush()
130 132 sh('git --no-pager log --oneline HEAD~3..')
131 133 finally:
132 134 cd(startdir)
133 135
134 136 print
135 137 print 'Now verify the build in: %r' % dest
136 138 print "If everything looks good, 'git push'"
@@ -1,31 +1,32 b''
1 1 .. Developers should add in this file, during each release cycle, information
2 2 .. about important changes they've made, in a summary format that's meant for
3 3 .. end users. For each release we normally have three sections: features, bug
4 4 .. fixes and api breakage.
5 5 .. Please remember to credit the authors of the contributions by name,
6 6 .. especially when they are new users or developers who do not regularly
7 7 .. participate in IPython's development.
8 8
9 9 .. _whatsnew_index:
10 10
11 11 =====================
12 12 What's new in IPython
13 13 =====================
14 14
15 15 This section documents the changes that have been made in various versions of
16 16 IPython. Users should consult these pages to learn about new features, bug
17 17 fixes and backwards incompatibilities. Developers should summarize the
18 18 development work they do here in a user friendly format.
19 19
20 20 .. toctree::
21 21 :maxdepth: 1
22 22
23 development
23 24 version0.12
24 25 github-stats-0.12
25 26 version0.11
26 27 github-stats-0.11
27 28 version0.10
28 29 version0.9
29 30 version0.8
30 31
31 32
General Comments 0
You need to be logged in to leave comments. Login now