83689e3e创建于 2025年4月7日历史提交

PyPNG Release Procedure

Overview

These modified instructions have not yet been tested.

With pip, we build a wheel file and a source distribution .tar.gz. With twine we upload those to PyPI and the GitLab project repository.

Tool Prerequisites

You'll need pip and twine.

This document cannot describe any detailed method for installing pip, but I recommend using conda or brew to get Python and pip together.

twine can be installed with python -m pip install twine.

Release procedure

At top-level...

Choose the next version number. As of 2022 this of the form: 0.CCYYMMDD.z

Thus in x.y.z notation: x is 0; y is the 8-digit ISO 8601 data; z is the patch number (typically 0, unless you make more than one release a day).

Edit code/png.py and setup.cfg for new version number.

Get release notes into README.md somehow.

Then git commit this.

Make sure you have committed

Get the latest git change hash::

git log -n1 | sed q

Set the PYPNG_VERSION variable (extracted from code/png.py):

. ./pypng-version

Add a tag for this release (the tags have this format so that the automatically generated tarballs from github.com have the right URL).

git tag -a pypng-$PYPNG_VERSION -m "PyPNG release $PYPNG_VERSION"

and push:

git push --tags origin HEAD

Make a clean clone:

cd ${PWD%pypng*}
git clone pypng pypng-$PYPNG_VERSION
cd pypng-$PYPNG_VERSION

Build a wheel file:

pip wheel .

It's possible at this point that you might want to smoke-test the actual release binary. Let's assume that the release binary is good to go.

Maybe use python -m build also/instead. It appears to make source dist tarfiles and wheels and put them in dist/

cd back into your main development directory::

cd ${PWD%pypng*}pypng

Check that the sh dock.sh command populated the dist/ directory in the original pypng directory.

ls dist

(which it won't have done)

Documentation magically appears on ReadTheDocs. In some previous versions, docker was used to build the documentation which was bundled into an sdist.

sphinx-build -N -d sphinx-crud -a man html

Upload to PyPI:

python -m twine upload *.whl

(If it complains about "you must be identified" then use "python setup.py register" first; unlikely to work since i deleted setup.py)

Record Release

Make a record in release/index.txt

Consider adding dist artefacts to dist branch

END