##// END OF EJS Templates
back to development
Matthias Bussonnier -
Show More
@@ -1,119 +1,119 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Release data for the IPython project."""
2 """Release data for the IPython project."""
3
3
4 #-----------------------------------------------------------------------------
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2008, IPython Development Team.
5 # Copyright (c) 2008, IPython Development Team.
6 # Copyright (c) 2001, Fernando Perez <fernando.perez@colorado.edu>
6 # Copyright (c) 2001, Fernando Perez <fernando.perez@colorado.edu>
7 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
7 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
8 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
8 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
9 #
9 #
10 # Distributed under the terms of the Modified BSD License.
10 # Distributed under the terms of the Modified BSD License.
11 #
11 #
12 # The full license is in the file COPYING.txt, distributed with this software.
12 # The full license is in the file COPYING.txt, distributed with this software.
13 #-----------------------------------------------------------------------------
13 #-----------------------------------------------------------------------------
14
14
15 # Name of the package for release purposes. This is the name which labels
15 # Name of the package for release purposes. This is the name which labels
16 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
16 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
17 name = 'ipython'
17 name = 'ipython'
18
18
19 # IPython version information. An empty _version_extra corresponds to a full
19 # IPython version information. An empty _version_extra corresponds to a full
20 # release. 'dev' as a _version_extra string means this is a development
20 # release. 'dev' as a _version_extra string means this is a development
21 # version
21 # version
22 _version_major = 7
22 _version_major = 7
23 _version_minor = 3
23 _version_minor = 4
24 _version_patch = 0
24 _version_patch = 0
25 _version_extra = '.dev'
25 _version_extra = '.dev'
26 # _version_extra = 'b1'
26 # _version_extra = 'b1'
27 _version_extra = '' # Uncomment this for full releases
27 # _version_extra = '' # Uncomment this for full releases
28
28
29 # Construct full version string from these.
29 # Construct full version string from these.
30 _ver = [_version_major, _version_minor, _version_patch]
30 _ver = [_version_major, _version_minor, _version_patch]
31
31
32 __version__ = '.'.join(map(str, _ver))
32 __version__ = '.'.join(map(str, _ver))
33 if _version_extra:
33 if _version_extra:
34 __version__ = __version__ + _version_extra
34 __version__ = __version__ + _version_extra
35
35
36 version = __version__ # backwards compatibility name
36 version = __version__ # backwards compatibility name
37 version_info = (_version_major, _version_minor, _version_patch, _version_extra)
37 version_info = (_version_major, _version_minor, _version_patch, _version_extra)
38
38
39 # Change this when incrementing the kernel protocol version
39 # Change this when incrementing the kernel protocol version
40 kernel_protocol_version_info = (5, 0)
40 kernel_protocol_version_info = (5, 0)
41 kernel_protocol_version = "%i.%i" % kernel_protocol_version_info
41 kernel_protocol_version = "%i.%i" % kernel_protocol_version_info
42
42
43 description = "IPython: Productive Interactive Computing"
43 description = "IPython: Productive Interactive Computing"
44
44
45 long_description = \
45 long_description = \
46 """
46 """
47 IPython provides a rich toolkit to help you make the most out of using Python
47 IPython provides a rich toolkit to help you make the most out of using Python
48 interactively. Its main components are:
48 interactively. Its main components are:
49
49
50 * A powerful interactive Python shell
50 * A powerful interactive Python shell
51 * A `Jupyter <https://jupyter.org/>`_ kernel to work with Python code in Jupyter
51 * A `Jupyter <https://jupyter.org/>`_ kernel to work with Python code in Jupyter
52 notebooks and other interactive frontends.
52 notebooks and other interactive frontends.
53
53
54 The enhanced interactive Python shells have the following main features:
54 The enhanced interactive Python shells have the following main features:
55
55
56 * Comprehensive object introspection.
56 * Comprehensive object introspection.
57
57
58 * Input history, persistent across sessions.
58 * Input history, persistent across sessions.
59
59
60 * Caching of output results during a session with automatically generated
60 * Caching of output results during a session with automatically generated
61 references.
61 references.
62
62
63 * Extensible tab completion, with support by default for completion of python
63 * Extensible tab completion, with support by default for completion of python
64 variables and keywords, filenames and function keywords.
64 variables and keywords, filenames and function keywords.
65
65
66 * Extensible system of 'magic' commands for controlling the environment and
66 * Extensible system of 'magic' commands for controlling the environment and
67 performing many tasks related either to IPython or the operating system.
67 performing many tasks related either to IPython or the operating system.
68
68
69 * A rich configuration system with easy switching between different setups
69 * A rich configuration system with easy switching between different setups
70 (simpler than changing $PYTHONSTARTUP environment variables every time).
70 (simpler than changing $PYTHONSTARTUP environment variables every time).
71
71
72 * Session logging and reloading.
72 * Session logging and reloading.
73
73
74 * Extensible syntax processing for special purpose situations.
74 * Extensible syntax processing for special purpose situations.
75
75
76 * Access to the system shell with user-extensible alias system.
76 * Access to the system shell with user-extensible alias system.
77
77
78 * Easily embeddable in other Python programs and GUIs.
78 * Easily embeddable in other Python programs and GUIs.
79
79
80 * Integrated access to the pdb debugger and the Python profiler.
80 * Integrated access to the pdb debugger and the Python profiler.
81
81
82 The latest development version is always available from IPython's `GitHub
82 The latest development version is always available from IPython's `GitHub
83 site <http://github.com/ipython>`_.
83 site <http://github.com/ipython>`_.
84 """
84 """
85
85
86 license = 'BSD'
86 license = 'BSD'
87
87
88 authors = {'Fernando' : ('Fernando Perez','fperez.net@gmail.com'),
88 authors = {'Fernando' : ('Fernando Perez','fperez.net@gmail.com'),
89 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
89 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
90 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
90 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
91 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
91 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
92 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
92 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
93 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com'),
93 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com'),
94 'Thomas' : ('Thomas A. Kluyver', 'takowl@gmail.com'),
94 'Thomas' : ('Thomas A. Kluyver', 'takowl@gmail.com'),
95 'Jorgen' : ('Jorgen Stenarson', 'jorgen.stenarson@bostream.nu'),
95 'Jorgen' : ('Jorgen Stenarson', 'jorgen.stenarson@bostream.nu'),
96 'Matthias' : ('Matthias Bussonnier', 'bussonniermatthias@gmail.com'),
96 'Matthias' : ('Matthias Bussonnier', 'bussonniermatthias@gmail.com'),
97 }
97 }
98
98
99 author = 'The IPython Development Team'
99 author = 'The IPython Development Team'
100
100
101 author_email = 'ipython-dev@python.org'
101 author_email = 'ipython-dev@python.org'
102
102
103 url = 'https://ipython.org'
103 url = 'https://ipython.org'
104
104
105
105
106 platforms = ['Linux','Mac OSX','Windows']
106 platforms = ['Linux','Mac OSX','Windows']
107
107
108 keywords = ['Interactive','Interpreter','Shell', 'Embedding']
108 keywords = ['Interactive','Interpreter','Shell', 'Embedding']
109
109
110 classifiers = [
110 classifiers = [
111 'Framework :: IPython',
111 'Framework :: IPython',
112 'Intended Audience :: Developers',
112 'Intended Audience :: Developers',
113 'Intended Audience :: Science/Research',
113 'Intended Audience :: Science/Research',
114 'License :: OSI Approved :: BSD License',
114 'License :: OSI Approved :: BSD License',
115 'Programming Language :: Python',
115 'Programming Language :: Python',
116 'Programming Language :: Python :: 3',
116 'Programming Language :: Python :: 3',
117 'Programming Language :: Python :: 3 :: Only',
117 'Programming Language :: Python :: 3 :: Only',
118 'Topic :: System :: Shells'
118 'Topic :: System :: Shells'
119 ]
119 ]
@@ -1,327 +1,326 b''
1 .. _core_developer_guide:
1 .. _core_developer_guide:
2
2
3 =================================
3 =================================
4 Guide for IPython core Developers
4 Guide for IPython core Developers
5 =================================
5 =================================
6
6
7 This guide documents the development of IPython itself. Alternatively,
7 This guide documents the development of IPython itself. Alternatively,
8 developers of third party tools and libraries that use IPython should see the
8 developers of third party tools and libraries that use IPython should see the
9 :doc:`../development/index`.
9 :doc:`../development/index`.
10
10
11
11
12 For instructions on how to make a developer install see :ref:`devinstall`.
12 For instructions on how to make a developer install see :ref:`devinstall`.
13
13
14 Backporting Pull requests
14 Backporting Pull requests
15 =========================
15 =========================
16
16
17 All pull requests should usually be made against ``master``, if a Pull Request
17 All pull requests should usually be made against ``master``, if a Pull Request
18 need to be backported to an earlier release; then it should be tagged with the
18 need to be backported to an earlier release; then it should be tagged with the
19 correct ``milestone``.
19 correct ``milestone``.
20
20
21 If you tag a pull request with a milestone **before** merging the pull request,
21 If you tag a pull request with a milestone **before** merging the pull request,
22 and the base ref is ``master``, then our backport bot should automatically create
22 and the base ref is ``master``, then our backport bot should automatically create
23 a corresponding pull-request that backport on the correct branch.
23 a corresponding pull-request that backport on the correct branch.
24
24
25 If you have write access to the IPython repository you can also just mention the
25 If you have write access to the IPython repository you can also just mention the
26 **backport bot** to do the work for you. The bot is evolving so instructions may
26 **backport bot** to do the work for you. The bot is evolving so instructions may
27 be different. At the time of this writing you can use::
27 be different. At the time of this writing you can use::
28
28
29 @meeseeksdev[bot] backport [to] <branchname>
29 @meeseeksdev[bot] backport [to] <branchname>
30
30
31 The bot will attempt to backport the current pull-request and issue a PR if
31 The bot will attempt to backport the current pull-request and issue a PR if
32 possible.
32 possible.
33
33
34 .. note::
34 .. note::
35
35
36 The ``@`` and ``[bot]`` when mentioning the bot should be optional and can
36 The ``@`` and ``[bot]`` when mentioning the bot should be optional and can
37 be omitted.
37 be omitted.
38
38
39 If the pull request cannot be automatically backported, the bot should tell you
39 If the pull request cannot be automatically backported, the bot should tell you
40 so on the PR and apply a "Need manual backport" tag to the origin PR.
40 so on the PR and apply a "Need manual backport" tag to the origin PR.
41
41
42
42
43 Backport with ghpro
43 Backport with ghpro
44 -------------------
44 -------------------
45
45
46 We can also use `ghpro <https://pypi.python.org/pypi/ghpro>`_
46 We can also use `ghpro <https://pypi.python.org/pypi/ghpro>`_
47 to automatically list and apply the PR on other branches. For example:
47 to automatically list and apply the PR on other branches. For example:
48
48
49 .. code-block:: bash
49 .. code-block:: bash
50
50
51 $ backport-pr todo --milestone 5.2
51 $ backport-pr todo --milestone 5.2
52 [...snip..]
52 [...snip..]
53 The following PRs have been backported
53 The following PRs have been backported
54 9848
54 9848
55 9851
55 9851
56 9953
56 9953
57 9955
57 9955
58 The following PRs should be backported:
58 The following PRs should be backported:
59 9417
59 9417
60 9863
60 9863
61 9925
61 9925
62 9947
62 9947
63
63
64 $ backport-pr apply 5.x 9947
64 $ backport-pr apply 5.x 9947
65 [...snip...]
65 [...snip...]
66
66
67
67
68 .. _release_process:
68 .. _release_process:
69
69
70 IPython release process
70 IPython release process
71 =======================
71 =======================
72
72
73 This document contains the process that is used to create an IPython release.
73 This document contains the process that is used to create an IPython release.
74
74
75 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
75 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
76 repository automates most of the release process. This document serves as a
76 repository automates most of the release process. This document serves as a
77 handy reminder and checklist for the release manager.
77 handy reminder and checklist for the release manager.
78
78
79 During the release process, you might need the extra following dependencies:
79 During the release process, you might need the extra following dependencies:
80
80
81 - ``keyring`` to access your GitHub authentication tokens
81 - ``keyring`` to access your GitHub authentication tokens
82 - ``graphviz`` to generate some graphs in the documentation
82 - ``graphviz`` to generate some graphs in the documentation
83 - ``ghpro`` to generate the stats
83 - ``ghpro`` to generate the stats
84
84
85 Make sure you have all the required dependencies to run the tests as well.
85 Make sure you have all the required dependencies to run the tests as well.
86
86
87
87
88 1. Set Environment variables
88 1. Set Environment variables
89 ----------------------------
89 ----------------------------
90
90
91 Set environment variables to document previous release tag, current
91 Set environment variables to document previous release tag, current
92 release milestone, current release version, and git tag.
92 release milestone, current release version, and git tag.
93
93
94 These variables may be used later to copy/paste as answers to the script
94 These variables may be used later to copy/paste as answers to the script
95 questions instead of typing the appropriate command when the time comes. These
95 questions instead of typing the appropriate command when the time comes. These
96 variables are not used by the scripts directly; therefore, there is no need to
96 variables are not used by the scripts directly; therefore, there is no need to
97 ``export`` them. The format for bash is as follows, but note that these values
97 ``export`` them. The format for bash is as follows, but note that these values
98 are just an example valid only for the 5.0 release; you'll need to update them
98 are just an example valid only for the 5.0 release; you'll need to update them
99 for the release you are actually making::
99 for the release you are actually making::
100
100
101 PREV_RELEASE=4.2.1
101 PREV_RELEASE=4.2.1
102 MILESTONE=5.0
102 MILESTONE=5.0
103 VERSION=5.0.0
103 VERSION=5.0.0
104 BRANCH=master
104 BRANCH=master
105
105
106
106
107 2. Create GitHub stats and finish release note
107 2. Create GitHub stats and finish release note
108 ----------------------------------------------
108 ----------------------------------------------
109
109
110 .. note::
110 .. note::
111
111
112 This step is optional if making a Beta or RC release.
112 This step is optional if making a Beta or RC release.
113
113
114 .. note::
114 .. note::
115
115
116 Before generating the GitHub stats, verify that all closed issues and pull
116 Before generating the GitHub stats, verify that all closed issues and pull
117 requests have `appropriate milestones
117 requests have `appropriate milestones
118 <https://github.com/ipython/ipython/wiki/Dev:-GitHub-workflow#milestones>`_.
118 <https://github.com/ipython/ipython/wiki/Dev:-GitHub-workflow#milestones>`_.
119 `This search
119 `This search
120 <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
120 <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
121 should return no results before creating the GitHub stats.
121 should return no results before creating the GitHub stats.
122
122
123 If a major release:
123 If a major release:
124
124
125 - merge any pull request notes into what's new::
125 - merge any pull request notes into what's new::
126
126
127 python tools/update_whatsnew.py
127 python tools/update_whatsnew.py
128
128
129 - update ``docs/source/whatsnew/development.rst``, to ensure it covers
129 - update ``docs/source/whatsnew/development.rst``, to ensure it covers
130 the major release features
130 the major release features
131
131
132 - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is
132 - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is
133 the numerical release version
133 the numerical release version
134
134
135 - generate summary of GitHub contributions, which can be done with::
135 - generate summary of GitHub contributions, which can be done with::
136
136
137 python tools/github_stats.py --milestone $MILESTONE > stats.rst
137 python tools/github_stats.py --milestone $MILESTONE > stats.rst
138
138
139 which may need some manual cleanup of ``stats.rst``. Add the cleaned
139 which may need some manual cleanup of ``stats.rst``. Add the cleaned
140 ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst``
140 ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst``
141 where ``X`` is the numerical release version (don't forget to add it to
141 where ``X`` is the numerical release version (don't forget to add it to
142 the git repository as well). If creating a major release, make a new
142 the git repository as well). If creating a major release, make a new
143 ``github-stats-X.rst`` file; if creating a minor release, the content
143 ``github-stats-X.rst`` file; if creating a minor release, the content
144 from ``stats.rst`` may simply be added to the top of an existing
144 from ``stats.rst`` may simply be added to the top of an existing
145 ``github-stats-X.rst`` file.
145 ``github-stats-X.rst`` file.
146
146
147 - Edit ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X``
147 - Edit ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X``
148 file you just created.
148 file you just created.
149
149
150 - You do not need to temporarily remove the first entry called
150 - You do not need to temporarily remove the first entry called
151 ``development``, nor re-add it after the release, it will automatically be
151 ``development``, nor re-add it after the release, it will automatically be
152 hidden when releasing a stable version of IPython (if ``_version_extra``
152 hidden when releasing a stable version of IPython (if ``_version_extra``
153 in ``release.py`` is an empty string.
153 in ``release.py`` is an empty string.
154
154
155 Make sure that the stats file has a header or it won't be rendered in
155 Make sure that the stats file has a header or it won't be rendered in
156 the final documentation.
156 the final documentation.
157
157
158 To find duplicates and update `.mailmap`, use::
158 To find duplicates and update `.mailmap`, use::
159
159
160 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
160 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
161
161
162 If a minor release you might need to do some of the above points manually, and
162 If a minor release you might need to do some of the above points manually, and
163 forward port the changes.
163 forward port the changes.
164
164
165 3. Make sure the repository is clean
165 3. Make sure the repository is clean
166 ------------------------------------
166 ------------------------------------
167
167
168 of any file that could be problematic.
168 of any file that could be problematic.
169 Remove all non-tracked files with:
169 Remove all non-tracked files with:
170
170
171 .. code::
171 .. code::
172
172
173 git clean -xfdi
173 git clean -xfdi
174
174
175 This will ask for confirmation before removing all untracked files. Make
175 This will ask for confirmation before removing all untracked files. Make
176 sure the ``dist/`` folder is clean to avoid any stale builds from
176 sure the ``dist/`` folder is clean to avoid any stale builds from
177 previous build attempts.
177 previous build attempts.
178
178
179
179
180 4. Update the release version number
180 4. Update the release version number
181 ------------------------------------
181 ------------------------------------
182
182
183 Edit ``IPython/core/release.py`` to have the current version.
183 Edit ``IPython/core/release.py`` to have the current version.
184
184
185 in particular, update version number and ``_version_extra`` content in
185 in particular, update version number and ``_version_extra`` content in
186 ``IPython/core/release.py``.
186 ``IPython/core/release.py``.
187
187
188 Step 5 will validate your changes automatically, but you might still want to
188 Step 5 will validate your changes automatically, but you might still want to
189 make sure the version number matches pep440.
189 make sure the version number matches pep440.
190
190
191 In particular, ``rc`` and ``beta`` are not separated by ``.`` or the ``sdist``
191 In particular, ``rc`` and ``beta`` are not separated by ``.`` or the ``sdist``
192 and ``bdist`` will appear as different releases. For example, a valid version
192 and ``bdist`` will appear as different releases. For example, a valid version
193 number for a release candidate (rc) release is: ``1.3rc1``. Notice that there
193 number for a release candidate (rc) release is: ``1.3rc1``. Notice that there
194 is no separator between the '3' and the 'r'. Check the environment variable
194 is no separator between the '3' and the 'r'. Check the environment variable
195 ``$VERSION`` as well.
195 ``$VERSION`` as well.
196
196
197 You will likely just have to modify/comment/uncomment one of the lines setting
197 You will likely just have to modify/comment/uncomment one of the lines setting
198 ``_version_extra``
198 ``_version_extra``
199
199
200
200
201 5. Run the `tools/build_release` script
201 5. Run the `tools/build_release` script
202 ---------------------------------------
202 ---------------------------------------
203
203
204 Running ``tools/build_release`` does all the file checking and building that
204 Running ``tools/build_release`` does all the file checking and building that
205 the real release script will do. This makes test installations, checks that
205 the real release script will do. This makes test installations, checks that
206 the build procedure runs OK, and tests other steps in the release process.
206 the build procedure runs OK, and tests other steps in the release process.
207
207
208 The ``build_release`` script will in particular verify that the version number
208 The ``build_release`` script will in particular verify that the version number
209 match PEP 440, in order to avoid surprise at the time of build upload.
209 match PEP 440, in order to avoid surprise at the time of build upload.
210
210
211 We encourage creating a test build of the docs as well.
211 We encourage creating a test build of the docs as well.
212
212
213 6. Create and push the new tag
213 6. Create and push the new tag
214 ------------------------------
214 ------------------------------
215
215
216 Commit the changes to release.py::
216 Commit the changes to release.py::
217
217
218 git commit -am "release $VERSION" -S
218 git commit -am "release $VERSION" -S
219 git push origin $BRANCH
219 git push origin $BRANCH
220
220
221 (omit the ``-S`` if you are no signing the package)
221 (omit the ``-S`` if you are no signing the package)
222
222
223 Create and push the tag::
223 Create and push the tag::
224
224
225 git tag -am "release $VERSION" "$VERSION" -S
225 git tag -am "release $VERSION" "$VERSION" -s
226 git push origin $VERSION
226 git push origin $VERSION
227
227
228 (omit the ``-S`` if you are no signing the package)
228 (omit the ``-s`` if you are no signing the package)
229
229
230 Update release.py back to ``x.y-dev`` or ``x.y-maint``, and re-add the
230 Update release.py back to ``x.y-dev`` or ``x.y-maint`` commit and push::
231 ``development`` entry in ``docs/source/whatsnew/index.rst`` and push::
232
231
233 git commit -am "back to development" -S
232 git commit -am "back to development" -S
234 git push origin $BRANCH
233 git push origin $BRANCH
235
234
236 (omit the ``-S`` if you are no signing the package)
235 (omit the ``-S`` if you are no signing the package)
237
236
238 Now checkout the tag we just made::
237 Now checkout the tag we just made::
239
238
240 git checkout $VERSION
239 git checkout $VERSION
241
240
242 7. Run the release script
241 7. Run the release script
243 -------------------------
242 -------------------------
244
243
245 Run the ``release`` script, this step requires having a current wheel, Python
244 Run the ``release`` script, this step requires having a current wheel, Python
246 >=3.4 and Python 2.7.::
245 >=3.4 and Python 2.7.::
247
246
248 ./tools/release
247 ./tools/release
249
248
250 This makes the tarballs and wheels, and puts them under the ``dist/``
249 This makes the tarballs and wheels, and puts them under the ``dist/``
251 folder. Be sure to test the ``wheels`` and the ``sdist`` locally before
250 folder. Be sure to test the ``wheels`` and the ``sdist`` locally before
252 uploading them to PyPI. We do not use an universal wheel as each wheel
251 uploading them to PyPI. We do not use an universal wheel as each wheel
253 installs an ``ipython2`` or ``ipython3`` script, depending on the version of
252 installs an ``ipython2`` or ``ipython3`` script, depending on the version of
254 Python it is built for. Using an universal wheel would prevent this.
253 Python it is built for. Using an universal wheel would prevent this.
255
254
256 Use the following to actually upload the result of the build::
255 Use the following to actually upload the result of the build::
257
256
258 ./tools/release upload
257 ./tools/release upload
259
258
260 It should posts them to ``archive.ipython.org`` and to PyPI.
259 It should posts them to ``archive.ipython.org`` and to PyPI.
261
260
262 PyPI/Warehouse will automatically hide previous releases. If you are uploading
261 PyPI/Warehouse will automatically hide previous releases. If you are uploading
263 a non-stable version, make sure to log-in to PyPI and un-hide previous version.
262 a non-stable version, make sure to log-in to PyPI and un-hide previous version.
264
263
265
264
266 8. Draft a short release announcement
265 8. Draft a short release announcement
267 -------------------------------------
266 -------------------------------------
268
267
269 The announcement should include:
268 The announcement should include:
270
269
271 - release highlights
270 - release highlights
272 - a link to the html version of the *What's new* section of the documentation
271 - a link to the html version of the *What's new* section of the documentation
273 - a link to upgrade or installation tips (if necessary)
272 - a link to upgrade or installation tips (if necessary)
274
273
275 Post the announcement to the mailing list and or blog, and link from Twitter.
274 Post the announcement to the mailing list and or blog, and link from Twitter.
276
275
277 .. note::
276 .. note::
278
277
279 If you are doing a RC or Beta, you can likely skip the next steps.
278 If you are doing a RC or Beta, you can likely skip the next steps.
280
279
281 9. Update milestones on GitHub
280 9. Update milestones on GitHub
282 -------------------------------
281 -------------------------------
283
282
284 These steps will bring milestones up to date:
283 These steps will bring milestones up to date:
285
284
286 - close the just released milestone
285 - close the just released milestone
287 - open a new milestone for the next release (x, y+1), if the milestone doesn't
286 - open a new milestone for the next release (x, y+1), if the milestone doesn't
288 exist already
287 exist already
289
288
290 10. Update the IPython website
289 10. Update the IPython website
291 ------------------------------
290 ------------------------------
292
291
293 The IPython website should document the new release:
292 The IPython website should document the new release:
294
293
295 - add release announcement (news, announcements)
294 - add release announcement (news, announcements)
296 - update current version and download links
295 - update current version and download links
297 - update links on the documentation page (especially if a major release)
296 - update links on the documentation page (especially if a major release)
298
297
299 11. Update readthedocs
298 11. Update readthedocs
300 ----------------------
299 ----------------------
301
300
302 Make sure to update readthedocs and set the latest tag as stable, as well as
301 Make sure to update readthedocs and set the latest tag as stable, as well as
303 checking that previous release is still building under its own tag.
302 checking that previous release is still building under its own tag.
304
303
305 12. Update the Conda-Forge feedstock
304 12. Update the Conda-Forge feedstock
306 ------------------------------------
305 ------------------------------------
307
306
308 Follow the instructions on `the repository <https://github.com/conda-forge/ipython-feedstock>`_
307 Follow the instructions on `the repository <https://github.com/conda-forge/ipython-feedstock>`_
309
308
310 13. Celebrate!
309 13. Celebrate!
311 --------------
310 --------------
312
311
313 Celebrate the release and please thank the contributors for their work. Great
312 Celebrate the release and please thank the contributors for their work. Great
314 job!
313 job!
315
314
316
315
317
316
318 Old Documentation
317 Old Documentation
319 =================
318 =================
320
319
321 Out of date documentation is still available and have been kept for archival purposes.
320 Out of date documentation is still available and have been kept for archival purposes.
322
321
323 .. note::
322 .. note::
324
323
325 Developers documentation used to be on the IPython wiki, but are now out of
324 Developers documentation used to be on the IPython wiki, but are now out of
326 date. The wiki is though still available for historical reasons: `Old IPython
325 date. The wiki is though still available for historical reasons: `Old IPython
327 GitHub Wiki. <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
326 GitHub Wiki. <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
General Comments 0
You need to be logged in to leave comments. Login now