lazr-config

3.1 · active · verified Fri Apr 17

lazr.config is a Python library for defining configuration schemas, processing configuration data from various sources (like files or command-line arguments), and validating that data against the defined schema. It ensures that applications receive well-formed and valid configurations, reducing runtime errors. The current version is 3.1, and it typically follows an as-needed release cadence driven by Launchpad's requirements.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to define a configuration schema using `ConfigurationSchema` and `Field`, and then create a validated `Config` instance from a Python dictionary. It also shows how type mismatches lead to `ConfigError`.

from lazr.config import ConfigurationSchema, Field, Config, ConfigError

# 1. Define a configuration schema
class MySchema(ConfigurationSchema):
    db_host = Field(str, default='localhost', doc="Database hostname")
    db_port = Field(int, default=5432, doc="Database port")
    debug_mode = Field(bool, default=False, doc="Enable debug logging")

# 2. Create a configuration instance from a dictionary
config_data = {
    'db_host': 'prod.database.com',
    'db_port': 5432,
    # 'debug_mode' is omitted, will use default
}

try:
    config = Config(MySchema, config_data)
    print(f"DB Host: {config.db_host}")
    print(f"DB Port: {config.db_port}")
    print(f"Debug Mode: {config.debug_mode}")

    # Accessing an unknown field raises an AttributeError
    # print(config.unknown_field)

except ConfigError as e:
    print(f"Configuration error: {e}")

# Example of an invalid configuration
invalid_config_data = {
    'db_port': 'not_a_number', # This will fail validation
}
try:
    invalid_config = Config(MySchema, invalid_config_data)
except ConfigError as e:
    print(f"Caught expected error for invalid config: {e}")

view raw JSON →