Skip to main content

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
    • *.yaml matches all YAML files in the current directory
    • **/*.yaml matches 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

pydantic_config_builder-0.5.1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

pydantic_config_builder-0.5.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

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

Hashes for pydantic_config_builder-0.5.1.tar.gz
Algorithm Hash digest
SHA256 eaa4aa980b1d82f8df5675ee8041ca29cd395d37bcf79bc910ddf49a966a093a
MD5 a4bf6d45483fbdd9e1680ea03b65f14b
BLAKE2b-256 184fd349647e98fbbf0b0fb93d17900a175ec7ccfe01beca0c8737a18273515e

See more details on using hashes here.

File details

Details for the file pydantic_config_builder-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_config_builder-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e75f48091d8d6277a09b6901558afc32efb9a45f9470eff9aac3ceb9cee07dfb
MD5 7798bcf7138470c921484984f76cddf2
BLAKE2b-256 cf58d841818171a33b0037b905960f391d5402b4e76310e32e95aedada385f50

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