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

EnvField

Represents a field in an environment variable schema.

EnvSchema

Represents a schema for environment variable configuration.

Functions

load_env_config(schema, *[, prefix, delimiter, environ])

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]
default: Any = None[source]
required: bool = False[source]
nested: EnvSchema | None = None[source]
class valid8r.integrations.env.EnvSchema[source]

Represents a schema for environment variable configuration.

Parameters:

fields – Dictionary mapping field names to EnvField objects

fields: dict[str, EnvField][source]
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:

Maybe[dict]

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}