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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

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