Paul Ganssle | b1ee430 | 2016-02-28 16:01:56 -0500 | [diff] [blame] | 1 | Release Checklist |
| 2 | ----------------------------------------- |
| 3 | [ ] Update __version__ string |
| 4 | [ ] Update classifiers in setup.py to include the latest supported Python |
| 5 | versions. |
| 6 | [ ] Update the metadata in zonefile_metadata.json to include the latest tzdata |
| 7 | release from https://www.iana.org/time-zones. |
| 8 | [ ] If necessary, update the tzdata mirror at https://github.com/dateutil/tzdata |
| 9 | [ ] Update NEWS with list of changes, giving credit to contributors. |
| 10 | [ ] Build the source distribution as, at a minimum, .tar.gz and .zip |
| 11 | [ ] Verify that the source distribution contains all necessary components. |
| 12 | [ ] Build the binary distribution as a wheel |
| 13 | [ ] Verify that the binary distribution can be installed and works. |
| 14 | [ ] Generate MD5 hashes for the source and binary distributions |
| 15 | [ ] Sign the source and binary distributions with a GPG key (if not the one |
| 16 | that made the release, then one signed by the one that made the last |
| 17 | release) |
| 18 | [ ] Commit the changes in git and make a pull request. |
| 19 | [ ] Accept the pull request and tag the repository with the release number. |
| 20 | [ ] Add the contents of the NEWS file to the github release notes for the |
| 21 | release. |
| 22 | [ ] Upload the source and binary distributions along with hashes and signatures |
| 23 | to pypi. |
| 24 | |
| 25 | Optional: |
| 26 | ---------- |
| 27 | [ ] Check that README.rst is up-to-date. |
| 28 | [ ] Check that the documentation builds correctly (cd docs, make html) |
| 29 | |
| 30 | |
| 31 | Instructions |
| 32 | ----------------------------------------- |
| 33 | See the instructions at https://packaging.python.org/en/latest/distributing/ |
| 34 | for more details. |
| 35 | |
| 36 | |
| 37 | Versioning |
| 38 | ---------- |
| 39 | Try and keep to a semantic versioning scheme (http://semver.org/). |
| 40 | |
| 41 | |
| 42 | Source releases |
| 43 | ---------- |
| 44 | Release the sources with, at a minimum, .tar.gz and .zip. Make sure you have a |
| 45 | relatively recent version of setuptools when making the source distribution, as |
| 46 | earlier version will not include the tests. Other formats are |
| 47 | optional. They can be generated using: |
| 48 | |
| 49 | python setup.py sdist --formats=zip,gztar |
| 50 | |
| 51 | To verify that a source release is correct, inspect it using whatever archive |
| 52 | utility you have and make sure it contains all the modules and the tests. Also |
| 53 | make sure that the zoneinfo file is included in the You |
| 54 | may also want to generate a new clean virtualenv and run the tests from the |
| 55 | source distribution (python setup.py test). |
| 56 | |
| 57 | |
| 58 | Binary releases |
| 59 | ---------- |
| 60 | It should always be possible to generate a universal wheel binary distribution |
| 61 | for each release. Generally we do not generate .egg files. In order to generate |
| 62 | a wheel, you need the wheel package (https://wheel.readthedocs.org/en/latest/) |
| 63 | installed, which can be installed with: |
| 64 | |
| 65 | pip install wheel |
| 66 | |
| 67 | Once this is done, generate the wheel with: |
| 68 | |
| 69 | python setup.py bdist_wheel |
| 70 | |
| 71 | |
| 72 | Signing and generate checksums |
| 73 | ---------- |
| 74 | Since all the outputs are generated in the dist/ directory, can generate all the |
| 75 | md5 checksums at once from the base directory by executing: |
| 76 | |
| 77 | md5sum dist/* |
| 78 | |
| 79 | Save these for when uploading the files. Following this, go into the dist |
| 80 | directory and sign each of the results with the relevant key: |
| 81 | |
| 82 | gpg --armor --output <fname>.asc --detach-sig <fname> |
| 83 | |
| 84 | To automate this for all files, you can use the following command: |
| 85 | |
| 86 | for f in dist/*; do gpg --armor --output $f.asc --detach-sig $f; done |
| 87 | |
| 88 | Save these .asc files for when uploading to pypi. Before uploading them, verify |
| 89 | that they are valid signatures: |
| 90 | |
| 91 | gpg --verify <fname>.asc <fname> |
| 92 | |
Paul Ganssle | 66f29ba | 2016-03-17 12:49:09 -0400 | [diff] [blame^] | 93 | To do this in bulk, you can use the command: |
| 94 | |
| 95 | for f in $(find ./dist -type f | grep -v '.asc$'); do gpg --verify $f.asc $f; done |