A cookiecutter for making new Python repositories.
This template is different from @audreyfeldroy's cookiecutter-pypackage because it uses the source layout and has lots of code quality assurance checks built in. If you're looking for something similar but not quite like this, try her package or see her list of alternatives.
I've written several blog posts outlining all of the ideas that made it into this template:
-
Install
cookiecutter
with:$ pip install cookiecutter
-
Run
cookiecutter
with:$ cookiecutter https://github.com/cthoyt/cookiecutter-snekpack
-
Enter the requested information, then win! Remember, package names should only have letters, numbers, and underscores.
-
If you're working under version control, copy the repository into your folder tracked under git, commit the files, and push to your remote.
Your new python package will have the following:
- Standard
src/
layout - Declarative setup with
setup.cfg
andpyproject.toml
- Reproducible tests with
pytest
andtox
- Reproducible notebooks with
treon
andtox
- A command line interface with
click
- A vanity CLI via python entrypoints
- Version management with
bump2version
- Documentation build with
sphinx
- Testing of code quality with
flake8
intox
- Testing of documentation coverage with
docstr-coverage
intox
- Testing of documentation format and build in
tox
- Testing of package metadata completeness with
pyroma
intox
- Testing of MANIFEST correctness with
check-manifest
intox
- Testing of optional static typing with
mypy
intox
- A
py.typed
file so other packages can use your type hints - Automated running of tests on each push with GitHub Actions
- Configuration for ReadTheDocs
- A good base
.gitignore
generated from gitignore.io. - A pre-formatted README with badges
- A pre-formatted LICENSE file with the MIT License (you can change this to whatever you want, though)
- A pre-formatted CONTRIBUTING guide
- Automatic tool for releasing to PyPI with
tox -e finish
- A copy of the Contributor Covenant as a basic code of conduct
This cookiecutter package is licensed under the MIT License.