βοΈ Configuration GuideΒΆ
βBy failing to prepare, you are preparing to fail.β β Benjamin Franklin
This guide covers every configurable option in the Seedling template so you can shape your project exactly how you want it. π±
π§© Template Variables & Prompts (12 total)ΒΆ
# |
Prompt (variable) |
What it controls |
Example value |
---|---|---|---|
1 |
Project Name ( |
Human-friendly display name used in docs and metadata |
|
2 |
Project Slug ( |
Import-safe package folder (lowercase, underscores) |
|
3 |
Project Description ( |
Short tagline shown in README, |
|
4 |
Project Keywords ( |
Comma-separated keywords used in |
|
5 |
Author Name ( |
Primary maintainerβs name for docs & license header |
|
6 |
Author Email ( |
Contact e-mail baked into |
|
7 |
GitHub Username ( |
Used to craft repo URLs and badge links |
|
8 |
Copyright Year ( |
Year injected into the |
|
9 |
Version ( |
Initial semantic version pinned in |
|
10 |
License ( |
SPDX ID dropped into |
|
11 |
Python Versions ( |
Comma-separated list for CI matrix & |
|
12 |
Coverage Threshold ( |
Minimum % before CI fails |
|
π Configuration ExamplesΒΆ
Basic Python PackageΒΆ
project_name: "My Package"
project_slug: "my_package"
project_description: "A simple Python package"
author_name: "Your Name"
author_email: "your.email@example.com"
github_username: "yourusername"
license: "MIT"
python_versions: "3.11,3.12"
coverage_threshold: 80
CLI ApplicationΒΆ
project_name: "My CLI App"
project_slug: "my_cli_app"
project_description: "A command-line interface application"
author_name: "Your Name"
author_email: "your.email@example.com"
github_username: "yourusername"
license: "Apache-2.0"
python_versions: "3.12"
coverage_threshold: 85
include_cli: true
Enterprise LibraryΒΆ
project_name: "Enterprise Library"
project_slug: "enterprise_library"
project_description: "A comprehensive enterprise-grade Python library"
project_keywords: "enterprise,library,python,api,rest"
author_name: "Your Full Name"
author_email: "your.full.name@company.com"
github_username: "yourusername"
copyright_year: "2024"
version: "1.0.0"
license: "Apache-2.0"
python_versions: "3.11,3.12,3.13"
coverage_threshold: 95
include_cli: true
enable_conda_fallback: true
βοΈ Using Configuration FilesΒΆ
Method 1 β Interactive PromptsΒΆ
copier copy https://github.com/jeffrichley/seedling.git my-project
# Answer prompts interactively
Method 2 β Data FileΒΆ
# my-config.yaml
project_name: "My Project"
project_slug: "my_project"
project_description: "My awesome project"
author_name: "Your Name"
author_email: "your.email@example.com"
github_username: "yourusername"
license: "MIT"
python_versions: "3.11,3.12"
coverage_threshold: 85
copier copy https://github.com/jeffrichley/seedling.git my-project --data-file my-config.yaml
Method 3 β Command Line ArgumentsΒΆ
copier copy https://github.com/jeffrichley/seedling.git my-project \
--data project_name="My Project" \
--data project_slug="my_project" \
--data author_name="Your Name" \
--data license="MIT"
π§ͺ Validation RulesΒΆ
Python Versions: Comma-separated list, valid Python version numbers, at least one required.
Coverage Threshold: Integer 0β100, used in CI/CD gates.
Project Slug: Lowercase letters, numbers, underscores only.
π Post-Generation ConfigurationΒΆ
Update the template:
cd my-project
copier update
Override a setting:
copier update --data coverage_threshold=90
Skip specific files:
copier update --skip .github/workflows/ci.yml
π Environment VariablesΒΆ
For sensitive data:
export SEEDLING_AUTHOR_EMAIL="your.email@example.com"
export SEEDLING_GITHUB_USERNAME="yourusername"
copier copy https://github.com/jeffrichley/seedling.git my-project
π± Best PracticesΒΆ
Use descriptive names
Choose licenses intentionally
Set realistic coverage targets (start at 80%)
Commit configuration files for reproducibility
Keep them under version control
π TroubleshootingΒΆ
Invalid slug β lowercase letters, numbers, underscores only
Bad Python version format β e.g.,
3.11,3.12
Coverage threshold invalid β must be 0β100
See the π Examples page for more working configs.