##// END OF EJS Templates
Add a core dev section to docs
Carol Willing -
Show More
@@ -0,0 +1,67 b''
1 .. _core_developer_guide:
2
3 ==================================
4 Developer's guide for core IPython
5 ==================================
6
7 This guide documents the development of core *IPython itself*. Developers of
8 third party tools and libraries that use IPython should see the
9 :doc:`development/index` at `Developer's guide for Third Party Tools and Libraries`.
10
11 Developers working on IPython itself should also consult the
12 `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
13 on the IPython GitHub wiki.
14
15 .. toctree::
16 :maxdepth: 1
17
18 release_process
19
20 Making an IPython release
21 =========================
22
23 Make sure the repository is clean of any file that could be problematic.
24 You can remove all non-tracked files with:
25
26 .. code::
27
28 git clean -xfdi
29
30 This would ask you for confirmation before removing all untracked files. Make
31 sure the ``dist/`` folder is clean and avoid stale build from
32 previous attempts.
33
34 1. Update version number in ``IPython/core/release.py``.
35
36 Make sure the version number match pep440, in particular, `rc` and `beta` are
37 not separated by `.` or the `sdist` and `bdist` will appear as different
38 releases.
39
40 2. Commit and tag the release with the current version number:
41
42 .. code::
43
44 git commit -am "release $VERSION"
45 git tag $VERSION
46
47
48 3. You are now ready to build the ``sdist`` and ``wheel``:
49
50 .. code::
51
52 python setup.py sdist --formats=zip,gztar
53 python2 setup.py bdist_wheel
54 python3 setup.py bdist_wheel
55
56
57 4. You can now test the ``wheel`` and the ``sdist`` locally before uploading to PyPI.
58 Make sure to use `twine <https://github.com/pypa/twine>`_ to upload the archives over SSL.
59
60 .. code::
61
62 $ twine upload dist/*
63
64 5. If all went well, change the ``IPython/core/release.py`` back adding the ``.dev`` suffix.
65
66 6. Push directly on master, not forgetting to push ``--tags``.
67
@@ -0,0 +1,99 b''
1 This document contains notes about the process that is used to release IPython.
2 Our release process is currently not very formal and could be improved.
3
4 Most of the release process is automated by the `release` script in the `tools`
5 directory of our main repository. This document is just a handy reminder for
6 the release manager.
7
8 # 0. Environment variables
9
10 You can set some env variables to note previous release tag and current release milestone, version, and git tag:
11
12 PREV_RELEASE=rel-1.0.0
13 MILESTONE=1.1
14 VERSION=1.1.0
15 TAG="rel-$VERSION"
16 BRANCH=master
17
18 These will be used later if you want to copy/paste, or you can just type the appropriate command when the time comes. These variables are not used by scripts (hence no `export`).
19
20 # 1. Finish release notes
21
22 - If a major release:
23
24 - merge any pull request notes into what's new:
25
26 python tools/update_whatsnew.py
27
28 - update `docs/source/whatsnew/development.rst`, to ensure it covers the major points.
29 - move the contents of `development.rst` to `versionX.rst`
30 - generate summary of GitHub contributions, which can be done with:
31
32 python tools/github_stats.py --milestone $MILESTONE > stats.rst
33
34 which may need some manual cleanup. Add the cleaned up result and add it to `docs/source/whatsnew/github-stats-X.rst` (make a new file, or add it to the top, depending on whether it is a major release).
35 You can use:
36
37 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
38
39 to find duplicates and update `.mailmap`.
40 Before generating the GitHub stats, verify that all closed issues and pull requests [have appropriate milestones](https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones). [This search](https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue) should return no results.
41
42 # 2. Run the `tools/build_release` script
43
44 This does all the file checking and building that the real release script will do.
45 This will let you do test installations, check that the build procedure runs OK, etc.
46 You may want to also do a test build of the docs.
47
48 # 3. Create and push the new tag
49
50 Edit `IPython/core/release.py` to have the current version.
51
52 Commit the changes to release.py and jsversion:
53
54 git commit -am "release $VERSION"
55 git push origin $BRANCH
56
57 Create and push the tag:
58
59 git tag -am "release $VERSION" "$TAG"
60 git push origin --tags
61
62 Update release.py back to `x.y-dev` or `x.y-maint`, and push:
63
64 git commit -am "back to development"
65 git push origin $BRANCH
66
67 # 4. Get a fresh clone of the tag for building the release:
68
69 cd /tmp
70 git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG"
71
72 # 5. Run the `release` script
73
74 cd tools && ./release
75
76 This makes the tarballs, zipfiles, and wheels. It posts them to archive.ipython.org and
77 registers the release with PyPI.
78
79 This will require that you have current wheel, Python 3.4 and Python 2.7.
80
81 # 7. Update the IPython website
82
83 - release announcement (news, announcements)
84 - update current version and download links
85 - (If major release) update links on the documentation page
86
87 # 8. Drafting a short release announcement
88
89 This should include i) highlights and ii) a link to the html version of
90 the *What's new* section of the documentation.
91
92 Post to mailing list, and link from Twitter.
93
94 # 9. Update milestones on GitHub
95
96 - close the milestone you just released
97 - open new milestone for (x, y+1), if it doesn't exist already
98
99 # 10. Celebrate!
@@ -1,20 +1,14 b''
1 .. _developer_guide:
1 .. _developer_guide:
2
2
3 =========================
3 =====================================================
4 IPython developer's guide
4 Developer's guide for Third Party Tools and Libraries
5 =========================
5 =====================================================
6
6
7 This are two categories of developer focused documentation:
7 .. important:
8
8
9 1. Documentation for developers of *IPython itself*.
9 This guide contains information for developers of third party tools and
10 2. Documentation for developers of third party tools and libraries
10 libraries that use IPython. Documentation for developers of core
11 that use IPython.
11 *IPython itself* can be found in the :doc:`coredev/index`.
12
13 This part of our documentation only contains information in the second category.
14
15 Developers interested in working on IPython itself should consult
16 our `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
17 on the IPython GitHub wiki.
18
12
19 .. toctree::
13 .. toctree::
20 :maxdepth: 1
14 :maxdepth: 1
General Comments 0
You need to be logged in to leave comments. Login now