Show More
@@ -0,0 +1,50 b'' | |||||
|
1 | .. old_release_doc:: | |||
|
2 | ||||
|
3 | Making an IPython release [TODO:: Can this be replaced by the Release Process document???] | |||
|
4 | ========================================================================================== | |||
|
5 | ||||
|
6 | Make sure the repository is clean of any file that could be problematic. | |||
|
7 | You can remove all non-tracked files with: | |||
|
8 | ||||
|
9 | .. code:: | |||
|
10 | ||||
|
11 | git clean -xfdi | |||
|
12 | ||||
|
13 | This would ask you for confirmation before removing all untracked files. Make | |||
|
14 | sure the ``dist/`` folder is clean and avoid stale build from | |||
|
15 | previous attempts. | |||
|
16 | ||||
|
17 | 1. Update version number in ``IPython/core/release.py``. | |||
|
18 | ||||
|
19 | Make sure the version number match pep440, in particular, `rc` and `beta` are | |||
|
20 | not separated by `.` or the `sdist` and `bdist` will appear as different | |||
|
21 | releases. | |||
|
22 | ||||
|
23 | 2. Commit and tag the release with the current version number: | |||
|
24 | ||||
|
25 | .. code:: | |||
|
26 | ||||
|
27 | git commit -am "release $VERSION" | |||
|
28 | git tag $VERSION | |||
|
29 | ||||
|
30 | ||||
|
31 | 3. You are now ready to build the ``sdist`` and ``wheel``: | |||
|
32 | ||||
|
33 | .. code:: | |||
|
34 | ||||
|
35 | python setup.py sdist --formats=zip,gztar | |||
|
36 | python2 setup.py bdist_wheel | |||
|
37 | python3 setup.py bdist_wheel | |||
|
38 | ||||
|
39 | ||||
|
40 | 4. You can now test the ``wheel`` and the ``sdist`` locally before uploading to PyPI. | |||
|
41 | Make sure to use `twine <https://github.com/pypa/twine>`_ to upload the archives over SSL. | |||
|
42 | ||||
|
43 | .. code:: | |||
|
44 | ||||
|
45 | $ twine upload dist/* | |||
|
46 | ||||
|
47 | 5. If all went well, change the ``IPython/core/release.py`` back adding the ``.dev`` suffix. | |||
|
48 | ||||
|
49 | 6. Push directly on master, not forgetting to push ``--tags``. | |||
|
50 |
@@ -1,67 +1,19 b'' | |||||
1 | .. _core_developer_guide: |
|
1 | .. _core_developer_guide: | |
2 |
|
2 | |||
3 | ================================== |
|
3 | ================================== | |
4 | Developer's guide for core IPython |
|
4 | Developer's guide for core IPython | |
5 | ================================== |
|
5 | ================================== | |
6 |
|
6 | |||
7 | This guide documents the development of core *IPython itself*. Developers of |
|
7 | This guide documents the development of core *IPython itself*. Developers of | |
8 | third party tools and libraries that use IPython should see the |
|
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`. |
|
9 | :doc:`development/index` at `Developer's guide for Third Party Tools and Libraries`. | |
10 |
|
10 | |||
11 | Developers working on IPython itself should also consult the |
|
11 | Developers working on IPython itself should also consult the | |
12 | `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_ |
|
12 | `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_ | |
13 | on the IPython GitHub wiki. |
|
13 | on the IPython GitHub wiki. | |
14 |
|
14 | |||
15 | .. toctree:: |
|
15 | .. toctree:: | |
16 | :maxdepth: 1 |
|
16 | :maxdepth: 1 | |
17 |
|
17 | |||
18 | release_process |
|
18 | release_process | |
19 |
|
19 | old_release_doc | ||
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 |
|
@@ -1,99 +1,142 b'' | |||||
1 | This document contains notes about the process that is used to release IPython. |
|
1 | .. _release_process: | |
2 | Our release process is currently not very formal and could be improved. |
|
|||
3 |
|
2 | |||
4 | Most of the release process is automated by the `release` script in the `tools` |
|
3 | ====================== | |
5 | directory of our main repository. This document is just a handy reminder for |
|
4 | Releasing core IPython | |
6 | the release manager. |
|
5 | ====================== | |
7 |
|
6 | |||
8 | # 0. Environment variables |
|
7 | This document contains the process that is used to create an IPython release. | |
9 |
|
8 | |||
10 | You can set some env variables to note previous release tag and current release milestone, version, and git tag: |
|
9 | Conveniently, the `release` script in the `tools` directory of the `IPython` | |
|
10 | repository automates most of the release process. This document serves as a | |||
|
11 | handy reminder and checklist for the release manager. | |||
|
12 | ||||
|
13 | #. Set Environment variables | |||
|
14 | ---------------------------- | |||
|
15 | ||||
|
16 | Set environment variables to document previous release tag, current | |||
|
17 | release milestone, current release version, and git tag: | |||
11 |
|
18 | |||
12 | PREV_RELEASE=rel-1.0.0 |
|
19 | PREV_RELEASE=rel-1.0.0 | |
13 | MILESTONE=1.1 |
|
20 | MILESTONE=1.1 | |
14 | VERSION=1.1.0 |
|
21 | VERSION=1.1.0 | |
15 | TAG="rel-$VERSION" |
|
22 | TAG="rel-$VERSION" | |
16 | BRANCH=master |
|
23 | BRANCH=master | |
17 |
|
24 | |||
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`). |
|
25 | These variables may be used later to copy/paste as answers to the script | |
|
26 | questions instead of typing the appropriate command when the time comes. These | |||
|
27 | variables are not used by the scripts directly; therefore, there is no need to | |||
|
28 | `export` the variables. | |||
|
29 | ||||
|
30 | #. Finish release notes | |||
|
31 | ----------------------- | |||
|
32 | ||||
|
33 | .. note:: | |||
19 |
|
34 | |||
20 | # 1. Finish release notes |
|
35 | Before generating the GitHub stats, verify that all closed issues and | |
|
36 | pull requests `have appropriate milestones <https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones>`_. | |||
|
37 | `This search <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_ | |||
|
38 | should return no results before creating the GitHub stats. | |||
21 |
|
39 | |||
22 |
|
|
40 | If a major release: | |
23 |
|
41 | |||
24 | - merge any pull request notes into what's new: |
|
42 | - merge any pull request notes into what's new:: | |
25 |
|
43 | |||
26 | python tools/update_whatsnew.py |
|
44 | python tools/update_whatsnew.py | |
27 |
|
45 | |||
28 |
- update `docs/source/whatsnew/development.rst`, to ensure it covers |
|
46 | - update `docs/source/whatsnew/development.rst`, to ensure it covers | |
29 | - move the contents of `development.rst` to `versionX.rst` |
|
47 | the major release features | |
30 | - generate summary of GitHub contributions, which can be done with: |
|
48 | - move the contents of `development.rst` to `versionX.rst` where `X` is | |
|
49 | the numerical release version | |||
|
50 | - generate summary of GitHub contributions, which can be done with:: | |||
31 |
|
51 | |||
32 | python tools/github_stats.py --milestone $MILESTONE > stats.rst |
|
52 | python tools/github_stats.py --milestone $MILESTONE > stats.rst | |
33 |
|
53 | |||
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). |
|
54 | which may need some manual cleanup of `stats.rst`. Add the cleaned | |
35 | You can use: |
|
55 | `stats.rst` results to `docs/source/whatsnew/github-stats-X.rst` where | |
|
56 | `X` is the numerical release version. If creating a major release, make | |||
|
57 | a new `github-stats-X.rst` file; if creating a minor release, the | |||
|
58 | content from `stats.rst` may simply be added to the top of an existing | |||
|
59 | `github-stats-X.rst` file. | |||
36 |
|
60 | |||
37 | git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f |
|
61 | To find duplicates and update `.mailmap`, use: | |
38 |
|
62 | |||
39 | to find duplicates and update `.mailmap`. |
|
63 | git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f | |
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 |
|
64 | |||
42 | # 2. Run the `tools/build_release` script |
|
|||
43 |
|
|
65 | ||
44 | This does all the file checking and building that the real release script will do. |
|
66 | #. Run the `tools/build_release` script | |
45 | This will let you do test installations, check that the build procedure runs OK, etc. |
|
67 | --------------------------------------- | |
46 | You may want to also do a test build of the docs. |
|
|||
47 |
|
68 | |||
48 | # 3. Create and push the new tag |
|
69 | This does all the file checking and building that the real release script will | |
|
70 | do. This makes test installations, checks that the build procedure runs OK, | |||
|
71 | and tests other steps in the release process. | |||
|
72 | ||||
|
73 | We encourage creating a test build of the docs as well. | |||
|
74 | ||||
|
75 | #. Create and push the new tag | |||
|
76 | ------------------------------ | |||
49 |
|
77 | |||
50 | Edit `IPython/core/release.py` to have the current version. |
|
78 | Edit `IPython/core/release.py` to have the current version. | |
51 |
|
79 | |||
52 | Commit the changes to release.py and jsversion: |
|
80 | Commit the changes to release.py and jsversion: | |
53 |
|
81 | |||
54 | git commit -am "release $VERSION" |
|
82 | git commit -am "release $VERSION" | |
55 | git push origin $BRANCH |
|
83 | git push origin $BRANCH | |
56 |
|
84 | |||
57 | Create and push the tag: |
|
85 | Create and push the tag: | |
58 |
|
86 | |||
59 | git tag -am "release $VERSION" "$TAG" |
|
87 | git tag -am "release $VERSION" "$TAG" | |
60 | git push origin --tags |
|
88 | git push origin --tags | |
61 |
|
89 | |||
62 | Update release.py back to `x.y-dev` or `x.y-maint`, and push: |
|
90 | Update release.py back to `x.y-dev` or `x.y-maint`, and push: | |
63 |
|
91 | |||
64 | git commit -am "back to development" |
|
92 | git commit -am "back to development" | |
65 | git push origin $BRANCH |
|
93 | git push origin $BRANCH | |
66 |
|
94 | |||
67 | # 4. Get a fresh clone of the tag for building the release: |
|
95 | #. Get a fresh clone | |
|
96 | -------------------- | |||
68 |
|
97 | |||
69 | cd /tmp |
|
98 | Get a fresh clone of the tag for building the release: | |
70 | git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG" |
|
|||
71 |
|
99 | |||
72 | # 5. Run the `release` script |
|
100 | cd /tmp | |
|
101 | git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG" | |||
73 |
|
102 | |||
74 | cd tools && ./release |
|
103 | #. Run the release script | |
|
104 | ------------------------- | |||
75 |
|
105 | |||
76 | This makes the tarballs, zipfiles, and wheels. It posts them to archive.ipython.org and |
|
106 | Run the `release` script:: | |
77 | registers the release with PyPI. |
|
|||
78 |
|
|
107 | ||
79 | This will require that you have current wheel, Python 3.4 and Python 2.7. |
|
108 | cd tools && ./release | |
80 |
|
109 | |||
81 | # 7. Update the IPython website |
|
110 | This makes the tarballs, zipfiles, and wheels. It posts | |
|
111 | them to archive.ipython.org and registers the release with PyPI. | |||
82 |
|
112 | |||
83 | - release announcement (news, announcements) |
|
113 | This step requires having a current wheel, Python 3.4 and Python 2.7. | |
84 | - update current version and download links |
|
|||
85 | - (If major release) update links on the documentation page |
|
|||
86 |
|
114 | |||
87 |
# |
|
115 | #. Draft a short release announcement | |
|
116 | ------------------------------------- | |||
88 |
|
117 | |||
89 | This should include i) highlights and ii) a link to the html version of |
|
118 | This should include i) highlights and ii) a link to the html version of | |
90 | the *What's new* section of the documentation. |
|
119 | the *What's new* section of the documentation. | |
91 |
|
120 | |||
92 | Post to mailing list, and link from Twitter. |
|
121 | Post the announcement to the mailing list, and link from Twitter. | |
|
122 | ||||
|
123 | #. Update milestones on GitHub | |||
|
124 | ------------------------------ | |||
|
125 | ||||
|
126 | - close the just released milestone | |||
|
127 | - open a new milestone for the next release (x, y+1), if the milestone doesn't | |||
|
128 | exist already | |||
|
129 | ||||
|
130 | #. Update the IPython website | |||
|
131 | ----------------------------- | |||
|
132 | The IPython website should document the new release: | |||
|
133 | ||||
|
134 | - add release announcement (news, announcements) | |||
|
135 | - update current version and download links | |||
|
136 | - update links on the documentation page (especially if a major release) | |||
93 |
|
137 | |||
94 | # 9. Update milestones on GitHub |
|
138 | #. Celebrate! | |
|
139 | ------------- | |||
95 |
|
140 | |||
96 | - close the milestone you just released |
|
141 | Celebrate the release and thank the contributors for their work. | |
97 | - open new milestone for (x, y+1), if it doesn't exist already |
|
|||
98 |
|
142 | |||
99 | # 10. Celebrate! |
|
@@ -1,71 +1,71 b'' | |||||
1 | .. _developer_guide: |
|
1 | .. _developer_guide: | |
2 |
|
2 | |||
3 | ===================================================== |
|
3 | ===================================================== | |
4 | Developer's guide for Third Party Tools and Libraries |
|
4 | Developer's guide for Third Party Tools and Libraries | |
5 | ===================================================== |
|
5 | ===================================================== | |
6 |
|
6 | |||
7 | .. important: |
|
7 | .. important: | |
8 |
|
8 | |||
9 | This guide contains information for developers of third party tools and |
|
9 | This guide contains information for developers of third party tools and | |
10 |
libraries that use IPython. Documentation for developers of co |
|
10 | libraries that use IPython. Documentation for developers of co | |
11 | *IPython itself* can be found in the :doc:`coredev/index`. |
|
11 | *IPython itself* can be found in the :doc:`coredev/index`. | |
12 |
|
12 | |||
13 | .. toctree:: |
|
13 | .. toctree:: | |
14 | :maxdepth: 1 |
|
14 | :maxdepth: 1 | |
15 |
|
15 | |||
16 | how_ipython_works |
|
16 | how_ipython_works | |
17 | wrapperkernels |
|
17 | wrapperkernels | |
18 | execution |
|
18 | execution | |
19 | lexer |
|
19 | lexer | |
20 | pycompat |
|
20 | pycompat | |
21 | config |
|
21 | config | |
22 | inputhook_app |
|
22 | inputhook_app | |
23 |
|
23 | |||
24 | Making an IPython release |
|
24 | Making an IPython release | |
25 | ========================= |
|
25 | ========================= | |
26 |
|
26 | |||
27 |
Make sure the repository is clean of any file that could be problematic. |
|
27 | Make sure the repository is clean of any file that could be problematic. | |
28 | You can remove all non-tracked files with: |
|
28 | You can remove all non-tracked files with: | |
29 |
|
29 | |||
30 | .. code:: |
|
30 | .. code:: | |
31 |
|
31 | |||
32 | git clean -xfdi |
|
32 | git clean -xfdi | |
33 |
|
33 | |||
34 | This would ask you for confirmation before removing all untracked files. Make |
|
34 | This would ask you for confirmation before removing all untracked files. Make | |
35 | sure the ``dist/`` folder is clean and avoid stale build from |
|
35 | sure the ``dist/`` folder is clean and avoid stale build from | |
36 | previous attempts. |
|
36 | previous attempts. | |
37 |
|
37 | |||
38 | 1. Update version number in ``IPython/core/release.py``. |
|
38 | 1. Update version number in ``IPython/core/release.py``. | |
39 |
|
39 | |||
40 | Make sure the version number match pep440, in particular, `rc` and `beta` are |
|
40 | Make sure the version number match pep440, in particular, `rc` and `beta` are | |
41 | not separated by `.` or the `sdist` and `bdist` will appear as different |
|
41 | not separated by `.` or the `sdist` and `bdist` will appear as different | |
42 | releases. |
|
42 | releases. | |
43 |
|
43 | |||
44 | 2. Commit and tag the release with the current version number: |
|
44 | 2. Commit and tag the release with the current version number: | |
45 |
|
45 | |||
46 | .. code:: |
|
46 | .. code:: | |
47 |
|
47 | |||
48 | git commit -am "release $VERSION" |
|
48 | git commit -am "release $VERSION" | |
49 | git tag $VERSION |
|
49 | git tag $VERSION | |
50 |
|
50 | |||
51 |
|
51 | |||
52 | 3. You are now ready to build the ``sdist`` and ``wheel``: |
|
52 | 3. You are now ready to build the ``sdist`` and ``wheel``: | |
53 |
|
53 | |||
54 | .. code:: |
|
54 | .. code:: | |
55 |
|
55 | |||
56 | python setup.py sdist --formats=zip,gztar |
|
56 | python setup.py sdist --formats=zip,gztar | |
57 | python2 setup.py bdist_wheel |
|
57 | python2 setup.py bdist_wheel | |
58 | python3 setup.py bdist_wheel |
|
58 | python3 setup.py bdist_wheel | |
59 |
|
59 | |||
60 |
|
60 | |||
61 | 4. You can now test the ``wheel`` and the ``sdist`` locally before uploading to PyPI. |
|
61 | 4. You can now test the ``wheel`` and the ``sdist`` locally before uploading to PyPI. | |
62 | Make sure to use `twine <https://github.com/pypa/twine>`_ to upload the archives over SSL. |
|
62 | Make sure to use `twine <https://github.com/pypa/twine>`_ to upload the archives over SSL. | |
63 |
|
63 | |||
64 | .. code:: |
|
64 | .. code:: | |
65 |
|
65 | |||
66 | $ twine upload dist/* |
|
66 | $ twine upload dist/* | |
67 |
|
67 | |||
68 | 5. If all went well, change the ``IPython/core/release.py`` back adding the ``.dev`` suffix. |
|
68 | 5. If all went well, change the ``IPython/core/release.py`` back adding the ``.dev`` suffix. | |
69 |
|
69 | |||
70 | 6. Push directly on master, not forgetting to push ``--tags``. |
|
70 | 6. Push directly on master, not forgetting to push ``--tags``. | |
71 |
|
71 |
@@ -1,40 +1,41 b'' | |||||
1 | ===================== |
|
1 | ===================== | |
2 | IPython Documentation |
|
2 | IPython Documentation | |
3 | ===================== |
|
3 | ===================== | |
4 |
|
4 | |||
5 | .. htmlonly:: |
|
5 | .. htmlonly:: | |
6 |
|
6 | |||
7 | :Release: |release| |
|
7 | :Release: |release| | |
8 | :Date: |today| |
|
8 | :Date: |today| | |
9 |
|
9 | |||
10 | Welcome to the official IPython documentation. |
|
10 | Welcome to the official IPython documentation. | |
11 |
|
11 | |||
12 | Contents |
|
12 | Contents | |
13 | ======== |
|
13 | ======== | |
14 |
|
14 | |||
15 | .. toctree:: |
|
15 | .. toctree:: | |
16 | :maxdepth: 1 |
|
16 | :maxdepth: 1 | |
17 |
|
17 | |||
18 | overview |
|
18 | overview | |
19 | whatsnew/index |
|
19 | whatsnew/index | |
20 | install/index |
|
20 | install/index | |
21 | interactive/index |
|
21 | interactive/index | |
22 | config/index |
|
22 | config/index | |
23 | development/index |
|
23 | development/index | |
|
24 | coredev/index | |||
24 | api/index |
|
25 | api/index | |
25 | about/index |
|
26 | about/index | |
26 |
|
27 | |||
27 | .. seealso:: |
|
28 | .. seealso:: | |
28 |
|
29 | |||
29 | `Jupyter documentation <http://jupyter.readthedocs.org/en/latest/>`__ |
|
30 | `Jupyter documentation <http://jupyter.readthedocs.org/en/latest/>`__ | |
30 | The Notebook code and many other pieces formerly in IPython are now parts |
|
31 | The Notebook code and many other pieces formerly in IPython are now parts | |
31 | of Project Jupyter. |
|
32 | of Project Jupyter. | |
32 | `ipyparallel documentation <http://ipyparallel.readthedocs.org/en/latest/>`__ |
|
33 | `ipyparallel documentation <http://ipyparallel.readthedocs.org/en/latest/>`__ | |
33 | Formerly ``IPython.parallel``. |
|
34 | Formerly ``IPython.parallel``. | |
34 |
|
35 | |||
35 |
|
36 | |||
36 | .. htmlonly:: |
|
37 | .. htmlonly:: | |
37 | * :ref:`genindex` |
|
38 | * :ref:`genindex` | |
38 | * :ref:`modindex` |
|
39 | * :ref:`modindex` | |
39 | * :ref:`search` |
|
40 | * :ref:`search` | |
40 |
|
41 |
General Comments 0
You need to be logged in to leave comments.
Login now