Cookiecutter template for a Python package.
This is a fork from: https://github.com/audreyr/cookiecutter-pypackage
- Free software: BSD license
- Vanilla testing setup with unittest and python setup.py test
- Travis-CI: Ready for Travis Continuous Integration testing
- Tox testing: Setup to easily test for Python 2.6, 2.7, 3.3, 3.4
- Sphinx docs: Documentation ready for generation with, for example, ReadTheDocs
Generate a Python package project:
cookiecutter https://github.com/dariusbakunas/cookiecutter-pypackage.git
Then:
- Create a repo and put it there.
- Add the repo to your Travis CI account.
- Add the repo to your ReadTheDocs account + turn on the ReadTheDocs service hook.
- Release your package the standard Python way. Here's a release checklist: https://gist.github.com/audreyr/5990987
If you use Cookiecutter a lot, you'll find it useful to have a .cookiecutterrc file in your home directory like this:
default_context:
full_name: "Your FullName"
email: "Your email"
github_username: "Your github username"
cookiecutters_dir: "$HOME/my-custom-cookiecutters-dir/"
abbreviations:
pp: https://github.com/username/cookiecutter-pypackage.git
gh: https://github.com/{0}.git
bb: https://bitbucket.org/{0}
Possible settings are:
- default_context: A list of key/value pairs that you want injected as context whenever you generate a project with Cookiecutter. These values are treated like the defaults in cookiecutter.json, upon generation of any project.
- cookiecutters_dir: Directory where your cookiecutters are cloned to when you use Cookiecutter with a repo argument.
- abbreviations: A list of abbreviations for cookiecutters. Abbreviations can be simple aliases for a repo name, or can be used as a prefix, in the form abbr:suffix. Any suffix will be inserted into the expansion in place of the text {0}, using standard Python string formatting. With the above aliases, you could use the cookiecutter-pypackage template simply by saying cookiecutter pp, or cookiecutter gh:username/cookiecutter-pypackage. The gh (github) and bb (bitbucket) abbreviations shown above are actually built in, and can be used without defining them yourself.
Don't worry, you have options:
- Nekroze/cookiecutter-pypackage: A fork of this with a PyTest test runner, strict flake8 checking with Travis/Tox, and some docs and setup.py differences.
- tony/cookiecutter-pypackage: Fork with py2.7+3.3 optimizations. Flask/Werkzeug-style
test runner,
_compat
module and module/doc conventions. SeeREADME.rst
or the github comparison view for exhaustive list of additions and modifications. - Also see the network and family tree for this repo. (If you find anything that should be listed here, please add it and send a pull request!)
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.