Skip to main content

A clean, automated setup for publishing simple Python packages to PyPI and Anaconda.

Project description

Simple Pypackage

A clean, automated setup for publishing simple Python packages to PyPI and Anaconda.

action pypi anaconda platform codecov docs

Setup

Prepare GitHub Repo

  1. Create new GitHub repository / fork this repository
  2. Setup PyPI and Anaconda Credentials in repository secrets
    • PYPI_USER: PyPI username (use __token__ for API key authentication)
    • PYPI_PASSWORD: PyPI password (use token including the pypi- prefix for API key authentication)
    • ANACONDA_API_TOKEN: Anaconda API token
  3. After first release: Go to Settings and activate your GitHub Pages using the gh-pages branch

Edit Files

  • Rename simple_pypackage folder to your package name
  • Replace all simple-pypackage, simple_pypackage, ppeetteerrs and Peter Yuen with your package name, package slug, username and author name in these files:
    • .devcontainer.json
    • mkdocs.yaml
    • README.md
    • setup.py
    • .github/workflows/build.yaml
    • conda-recipe/meta.yaml
    • {project_name}/__init__.py
  • Change your minimum Python version in setup.py, .github/workflows/build.yaml and .github/workflows/upload.yaml

GitHub Workflow

  • On push / pull request to main branch:
    • Try to build PyPI and Conda packages
    • Run pytest and codecov on all OS types
  • On release created:
    • Build and publish package to PyPI and Anaconda (version is automatically inferred from repo tag)
    • Update docs

Docker Dev Container

  • A .devcontainer.json with my favourite setup is included <3. Use VSCode => Reopen in container to use it if desired.

Usage

Important Gotchas

  • Make sure all product dependencies are available on both conda-forge and pypi
  • Repo version tags must be of the format vX.Y.Z with lowercase v
  • If GitHub Actions are not triggering, check here to make sure it is not because of an outrage.
  • Upload to Codecov might fail if you commit your repository too fast after creation / if you have not logged in to Codecov via GitHub. Just re-run the GitHub action in that case.

Things You Can Do

  • Conda Description: Write a longer and better description for conda-recipe/meta.yaml.
  • Extra Branches: Separate into dev or feature branches. You might want to add GitHub Action triggers to push / pull requests to those branches.
  • Tests: Write tests in pytest. Other testing framework would require minor changes.
  • Documentation: Write some nice documentation in the docs directory.
  • Improve setup.py: You can add description, package_data, classifiers and keywords to your setup.py.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple-pypackage-0.1.0.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

simple_pypackage-0.1.0-py2.py3-none-any.whl (3.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file simple-pypackage-0.1.0.tar.gz.

File metadata

  • Download URL: simple-pypackage-0.1.0.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for simple-pypackage-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bd9842cd9b9c8c80dca577fba57a1e4a28ea13998dfec496eb04e35532bfc221
MD5 e63c8dd6723bed7bd9e2d588583697ac
BLAKE2b-256 2eea3f85f7becedd42d23ed197b2fcef1bfdeb597070e5bc50e991ed07374a28

See more details on using hashes here.

File details

Details for the file simple_pypackage-0.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: simple_pypackage-0.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for simple_pypackage-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b50b446a3570066b7023f21d260367772011ceb7241b7197bb32af9d8f86a199
MD5 86ddbd5987c0eab507a0ba5d4ddde935
BLAKE2b-256 f7338d5e159be4296b1f3e151012fa700baf0a87edf4017ecbd3b5300e00c3bd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page