Skip to content

frac/copier_baseproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

copier_baseproject

A Copier template for bootstrapping Python projects with the same opinionated tooling stack used in my projects.

What you get

  • uv for package management, Python 3.14 by default
  • ruff (pragmatic ruleset, single-line imports, Google docstrings, line length 88)
  • ty for type checking
  • pytest + pytest-asyncio (auto mode) + pytest-cov, coverage gate 85%
  • src/ layout with tests/ at the repo root
  • Test taxonomy: tests/unit/, tests/integration/, optionally tests/e2e/ and tests/contract/ (Pact provider verification)
  • pre-commit with ruff + ty + hygiene hooks
  • GitHub Actions CI: lint, type-check, pytest with coverage

uv run pytest runs unit + integration only. e2e and contract suites are opt-in.

Usage

uvx copier copy gh:frac/copier_baseproject ./my-new-project
cd my-new-project
git init -b main
uv sync
uv run pre-commit install
uv run pytest

You'll be prompted for project name, slug, description, Python version, and whether to include Pact / e2e tests.

Updating an existing project

If the template changes, you can pull updates into a previously-generated project:

uvx copier update

This uses .copier-answers.yml (committed to the generated project) to know how to re-render.

Layout

  • copier.yml — prompts and config
  • template/ — the actual scaffold; everything in here ends up in generated projects
  • Jinja-rendered files use the .jinja suffix
  • template/{% if include_e2e %}tests/e2e{% endif %}/ and similar handle conditional inclusion

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages