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
versioneerandtomli, 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_TOKENandPYPI_API_TOKENfor 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sample-package-chanshing-0.0.0.post1.tar.gz.
File metadata
- Download URL: sample-package-chanshing-0.0.0.post1.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
750c1a9b373d9a2f683e48c0c9f98f0e5c085a2081fd54865d1379c56827fc02
|
|
| MD5 |
32a853613ccb088db8bf549d0c82956f
|
|
| BLAKE2b-256 |
a9a8976aea4218ca9879c2135b6e41798280c0a6a621cffe647bdccd5d9af468
|
File details
Details for the file sample_package_chanshing-0.0.0.post1-py3-none-any.whl.
File metadata
- Download URL: sample_package_chanshing-0.0.0.post1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb9504cc6a4184e126dbb7fdc6981302f7f0bbaa0bbb6c3744ffa839c17632d2
|
|
| MD5 |
f4445d710290aae45b998f9c342aa205
|
|
| BLAKE2b-256 |
e30af7c37511aa1c35382b5e157c072d6542bd8ff24f1ab1c8536cdac2a9e4c3
|