snakeframe
A cookiecutter template for accessible, reproducible Python packages
Documentation
TL;DR¶
All you need is cookiecutter.
Features¶
In this cookiecutter 🍪 template we combine state-of-the-art libraries and best development practices for Python.
Development¶
- Supports
Python 3.9
and higher. - Seamless
conda
+poetry
dependencies manager with conda and poetry files. - Automatic codestyle with
black
,isort
, andpylint
. pre-commit
hooks with code-formatting.- Type checks with
mypy
. - Testing with
pytest
. - Ready-to-use
.editorconfig
and.gitignore
.
Deployment¶
GitHub
integration: issue and pull request templates.Github Actions
with predefined build workflow as the default CI/CD.- Everything is already set up for code style checks, code formatting, testing, linting, etc. with
Makefile
. - Always up-to-date dependencies with
@dependabot
. You only need to enable it. - Automatic release notes with
Release Drafter
. You may see the list of labels inrelease-drafter.yml
. Works perfectly with Semantic Versions specification.
Community¶
- Pull Request and several Issue templates.
- Files such as:
LICENSE
,CONTRIBUTING.md
,CODE_OF_CONDUCT.md
, andSECURITY.md
are generated automatically. Stale action
that closes abandoned issues after a period of inactivity.Sphinx
documentation automatically built with deploy-docs.yml. You just need to activate pages and set source toGitHub Actions
.
Deploying¶
A note to maintainers.
We use bump-my-version to release a new version.
This will create a git tag that is used by poetry-dynamic-version to generate version strings and update CHANGELOG.md
.
For example, to bump the minor
version you would run the following command.
After releasing a new version, you need to push and include all tags.
License¶
Code contained in this project is released under the MIT License as specified in LICENSE.md
.
This license grants you the freedom to use, modify, and distribute it as long as you include the original copyright notice contained in LICENSE.md
and the following disclaimer.
Portions of this code were incorporated and adapted with permission from snakeframe by OASCI under the MIT License.