Skip to main content

Python Library Template

Python library template with security scanning, automated publishing, and optional AWS integration.

CI Pipeline PyPI Python

Poetry Code style: black Linting: Ruff pre-commit Dependabot

pytest GitHub Actions Semantic Release AWS SAM License: AGPL v3

📊 Live Dashboards

📖 Documentation 🧪 Test Results 📊 Coverage 🔒 Security ⚖️ Compliance

⚡ What You Get

Zero-Config CI/CD Pipeline

  • Matrix testing with HTML reports
  • Automated security scanning (Bandit, Safety, pip-audit, Semgrep)
  • License compatibility checking and compliance reports
  • Semantic versioning with automated changelog generation

Enterprise-Grade Quality

  • Pre-commit hooks (Ruff, Black, conventional commits)
  • Test-driven development setup with Click CLI testing
  • Code coverage reporting with beautiful HTML dashboards
  • API documentation auto-generated and deployed to GitHub Pages

Modern Python Stack

  • Poetry dependency management with security/compliance groups
  • Trusted publishing to PyPI/TestPyPI (no API keys needed)
  • Optional AWS SAM integration with ephemeral test environments
  • Windows/Git Bash compatibility with comprehensive guidance

🚀 Quick Start

1. Get the Template

# Use as GitHub template or clone
gh repo create my-awesome-lib --template svange/augint-library-test --public
cd my-awesome-lib

2. Quick Setup

# Run the two-stage bootstrap
python bootstrap-stage1.py     # Template customization
python bootstrap-stage2.py     # AWS integration (after manual SAM setup)

What this does:

  • Customizes template with your project name
  • Sets up AWS pipeline infrastructure
  • Configures GitHub Actions OIDC authentication
  • Creates comprehensive development environment

📋 For detailed setup instructions, see BOOTSTRAP.md

3. Secure Your Secrets

# Add GitHub token to .env, then
chezmoi add .env
chezmoi git add . && chezmoi git commit -m "Add project secrets"

4. Go Live

poetry install && pre-commit install
git add . && git commit -m "feat: initial project setup"
git push

That's it! Your CI/CD pipeline is now running with full security scanning and automated publishing.

📋 Prerequisites

Required Tools:

PyPI Setup (Important - Do This First!):

  1. Reserve your package name on PyPI and TestPyPI
  2. Set up Trusted Publishing:
    • Publisher: GitHub Actions
    • Repository: your-account/your-repo
    • Workflow: pipeline.yaml
    • Environment: pypi

Windows Users:

# Install tools
winget install Python.Python.3.11
winget install twpayne.chezmoi
winget install --id FiloSottile.age

# Set environment for Claude Code
$env:CLAUDE_CODE_GIT_BASH_PATH="C:\Program Files\Git\bin\bash.exe"

AWS Setup (Optional - One Time Per Account):

# Enable GitHub Actions OIDC
aws iam create-open-id-connect-provider \
  --url https://token.actions.githubusercontent.com \
  --client-id-list sts.amazonaws.com

🏗️ Project Setup

This template uses a two-stage bootstrap process that eliminates common setup friction:

Stage Purpose When to Run
Stage 1 Template customization Immediately after cloning
Stage 2 AWS integration After sam pipeline bootstrap

Why two stages? This approach prevents dependency conflicts and handles the interactive SAM setup gracefully.

See BOOTSTRAP.md for complete setup instructions (delete after setup).

📚 Documentation Best Practices

API Documentation (Google-style docstrings):

def process_data(data: list[str], format: str = "json") -> dict:
    """Process input data and return formatted results.

    Args:
        data: List of strings to process.
        format: Output format ("json" or "xml").

    Returns:
        Processed data in specified format.

    Example:
        >>> process_data(["item1", "item2"])
        {"processed": ["item1", "item2"]}
    """

Library vs CLI Design:

  • Use __all__ to control public API surface
  • Keep CLI commands in separate modules
  • Document both library and CLI usage in module docstrings

🛠️ Development Workflow

# Daily development
poetry run pytest              # Run fast tests
poetry run pytest -m slow      # Run AWS integration tests  
poetry run ruff check --fix     # Lint and fix
poetry run black .              # Format code

# Security and compliance (CI runs these automatically)
poetry install --with security,compliance
poetry run bandit -r src/
poetry run safety check
poetry run pip-licenses

# Documentation
poetry run pdoc src/your_module  # Generate docs locally

💡 Pro Tips

  • Branch Protection: See .github/BRANCH_PROTECTION.md for recommended settings
  • Dependabot: Auto-merge is configured for safe updates (patch/minor)
  • Security Scans: Only run on main/dev branches to keep feature branches fast
  • Windows Users: All commands work in Git Bash, PowerShell, and CMD
  • Claude Code: Generate CLAUDE.md during bootstrap for AI-assisted development

Metadata

Release files for augint-library-test 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for augint-library-test 1.0.0
File Size Uploaded
augint_library_test-1.0.0.tar.gz 32.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for augint-library-test 1.0.0
File Interpreter ABI Platform
augint_library_test-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.8 kB

Release files / augint_library_test-1.0.0.tar.gz

Download URL augint_library_test-1.0.0.tar.gz
Size 32.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ae1eb4271079f952ed4f03cbb7133346ae41a402f76a8a07dbc45adc54a43756
BLAKE2b-256 checksum
How to use checksums
a42b5121540f232efe8e61c7134f07908e974cb5c644b6f03d917eb62a5ff5ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release files / augint_library_test-1.0.0-py3-none-any.whl

Download URL augint_library_test-1.0.0-py3-none-any.whl
Size 30.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96f949fdc7b89358e43b0cd3fd144eee0e707d21730c6f220d4ccd14de91120c
BLAKE2b-256 checksum
How to use checksums
9be0cd706f522c119680ded509b4d80044ce805b9a3a03b4443cea62f0c1b371
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page