YAML Config Processor
A Python package for processing configuration templates from YAML strings with JSON user configurations.
Installation
pip install yaml-config-processor
Features
- Define templates in YAML for better readability
- Accept user configurations in JSON format
- Validate templates and configurations against JSON Schema
- Process templates with user configurations
- Output results in YAML or JSON format
Usage
Basic Example
from yaml_config_processor import ConfigProcessor
# Create processor
processor = ConfigProcessor()
# Define template in YAML
template_yaml = """
configSchema:
type: object
required:
- api_key
- user_id
- base_url
properties:
api_key:
type: string
description: API key for service
user_id:
type: string
description: Unique identifier for the user
base_url:
type: string
format: uri
description: Base URL for the service
service_name: example-service
command: run
args:
- --verbose
- --endpoint
- config.base_url
env:
- name: API_KEY
value: config.api_key
description: |
This template defines the configuration schema and how to use the user-provided values.
The `config.` prefix is used to reference user configuration values.
license: MIT
owner: John Doe
"""
# Define user configuration in JSON
user_config_json = """
{
"api_key": "abc123xyz456",
"user_id": "user1",
"base_url": "https://api.example.com"
}
"""
# Process configuration
template = processor.validate_template(template_yaml)
user_config = processor.validate_user_config(template, user_config_json)
processed = processor.process_configuration(template, user_config)
# Output as YAML
yaml_output = processor.output_yaml(processed)
print(yaml_output)
# Output as JSON
json_output = processor.output_json(processed)
print(json_output)
Step-by-Step Usage
-
Create a template in YAML
Templates define both the schema for user configuration and the template structure with references to the configuration values.
-
Validate the template
template = processor.validate_template(template_yaml)
-
Extract schema for clients (optional)
schema = processor.get_schema(template_yaml)
-
Validate user configuration
user_config = processor.validate_user_config(template, user_config_json)
-
Process configuration
processed = processor.process_configuration(template, user_config)
-
Output the result
# As YAML yaml_result = processor.output_yaml(processed) # As JSON json_result = processor.output_json(processed)
Template Format
Templates must follow this structure:
configSchema: JSON Schema definition for validating user configurations- Other fields: Template structure with references to config values
Example:
configSchema:
type: object
required:
- api_key
properties:
api_key:
type: string
service_name: example-service
config_value: config.api_key
Configuration References
References to configuration values use the config. prefix:
config.api_keyrefers to theapi_keyproperty in the user configconfig.userIdis automatically mapped touser_id(camelCase to snake_case)
License
MIT License
Metadata
Release files for yaml-config-processor 0.2.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| yaml_config_processor-0.2.13.tar.gz | 11.0 kB | Without provenance | Details for yaml_config_processor-0.2.13.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| yaml_config_processor-0.2.13-py3-none-any.whl | Python 3 | none | any | Details for yaml_config_processor-0.2.13-py3-none-any.whl |
Total release size: 17.6 kB
Release files / yaml_config_processor-0.2.13.tar.gz
| Download URL | yaml_config_processor-0.2.13.tar.gz |
|---|---|
| Size | 11.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49e62a9a4e94fa1a9c7209d45c768a04af1146827caf713e054277bceda74a97
|
|
BLAKE2b-256 checksum How to use checksums |
03b5f5fa9b2074ada04d133e9ed8b5aa979046ccfefd6e36cf15899e01327479
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / yaml_config_processor-0.2.13-py3-none-any.whl
| Download URL | yaml_config_processor-0.2.13-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59e6c08b9827dfcae319718f53149693da05ecca2d5587e1dc99f21f35c8e787
|
|
BLAKE2b-256 checksum How to use checksums |
946e2b62484f211ce787d4d1427bc6ec4c57ac665b6eeb72a2a13d474c512a27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Security for yaml-config-processor 0.2.13
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.