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 servein 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
- Install:
- 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
- provide-foundation - Core telemetry and logging infrastructure
- provide-testkit - Testing utilities and fixtures
Pyvider Framework
- pyvider - Core Terraform provider framework
- pyvider-cty - CTY type system implementation
- pyvider-hcl - HCL parsing with CTY integration
- pyvider-rpcplugin - gRPC plugin protocol implementation
- pyvider-components - Standard components library
- terraform-provider-pyvider - Official Pyvider provider
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
-
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
-
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
- Testing:
-
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('.'))
-
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.
Metadata
Release files for provide-foundry 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| provide_foundry-0.4.1.tar.gz | 75.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| provide_foundry-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 163.4 kB
Release files / provide_foundry-0.4.1.tar.gz
| Download URL | provide_foundry-0.4.1.tar.gz |
|---|---|
| Size | 75.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f0834195e2d2505d2daab339ec9f11890ea4f685407877e93201688c554cdd2
|
|
BLAKE2b-256 checksum How to use checksums |
a3ece2b4d6313243939e85f35306580b5d220010f6224e43aa8482b013429f05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Aug 27, 2026.
Transparency logRelease files / provide_foundry-0.4.1-py3-none-any.whl
| Download URL | provide_foundry-0.4.1-py3-none-any.whl |
|---|---|
| Size | 88.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e74fa8195f3513487140df4b5063b88697b8aa8eebb2b2a4f2a960f1254df011
|
|
BLAKE2b-256 checksum How to use checksums |
58e45e961a4b8c592d1700597b15f8fb4a1cf65a99218a0d107c39bbb1bad560
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Aug 27, 2026.
Transparency log