A tool to build YAML configurations by merging multiple files
Project description
pydantic-config-builder
A tool to build YAML configurations by merging multiple files.
Features
- Merge multiple YAML files into a single configuration file
- Support for base configuration files with overlay files
- Recursive merging of dictionaries and arrays
- Use built configurations as base for other configurations
- Configuration file based build management
- Command line interface tool
- Support for relative and absolute paths
- Home directory expansion with ~
Installation
pip install pydantic-config-builder
Usage
Create a configuration file named pydantic_config_builder.yml in your project directory:
# New format (recommended)
development:
input:
- base/*.yaml # All YAML files in base directory
- path/to/base.yaml # Specific file
output:
- default.yaml # Local output
- ~/.config/app.yaml # Global config
- build/dev.yaml # Build output
production:
input:
- default.yaml # Use output of another configuration
- configs/**/*.yaml # All YAML files in configs and subdirectories
- /path/to/overlay-*.yaml # All overlay files in specific directory
output:
- prod.yaml
- /etc/app/config.yaml
# Legacy format (still supported)
default.yaml:
- base/*.yaml
- path/to/base.yaml
Then run the builder:
# Use default configuration file (pydantic_config_builder.yml)
pydantic_config_builder
# Or specify a configuration file
pydantic_config_builder -c path/to/config.yml
# Enable verbose output
pydantic_config_builder -v
Path Resolution
- Absolute paths (starting with /) are used as is
- Paths starting with ~ are expanded to the user's home directory
- Relative paths are resolved relative to the configuration file's directory
- Glob patterns (*, ?, []) are supported for source files
*.yamlmatches all YAML files in the current directory**/*.yamlmatches all YAML files recursively in subdirectories- If a pattern matches no files, a warning is printed and the pattern is skipped
Merging Behavior
- Dictionaries are merged recursively, with later files overwriting earlier ones
- Arrays are replaced entirely (not appended or merged by index)
Example
Given these files:
base.yaml:
database:
host: localhost
port: 5432
credentials:
username: admin
logging:
level: info
overlay.yaml:
database:
port: 5433
credentials:
password: secret
logging:
format: json
And this configuration:
# pydantic_config_builder.yml
config.yaml:
- base.yaml
- overlay.yaml
The resulting config.yaml will be:
database:
host: localhost
port: 5433
credentials:
username: admin
password: secret
logging:
level: info
format: json
Documentation
For more detailed documentation, please see the GitHub repository.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
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 pydantic_config_builder-0.5.1.tar.gz.
File metadata
- Download URL: pydantic_config_builder-0.5.1.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.11 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaa4aa980b1d82f8df5675ee8041ca29cd395d37bcf79bc910ddf49a966a093a
|
|
| MD5 |
a4bf6d45483fbdd9e1680ea03b65f14b
|
|
| BLAKE2b-256 |
184fd349647e98fbbf0b0fb93d17900a175ec7ccfe01beca0c8737a18273515e
|
File details
Details for the file pydantic_config_builder-0.5.1-py3-none-any.whl.
File metadata
- Download URL: pydantic_config_builder-0.5.1-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.11 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e75f48091d8d6277a09b6901558afc32efb9a45f9470eff9aac3ceb9cee07dfb
|
|
| MD5 |
7798bcf7138470c921484984f76cddf2
|
|
| BLAKE2b-256 |
cf58d841818171a33b0037b905960f391d5402b4e76310e32e95aedada385f50
|