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 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e84152515b1d32210c6e867e2bec39a87acf055b430d5d1b99b5b3805bdd0e78
|
|
| MD5 |
63f24d3ca29807d800c2c794cb2d5a50
|
|
| BLAKE2b-256 |
dc962eac0d1c6943ac6b52ac1cfd4cf7c8e29a205664ddf55a4a9c227b2a4fa3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae4cb721244ab9cc1fd0f073ad5e1197de51cc4a90a9ec5be666f8e880bf38d2
|
|
| MD5 |
7e2c36c43127bc1b7428649aff8169f5
|
|
| BLAKE2b-256 |
eeecc8b81c3ab278a5f3b91ee7b21b08b6c9ea130e7e9dd76bda0e40f1af4144
|