Skip to main content

Easy-to-use, general-purpose, modern cookiecutter template for Python projects.

Project description

snickerdoodle

snickerdoodle cookie logo

Status PyPI Latest Release GitHub Latest Release Project Stability
Documentation Hosted By
Compatibility Compatible Python Versions

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.

  • Built-in:
    • Dependency Management: Dependency Manager
    • Linting: Ruff
    • Testing: Testing
    • Templater: cookiecutter
  • Options Supported:
    • Automated Hooks: Pre-commit
    • CI/CD: CI
    • Code Coverage: Coverage (must have Coverage installed on the named GitHub account)
    • Dependency Updater: Dependency Maintainer
    • Different Badge Styles:
      • flat style
      • flat square
      • for-the-badge style
      • plastic style
      • social style
    • Documentation: Documentation Tool on Documentation Host automatically built and deployed with every commit
    • Publishing:
      • PyPI with GitHub Actions using publish.yml
      • Repo Host automatically with any commit beginning with a version number (e.g., "0.2.3")
    • Repository Initialization: Repo Host with an initial commit (must have Repo Host installed with token access)
    • Virtual Environment Creation: Virtural Environment Manager

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, and ruff. 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, and deptry.
  • 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.

License

License

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

snickerdoodle-0.2.3.tar.gz (825.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snickerdoodle-0.2.3-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file snickerdoodle-0.2.3.tar.gz.

File metadata

  • Download URL: snickerdoodle-0.2.3.tar.gz
  • Upload date:
  • Size: 825.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for snickerdoodle-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f7d603e304f164b58e6b32568e23c36b37ca9b18bc50d642f34ab7af5419936b
MD5 dc697f16de16acbb320c18b6be363f83
BLAKE2b-256 9ccfa5400ae634b91fd002fd0756b597a12db428b98f78abdbce9e54326f68d9

See more details on using hashes here.

File details

Details for the file snickerdoodle-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: snickerdoodle-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for snickerdoodle-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 786acf6d5a7bd5cd6da6d22557333b024c0354be56a510b6be13351ad32f0f69
MD5 1a48a07801e96cdf75f3c3182d271d29
BLAKE2b-256 459624d28a16da9b5d675d409a7d4995b319cea0d07b97b763f17a387bd23f2a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page