Skip to main content

Shared documentation infrastructure for provide.io ecosystem

Project description

Provide.io Ecosystem Documentation

Welcome to the comprehensive documentation hub for the provide.io ecosystem - a collection of Python tools and frameworks for building Terraform providers, packaging applications, and managing development workflows.

Key Features

  • Centralized documentation for the provide.io ecosystem.
  • Shared MkDocs theme and doc tooling for consistent docs across packages.
  • Guides for building, publishing, and extending ecosystem docs.

๐Ÿš€ Quick Start

# Set up the entire ecosystem
cd /path/to/provide-workspace
uv sync --all-groups
source .venv/bin/activate

๐Ÿ“š Documentation

The documentation is built with MkDocs Material and covers:

  • Getting Started: Installation and first steps
  • Ecosystem: Architecture and design principles
  • Packages: Individual package documentation
  • Guides: Cross-package integration guides
  • API Reference: Complete API documentation

Development

  • See CLAUDE.md for local development notes.
  • Run mkdocs serve in this repo for a live docs preview.

๐Ÿค Contributing

See CONTRIBUTING.md for ecosystem-wide contribution guidelines.

๐Ÿ“„ License

All packages in the provide.io ecosystem are licensed under Apache-2.0 unless otherwise specified.

๐Ÿ›  Building Documentation

The documentation system uses a modern, DRY approach with shared configuration:

Architecture Overview

  • Shared Base Configuration (base-mkdocs.yml) - Common theme, plugins, and extensions
  • Centralized Theme (src/provide/foundry/theme/) - Namespace package with CSS, JavaScript, and assets
    • Install: uv pip install -e . for editable development
  • Monorepo Plugin - Automatic aggregation of all project documentation
  • Auto-Generated API Docs - Build-time generation using mkdocs-gen-files
  • Canonical Makefile (Makefile.provider.tmpl) - Standardized provider Makefile template

Building the Documentation

# Install dependencies
cd provide-foundry
uv sync

# Serve documentation locally (all projects)
we run docs.serve
# or: uv run mkdocs serve

# Build complete documentation site
we run docs.build
# or: uv run mkdocs build --clean

# Validate documentation (strict mode)
uv run mkdocs build --strict

# Clean documentation artifacts
we run docs.clean

# Check links (fast, internal only)
we run docs.links.check

# Check all links including external
we run docs.links.external

Building Individual Project Documentation

Each project can build documentation independently:

# Navigate to any project
cd ../pyvider

# Use wrknv tasks
we run docs.build       # Build documentation
we run docs.serve       # Serve locally
we run docs.clean       # Clean artifacts
we run docs.links.check # Check links

# Or use mkdocs directly
uv run mkdocs build
uv run mkdocs serve

Documentation Structure

provide-foundry/                    # Documentation hub
โ”œโ”€โ”€ base-mkdocs.yml                # Shared configuration (inherited by all projects)
โ”œโ”€โ”€ mkdocs.yml                     # Documentation site configuration
โ”œโ”€โ”€ Makefile.provider.tmpl         # Canonical provider Makefile template
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ gen_ref_pages.py          # Shared API doc generator
โ”œโ”€โ”€ src/provide/foundry/           # Namespace package
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ py.typed
โ”‚   โ”œโ”€โ”€ docs/
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ””โ”€โ”€ gen_ref_pages.py      # API documentation generator
โ”‚   โ””โ”€โ”€ theme/                     # Centralized theme assets
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ stylesheets/
โ”‚   โ”œโ”€โ”€ javascripts/
โ”‚   โ””โ”€โ”€ data/
โ””โ”€โ”€ docs/                          # Hub-specific documentation

Individual Projects:
provide-foundation/
โ”œโ”€โ”€ mkdocs.yml                     # Inherits from base-mkdocs.yml
โ”œโ”€โ”€ Makefile                       # Standard project Makefile
โ””โ”€โ”€ docs/                          # Project-specific docs
    โ”œโ”€โ”€ index.md
    โ”œโ”€โ”€ guides/
    โ””โ”€โ”€ reference/                 # Auto-generated at build time

๐Ÿ“ฆ Ecosystem Packages

