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 = 1 |
|
|
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 | |
|
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 | |
|
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