Skip to main content

Standard Components for the Pyvider Framework

Project description

Pyvider Components

This repository provides a standard set of example components for the Pyvider framework, a Python-based framework for building Terraform providers.

What is pyvider-components?

pyvider-components is a learning and reference library that demonstrates how to build Terraform provider components using the Pyvider framework. It contains working examples of resources, data sources, and functions that you can:

  • ๐Ÿ“š Learn from - See real-world examples of Pyvider components
  • ๐Ÿ” Reference - Use as templates for your own providers
  • ๐Ÿงช Test with - Try out Pyvider features without writing code
  • ๐Ÿ—๏ธ Build on - Fork and customize for your needs

Note: This is primarily an example/learning library, not a production provider. For production use, the terraform-provider-pyvider packages these components into a deployable provider.

Relationship to terraform-provider-pyvider

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   pyvider (framework)   โ”‚  โ† Core framework for building providers
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
            โ”‚
            โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            โ”‚                                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   pyvider-components    โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚  terraform-provider-pyvider  โ”‚
โ”‚   (example library)     โ”‚     โ”‚  (POC/example provider)      โ”‚
โ”‚                         โ”‚     โ”‚                              โ”‚
โ”‚  โ€ข Learning resources   โ”‚     โ”‚  โ€ข Uses components from โ†    โ”‚
โ”‚  โ€ข Reference examples   โ”‚     โ”‚  โ€ข Packaged & tested         โ”‚
โ”‚  โ€ข Component demos      โ”‚     โ”‚  โ€ข POC/Learning tool         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Difference:

  • pyvider-components: Learn how to build components (this repo)
  • terraform-provider-pyvider: POC provider for testing and learning (terraform-provider-pyvider)

When to use pyvider-components

Use this repository when you want to:

โœ… Learn how to build Pyvider providers โœ… See working examples of resources, data sources, and functions โœ… Experiment with Pyvider features โœ… Reference implementation patterns โœ… Build your own custom provider

When to use terraform-provider-pyvider

Use the provider when you want to:

โœ… Learn and experiment with Pyvider in Terraform โœ… Test provider functions and resources โœ… Follow a getting started tutorial โœ… Build proof-of-concept configurations


Part of the provide.io Ecosystem

This project is part of a larger ecosystem of tools for Python and Terraform development.

View Ecosystem Overview โ†’

Understand how provide-foundation, pyvider, flavorpack, and other projects work together.


Getting Started

To use the pyvider-components provider, configure it in your Terraform project:

terraform {
  required_providers {
    pyvider = {
      source  = "local/providers/pyvider"
      version = ">= 0.0.0"  # For development/learning
      # For specific versions: version = "~> 0.1"
    }
  }
}

provider "pyvider" {
  # Provider configuration options go here
}

Components

Data Sources

  • pyvider_env_variables: Provides access to environment variables.
  • pyvider_file_info: Provides metadata about a file or directory.
  • pyvider_http_api: Makes an HTTP request and returns the response.
  • pyvider_lens_jq: Transforms data using a JQ expression.

Resources

  • pyvider_file_content: Manages the content of a file.
  • pyvider_local_directory: Manages a directory on the local filesystem.
  • pyvider_private_state_verifier: Verifies the private state of a resource (for testing).
  • pyvider_timed_token: Manages a short-lived token (for testing).
  • pyvider_warning_example: Demonstrates how to return warnings (for testing).

Functions

A rich set of utility functions are provided for common data manipulations.

  • Numeric: add, subtract, multiply, divide, sum, min, max, round
  • String: upper, lower, split, join, replace, format, truncate, format_size, pluralize, to_snake_case, to_kebab_case, to_camel_case
  • Collection: length, contains, lookup
  • Type Conversion: tostring
  • Transformation: lens_jq

Examples

Read Environment Variables

data "pyvider_env_variables" "shell" {
  keys = ["SHELL"]
}

output "shell_path" {
  value = data.pyvider_env_variables.shell.values["SHELL"]
}

Manage a File

resource "pyvider_file_content" "example" {
  filename = "/tmp/example.txt"
  content  = "This file is managed by Terraform."
}

output "file_hash" {
  value = pyvider_file_content.example.content_hash
}

Use a String Function

output "uppercase_example" {
  value = provider::pyvider::upper("hello world")
}

Development

To contribute, set up the development environment using uv.

# Create a virtual environment and install all dependencies
uv sync --all-groups

# Activate the environment
source .venv/bin/activate

Testing

Run the test suite with pytest.

pytest

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

pyvider_components-0.0.1102.tar.gz (62.3 kB view details)

Uploaded Source

Built Distribution

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

pyvider_components-0.0.1102-py3-none-any.whl (107.7 kB view details)

Uploaded Python 3

File details

Details for the file pyvider_components-0.0.1102.tar.gz.

File metadata

File hashes

Hashes for pyvider_components-0.0.1102.tar.gz
Algorithm Hash digest
SHA256 6a52fea00291e8efa50cfcd88654031d428f5f431966de36efb5433f46b95543
MD5 0e639a85a8d2028687b2a6fedef3bf74
BLAKE2b-256 9c6a42b4a92197e2efa6f6b09515b39d7040c0a0db8e2fe215a57698c0917da3

See more details on using hashes here.

File details

Details for the file pyvider_components-0.0.1102-py3-none-any.whl.

File metadata

File hashes

Hashes for pyvider_components-0.0.1102-py3-none-any.whl
Algorithm Hash digest
SHA256 e0d01b3aafa4644425401cababb1d0093ce5acd8e1f1fe7d068c1dc4a287aa30
MD5 b65f70a8f8cbc0618cb25477504ab8a7
BLAKE2b-256 c1efb49c14f20205b5988dae16c66b0b82212dbc6f25c20ab64741420f67c78d

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