Foundation Layer

Pyvider Framework

Tools & Utilities

  • flavorpack - PSPF packaging system for executable bundles
  • wrknv - Work environment management
  • plating - Documentation generation for providers
  • tofusoup - Cross-language conformance testing
  • supsrc - Automated Git commit/push utility

๐Ÿ— Architecture

The provide.io ecosystem follows a layered architecture:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Tools Layer                      โ”‚
โ”‚  flavorpack โ”‚ wrknv โ”‚ plating โ”‚ tofusoup โ”‚ supsrc  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  Framework Layer                    โ”‚
โ”‚  pyvider โ”‚ pyvider-cty โ”‚ pyvider-hcl โ”‚ pyvider-*   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                 Foundation Layer                    โ”‚
โ”‚       provide-foundation โ”‚ provide-testkit         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Adding Documentation to Projects

For New Projects

  1. Create mkdocs.yml inheriting from base configuration:

    # Inherit shared configuration from provide-foundry
    INHERIT: ../provide-foundry/base-mkdocs.yml
    
    # Project-Specific Configuration
    site_name: Your Project Documentation
    site_url: https://foundry.provide.io/your-project/
    dev_addr: '127.0.0.1:8XXX'  # Use unique port
    
  2. Extract standardized task definitions to wrknv.toml:

    # Extract canonical wrknv.toml for Python library projects
    from provide.foundry.config import extract_python_wrknv_tasks
    from pathlib import Path
    
    # Fresh extraction (no merge)
    extract_python_wrknv_tasks(Path('.'), merge=False)
    
    # Or merge with existing wrknv.toml (preserves custom tasks/config)
    extract_python_wrknv_tasks(Path('.'), merge=True)
    

    The template provides standardized tasks for all Python projects:

    • Testing: test, test.unit, test.integration, test.coverage, test.parallel
    • Quality: lint, format, typecheck, quality
    • Build: build, clean
    • Docs: docs.build, docs.serve, docs.clean, docs.links.check
    • Development: dev.setup, dev.test, dev.check
    • CI/CD: ci, ci.test, ci.quality
  3. Include shared Makefile targets (DEPRECATED - use wrknv.toml instead):

    # Extract canonical Makefile for terraform-provider-* projects
    from provide.foundry.config import extract_makefile_provider
    from pathlib import Path
    extract_makefile_provider(Path('.'))
    
  4. Configure API documentation by adding gen-files plugin:

    plugins:
      - gen-files:
          scripts:
            - docs/scripts/gen_api.py  # Wrapper imports from provide.foundry.docs
      - literate-nav:
          nav_file: SUMMARY.md
    

Documentation Guidelines

  • All documentation uses Markdown with Material theme extensions
  • API documentation is auto-generated from Python docstrings at build time
  • Use Google-style docstrings for consistent API documentation
  • Project documentation lives in <project>/docs/ directory
  • API reference is auto-generated in <project>/docs/reference/ at build time

Copyright (c) provide.io LLC.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

provide_foundry-0.4.0.tar.gz (74.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

provide_foundry-0.4.0-py3-none-any.whl (87.4 kB view details)

Uploaded Python 3

File details

Details for the file provide_foundry-0.4.0.tar.gz.

File metadata

  • Download URL: provide_foundry-0.4.0.tar.gz
  • Upload date:
  • Size: 74.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for provide_foundry-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e84152515b1d32210c6e867e2bec39a87acf055b430d5d1b99b5b3805bdd0e78
MD5 63f24d3ca29807d800c2c794cb2d5a50
BLAKE2b-256 dc962eac0d1c6943ac6b52ac1cfd4cf7c8e29a205664ddf55a4a9c227b2a4fa3

See more details on using hashes here.

File details

Details for the file provide_foundry-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: provide_foundry-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 87.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for provide_foundry-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae4cb721244ab9cc1fd0f073ad5e1197de51cc4a90a9ec5be666f8e880bf38d2
MD5 7e2c36c43127bc1b7428649aff8169f5
BLAKE2b-256 eeecc8b81c3ab278a5f3b91ee7b21b08b6c9ea130e7e9dd76bda0e40f1af4144

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page