You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.5 KiB
96 lines
3.5 KiB
Release Checklist
|
|
-----------------------------------------
|
|
[ ] Update __version__ string
|
|
[ ] Update classifiers in setup.py to include the latest supported Python
|
|
versions.
|
|
[ ] Update the metadata in zonefile_metadata.json to include the latest tzdata
|
|
release from https://www.iana.org/time-zones.
|
|
[ ] If necessary, update the tzdata mirror at https://github.com/dateutil/tzdata
|
|
[ ] Update NEWS with list of changes, giving credit to contributors.
|
|
[ ] Build the source distribution as, at a minimum, .tar.gz and .zip
|
|
[ ] Verify that the source distribution contains all necessary components.
|
|
[ ] Build the binary distribution as a wheel
|
|
[ ] Verify that the binary distribution can be installed and works.
|
|
[ ] Generate MD5 hashes for the source and binary distributions
|
|
[ ] Sign the source and binary distributions with a GPG key (if not the one
|
|
that made the release, then one signed by the one that made the last
|
|
release)
|
|
[ ] Commit the changes in git and make a pull request.
|
|
[ ] Accept the pull request and tag the repository with the release number.
|
|
[ ] Add the contents of the NEWS file to the github release notes for the
|
|
release.
|
|
[ ] Upload the source and binary distributions along with hashes and signatures
|
|
to pypi.
|
|
|
|
Optional:
|
|
----------
|
|
[ ] Check that README.rst is up-to-date.
|
|
[ ] Check that the documentation builds correctly (cd docs, make html)
|
|
|
|
|
|
Instructions
|
|
-----------------------------------------
|
|
See the instructions at https://packaging.python.org/en/latest/distributing/
|
|
for more details.
|
|
|
|
|
|
Versioning
|
|
----------
|
|
Try and keep to a semantic versioning scheme (http://semver.org/).
|
|
|
|
|
|
Source releases
|
|
----------
|
|
Release the sources with, at a minimum, .tar.gz and .zip. Make sure you have a
|
|
relatively recent version of setuptools when making the source distribution, as
|
|
earlier version will not include the tests. Other formats are
|
|
optional. They can be generated using:
|
|
|
|
python setup.py sdist --formats=zip,gztar
|
|
|
|
To verify that a source release is correct, inspect it using whatever archive
|
|
utility you have and make sure it contains all the modules and the tests. Also
|
|
make sure that the zoneinfo file is included in the You
|
|
may also want to generate a new clean virtualenv and run the tests from the
|
|
source distribution (python setup.py test).
|
|
|
|
|
|
Binary releases
|
|
----------
|
|
It should always be possible to generate a universal wheel binary distribution
|
|
for each release. Generally we do not generate .egg files. In order to generate
|
|
a wheel, you need the wheel package (https://wheel.readthedocs.io/en/latest/)
|
|
installed, which can be installed with:
|
|
|
|
pip install wheel
|
|
|
|
Once this is done, generate the wheel with:
|
|
|
|
python setup.py bdist_wheel
|
|
|
|
|
|
Signing and generate checksums
|
|
----------
|
|
Since all the outputs are generated in the dist/ directory, can generate all the
|
|
md5 checksums at once from the base directory by executing:
|
|
|
|
md5sum dist/*
|
|
|
|
Save these for when uploading the files. Following this, go into the dist
|
|
directory and sign each of the results with the relevant key:
|
|
|
|
gpg --armor --output <fname>.asc --detach-sig <fname>
|
|
|
|
To automate this for all files, you can use the following command:
|
|
|
|
for f in dist/*; do gpg --armor --output $f.asc --detach-sig $f; done
|
|
|
|
Save these .asc files for when uploading to pypi. Before uploading them, verify
|
|
that they are valid signatures:
|
|
|
|
gpg --verify <fname>.asc <fname>
|
|
|
|
To do this in bulk, you can use the command:
|
|
|
|
for f in $(find ./dist -type f | grep -v '.asc$'); do gpg --verify $f.asc $f; done
|