/cookiecutter-pypackage

Cookiecutter template for a Python package.

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Cookiecutter PyPackage

https://circleci.com/gh/apiology/cookiecutter-pypackage.svg?style=svg

PyPackage Boilerplate contains all the boilerplate you need to create a PyPackage project.

This is a fork

Hi! I'm apiology and this is (originally) a fork of https://github.com/audreyr/cookiecutter-pypackage/

Changes made to the original (see GitHub view):

  • Remove TravisCI in favor of CircleCI
  • Remove pyup in favor of GitHub
  • Added note and new travis build icon to top of README
  • Some whitespace fixes in README.rst
  • Make setup.py executable
  • Support modern Python 3 only
  • Support quality gem for linting
  • Support pyenv-virtualenv
  • Support mypy type checking
  • ...and no doubt others!

Original README

Updates Build Status Documentation Status

Cookiecutter template for a Python package.

Features

  • Testing setup with unittest and python setup.py test or pytest
  • Travis-CI: Ready for Travis Continuous Integration testing
  • Tox testing: Setup to easily test for Python 3.7, 3.8, 3.9, 3.10 and 3.11.
  • Sphinx docs: Documentation ready for generation with, for example, Read the Docs
  • bump2version: Pre-configured version bumping with a single command
  • Auto-release to PyPI when you push a new tag to main (optional)
  • Command line interface using argparse (optional)

Build Status

Linux:

Linux build status on Travis CI

Windows:

Windows build status on Appveyor

Quickstart

Install the latest Cookiecutter if you haven't installed it yet (this requires Cookiecutter 1.4.0 or higher):

pip install -U cookiecutter

Generate a Python package project:

cookiecutter https://github.com/audreyfeldroy/cookiecutter-pypackage.git

Then:

  • Create a repo and put it there.
  • Add the repo to your Travis-CI account.
  • Install the dev requirements into a virtualenv. (pip install -r requirements_dev.txt)
  • Register your project with PyPI.
  • Run the Travis CLI command travis encrypt --add deploy.password to encrypt your PyPI password in Travis config and activate automated deployment on PyPI when you push a new tag to main branch.
  • Add the repo to your Read the Docs account + turn on the Read the Docs service hook.
  • Release your package by pushing a new tag to main.
  • Add a requirements.txt file that specifies the packages you will need for your project and their versions. For more info see the pip docs for requirements files.

For more details, see the cookiecutter-pypackage tutorial.

Not Exactly What You Want?

Don't worry, you have options:

Similar Cookiecutter Templates

Fork This / Create Your Own

If you have differences in your preferred setup, I encourage you to fork this to create your own version. Or create your own; it doesn't strictly have to be a fork.

  • Once you have your own version working, add it to the Similar Cookiecutter Templates list above with a brief description.
  • It's up to you whether or not to rename your fork/own version. Do whatever you think sounds good.

Or Submit a Pull Request

I also accept pull requests on this, if they're small, atomic, and if they make my own packaging experience better.