snickerdoodle¶
Status | |
Documentation | |
Compatibility | |
What is snickerdoodle?¶
snickerdoodle
is an easy-to-use, general-purpose cookiecutter
template for
Python projects utilizing modern tools and best practices. To see an demo repository using this template,
check out
snickerdoodle_demo
.
Why use snickerdoodle?¶
In contrast to highly-opinated templates, snickerdoodle
has limited requirements with powerful options that users can opt into in the cookiecutter
questionnaire.
If you want snickerdoodle
to support other options, please make a feature request or contribute.
- Requirements:
- Dependency Management:
- Linting:
- Testing:
- Templater:
- Options Supported:
- Automated Hooks:
- Badge Styles:
- CI/CD:
- Code Coverage:
(must have
codecov
installed on the named GitHub account) - Dependency Updater:
- Documentation:
on
automatically built and deployed with every commit
- Publishing:
- Repository Initialization:
with an initial commit (must have GitHub Credential Manager installed with token access)
- Virtual Environment Creation:
Getting started¶
Setup¶
If you are new to cookiecutter
or simply want to guarantee that the created repository works as intended, follow the instructions in the snickerdoodle
tutorial.
If you are familiar with cookiecutter
templates, you can go about the
normal construction process. However, if you do not select the optional
automatic setup features in the questionnaire, you should follow the instructions
for manually setting up your virtual
environment
and deploying your
documentation
in the snickerdoodle
tutorial. It is
especially important to follow the document deployment process for your initial deployment - after that GitHub Actions will automatically update and redeploy the
documentation (and you need not use the manual process again).
Usage¶
After your repository is created, you can start coding right away. Every push to GitHub will run any tests in the "tests" folder,
deploy documentation to GitHub Pages, and apply ruff
for linting and
formatting. For more information about the following topics, just click on the
corresponding hyperlink.
Contributing¶
Contributors are always welcome and should find snickerdoodle
easy to work
with. The template is highly documented so that users and developers can adapt
or extend snickerdoodle
to work with their projects. So, forking and creating
different template spins is encouraged. If you want to contribute directly, feel free to grab an issue to work on
or make a suggested improvement. If you wish to contribute, please read the
Contribution Guide and Code of
Conduct.
Similar Projects¶
These are other cookiecutter
templates using uv
as their dependency manager:
- cookiecutter-uv-hypermodern-python:
an opinionated template that
uses, among other tools,
sphinx
, GitHub Actions,nox
,mypy
,typeguard
, Prettier, Click, andruff
. If you do not mind those choices and wanted a modern, maintained template, this is the one to use. - cookiecutter-uv: uses
ruff
,mypy
,tox
,mkdocs
, anddeptry
. - ultraviolet: a basic template that requires Homebrew.
Acknowledgements¶
I'd also like to extend a special thanks to pawamoy whose excellent mkdocs
extensions and utlities are incorporated into snickerdoodle
. Some of the scripts, documentation, configuration files, and other CI code were all adapted from pawamoy's repositories.
I would also like to thank the University of Kansas School of Law for tolerating and supporting this law professor's coding efforts, an endeavor which is well outside the typical scholarly activities in the discipline.