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