A modern Copier template for scaffolding Python packages and applications with best practices built-in.
- 📦 Modern Python packaging using UV for lightning-fast dependency management
- ⚡️ Streamlined task execution with Task
- ✍️ Code formatting and linting with Ruff
- 🔍 Type checking with Mypy
- 🛡️ Quality gates with Pre-commit hooks
- 🏷️ Automated versioning following Conventional Commits with Commitizen
- 📋 Changelog generation compatible with Keep A Changelog
- 🔄 Continuous integration with GitHub Actions
- 🏗️ Template updates with Copier for easy maintenance
-
Install UV globally:
curl -LsSf https://astral.sh/uv/install.sh | sh -
Generate your project:
# Create in a new directory uvx copier copy https://github.com/gotofritz/copier-python-template my-project/ --trust # Or create in current directory mkdir my-project && cd my-project uvx copier copy https://github.com/gotofritz/copier-python-template . --trust
Note: The
--trustflag is required as the template executes setup scripts. -
Configure your project by answering the interactive prompts.
-
Initialize Git and create remote repository:
cd my-project git init # Using GitHub CLI (recommended) gh repo create my-org/my-project --private --source=. --push # Or follow GitHub's instructions to push an existing repository
-
Set up dependencies:
uv sync git add uv.lock && git commit -m "feat: add dependency lock file"
Keep your project aligned with the latest template improvements:
uvx copier updateIf conflicts arise, resolve them by inspecting the generated .rej files.
When you enable CLI support during project creation, the template generates a ready-to-use command-line interface:
- Automatic script installation named after your project (kebab-case)
- Sample commands to get you started
- Easy customization via
pyproject.toml
Example usage:
❯ my-project --help
Usage: my-project [OPTIONS] COMMAND [ARGS]...
Main entry point for the CLI.
Options:
-v, --version Show the version and exit.
-h, --help Show this message and exit.
Commands:
simple-command This is a simple command.
subcommand This contains sub-subcommandsTo test modifications to this template:
copier copy ./copier-python-template --trust --vcs-ref=HEAD my-test-project- Fork this repository
- Update all occurrences of
gotofritzto your GitHub username - Customize the template to match your preferences
- Use your forked version in the copy commands above
Your generated project comes with:
- Modern Python packaging with PEP 621 compliant
pyproject.toml - Development tools pre-configured and ready to use
- GitHub Actions workflows for testing and quality checks
- Pre-commit hooks to maintain code quality
- Documentation structure with README and changelog templates
- Testing setup with pytest and coverage reporting