An example Python project
Project description
Sample PyPI package + GitHub Actions + Versioneer
This template aims to automate the tedious and error-prone steps of tagging/versioning, building and publishing new package versions. This is achieved by syncing git tags and versions with Versioneer, and automating the build and release with GitHub Actions, so that publishing a new version is as painless as:
$ git tag vX.Y.Z && git push --tags
The following guide assumes familiarity with setuptools
and PyPI. For an introduction to Python packaging, see the references at the bottom.
How to use this template
-
Click on the Use this template button to get a copy of this repository.
-
Rename src/sample_package folder to your package name — src/ is where your package must reside.
-
Go through each of the following files and rename all instances of sample-package or sample_package to your package name. Also update the package information such as author names, URLs, etc.
- setup.py
- pyproject.toml
- __init__.py
-
Install
versioneer
andtomli
, and runversioneer
:$ pip install tomli $ pip install versioneer $ versioneer install
Then commit the changes produced by
versioneer
. See here to learn more. -
Setup your PyPI credentials. See the section Saving credentials on Github of this guide. You should use the variable names
TEST_PYPI_API_TOKEN
andPYPI_API_TOKEN
for the TestPyPI and PyPI tokens, respectively. See .github/workflows/release.yaml.
You are all set! It should now be possible to run git tag vX.Y.Z && git push --tags
to automatically version, build and publish a new release to PyPI.
Finally, it is a good idea to configure tag protection rules in your repository.
References
- Python packaging guide: https://packaging.python.org/en/latest/tutorials/packaging-projects/
- ...and how things are changing: https://snarky.ca/what-the-heck-is-pyproject-toml/ — in particular, note that while pyproject.toml seems to be the future, currently Versioneer still depends on setup.py.
- Versioneer: https://github.com/python-versioneer/python-versioneer
- GitHub Actions: https://docs.github.com/en/actions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for sample-package-chanshing-0.0.0.post1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 750c1a9b373d9a2f683e48c0c9f98f0e5c085a2081fd54865d1379c56827fc02 |
|
MD5 | 32a853613ccb088db8bf549d0c82956f |
|
BLAKE2b-256 | a9a8976aea4218ca9879c2135b6e41798280c0a6a621cffe647bdccd5d9af468 |
Hashes for sample_package_chanshing-0.0.0.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb9504cc6a4184e126dbb7fdc6981302f7f0bbaa0bbb6c3744ffa839c17632d2 |
|
MD5 | f4445d710290aae45b998f9c342aa205 |
|
BLAKE2b-256 | e30af7c37511aa1c35382b5e157c072d6542bd8ff24f1ab1c8536cdac2a9e4c3 |