βš™οΈ 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 (project_name)

Human-friendly display name used in docs and metadata

Data Wizard

2

Project Slug (project_slug)

Import-safe package folder (lowercase, underscores)

data_wizard

3

Project Description (project_description)

Short tagline shown in README, pyproject, and PyPI

A modern Python data toolkit

4

Project Keywords (project_keywords)

Comma-separated keywords used in pyproject.toml for package metadata and search SEO

ai, automation, audio

5

Author Name (author_name)

Primary maintainer’s name for docs & license header

Jane Doe

6

Author Email (author_email)

Contact e-mail baked into pyproject metadata

jane@example.com

7

GitHub Username (github_username)

Used to craft repo URLs and badge links

janedoe

8

Copyright Year (copyright_year)

Year injected into the LICENSE file and doc headers

2025

9

Version (version)

Initial semantic version pinned in pyproject.toml, shown in badges & release tags

0.1.0

10

License (license)

SPDX ID dropped into LICENSE and pyproject

MIT

11

Python Versions (python_versions)

Comma-separated list for CI matrix & pyproject

3.11,3.12

12

Coverage Threshold (coverage_threshold)

Minimum % before CI fails

80


πŸ“‚ 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¢

  1. Use descriptive names

  2. Choose licenses intentionally

  3. Set realistic coverage targets (start at 80%)

  4. Commit configuration files for reproducibility

  5. 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.