Welcome to the documentation for the Buffalo Blueprint project!
This is a copier-based template project for creating new Python projects for the Buffalo Herd organization hosted on Codeberg with a consistent structure, tooling, and documentation.
What You Get
Generated projects include:
src/layout (src/<package_name>/...)pyproject.tomlwithuvdependcy groupsTesting + coverage (pytest + coverage)
Lint/type checking (ruff, mypy, basedpyright)
Sphinx + MyST documentation scaffold
Towncrier changelog workflow
Forgejo/Codeberg CI workflows (docs publishing, CI, towncrier checks)
Standard repo files (LICENSE, CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, CITATION)
Quick Start
Below is a quick summary of how this project is intended to be used. See the copier workflow documents for more information.
Create a New Project
From a remote template repo:
pipx run copier copy --vcs-ref main \
https://codeberg.org/BuffaloHerd/BuffaloBlueprint.git \
./MyNewProject
Or from a local checkout:
pipx run copier copy ./BuffaloBlueprint ./MyNewProject
Update an Existing Project from Template Changes
From inside the generated project:
pipx run copier update
This uses .copier-answers.yaml stored in the project root directory.
Inputs
Copier will prompt for a small set of project-specific values (name, slug, package name, supported Python versions, keywords, etc.).
These are stored in .copier-answers.yaml in the project root directory.
See the copier project variables document for the details.
Design Choices
This template intentionally standardizes on:
src/layoutuv for environment + dependency group management
Towncrier for changelog fragments and release notes
Codeberg/Forgejo workflows for CI + docs publishing
If you want different defaults, fork this template and adjust copier.yaml and the templated files.
License
This template is licensed under GPLv3. Generated projects inherit the same license by default.