valid8r.integrations.env
Environment variable integration module for valid8r.
This module provides utilities for loading typed, validated configuration from environment variables using valid8r parsers.
Example
>>> from valid8r.integrations.env import load_env_config, EnvSchema, EnvField
>>> from valid8r.core.parsers import parse_int, parse_bool
>>> schema = EnvSchema(fields={
... 'port': EnvField(parser=parse_int, default=8080),
... 'debug': EnvField(parser=parse_bool, default=False),
... })
>>> env = {'APP_PORT': '3000', 'APP_DEBUG': 'true'}
>>> result = load_env_config(schema, prefix='APP_', environ=env)
>>> result.value_or({})
{'port': 3000, 'debug': True}
Classes
Represents a field in an environment variable schema. |
|
Represents a schema for environment variable configuration. |
Functions
|
Load and validate configuration from environment variables. |
Module Contents
- class valid8r.integrations.env.EnvField[source]
Represents a field in an environment variable schema.
- Parameters:
parser – A function that parses a string into a Maybe[T]
default – Optional default value if environment variable is not set
required – Whether this field must be present in the environment
nested – Optional nested schema for hierarchical configuration
- parser: collections.abc.Callable[[str | None], valid8r.core.maybe.Maybe[Any]] | None[source]
- class valid8r.integrations.env.EnvSchema[source]
Represents a schema for environment variable configuration.
- Parameters:
fields – Dictionary mapping field names to EnvField objects
- valid8r.integrations.env.load_env_config(schema, *, prefix='', delimiter='_', environ=None)[source]
Load and validate configuration from environment variables.
- Parameters:
schema (EnvSchema) – The EnvSchema defining expected fields and their parsers
prefix (str) – Optional prefix for environment variable names (e.g., ‘APP_’)
delimiter (str) – Delimiter for nested configuration (default: ‘_’)
environ (dict[str, str] | None) – Optional dict of environment variables (defaults to os.environ)
- Returns:
Success with parsed config dict, or Failure with error message
- Return type:
Example
>>> from valid8r.integrations.env import load_env_config, EnvSchema, EnvField >>> from valid8r.core.parsers import parse_int >>> schema = EnvSchema(fields={'port': EnvField(parser=parse_int, default=8080)}) >>> env = {'APP_PORT': '3000'} >>> result = load_env_config(schema, prefix='APP_', environ=env) >>> result.value_or({}) {'port': 3000}