Skip to content

fopina/python-package-template

Repository files navigation

python package template

Content

  • pytest for tests: make test
  • ruff for linting/formatting: make lint (replaces both black and isort)
  • pyproject-pipenv to make sure dependencies in pyproject.toml and Pipfile are in sync
  • .github with actions ready to be used
    • test runs lint checks, unit tests and pyproject-pipenv
    • publish-dev publishes feature branches (dev/dev-*) to:
      • testpypi - more about this on Notes
      • docker image to ghcr.io - remove job if image makes no sense
    • publish-main publishes semver tags to:
      • pypi
      • docker image to ghcr.io

New project checklist

  • Replace folder example with the actual package
  • Replace LICENSE if MIT does not apply
  • Search the project for # TODO to find the (minimum list of) places that need to be changed.
  • Add PYPI credentials to secrets
    • PYPI_USERNAME and PYPI_TOKEN to publish tags to pypi
    • TESTPYPI_USERNAME and TESTPYPI_TOKEN to publish dev branches to testpypi
  • Add codecov token
    • CODECOV_TOKEN taken from link above
  • Replace this README.md - template below

Notes

Feature branch publishing

publish-dev workflow publishes dev/dev-* branches to testpypi.

Other common approach to publish dev branches is to use pre-release channels: version the package with a rc or beta suffix (such as 1.0.0-beta1) and pypi will consider pre-release. In order to install this, the user needs to do pip install PACKAGE --pre otherwise the latest stable is picked up.
However this will "pollute" your pypi index and it still requires you to bump the version (1.0.0-beta1 < 1.0.0) or to install the branch using specific version.

Yet another approach is to simply use an entirely different package name for the dev releases. Tensorflow does that, for example, with tf-nightly.

---

fp-github-template-example

ci test codecov PyPI pyversions Current version on PyPi Very popular Code style: black

CLI that echos whatever you tell it to.

Install

pip install fp-github-template-example

Usage

$ example-cli
Got nothing to say?

$ example-cli hello
HELLO right back at ya!
>>> from example import demo
>>> demo.echo('ehlo')
'EHLO right back at ya!'

Build

Check out CONTRIBUTING.md

About

Personal template for pip packages

Resources

License

Contributing

Stars

Watchers

Forks

Packages