liblaf.conf
¶
Typed configuration primitives with environment loading and scoped overrides.
The public API is intentionally small:
BaseConfiggroups related settings behind a cached singleton.Fielddeclares one setting and binds it to aVaron first access.groupattaches nested configuration sections.Varstores the active value in acontextvars.ContextVar.
The field_* helpers create Field descriptors with
ready-made converters for booleans, numbers, JSON payloads, paths, lists, and
temporal values.
Modules:
-
converters–Expose converter helpers used by
liblaf.conffields and variables.
Type Aliases:
Classes:
-
BaseConfig–Base class for descriptor-backed configuration containers.
-
ConfigMeta–Collect config descriptors and cache one instance per config class.
-
Field–Descriptor that declares one configuration value.
-
Group–Descriptor that lazily attaches a nested object to a config instance.
-
Var–Context-local storage for one configuration value.
Functions:
-
field–Create a
Fielddescriptor. -
field_bool–Create a field that parses booleans with Pydantic string rules.
-
field_date–Create a field that parses calendar dates from strings.
-
field_datetime–Create a field that parses datetimes from strings.
-
field_decimal–Create a field that converts strings to
Decimal. -
field_float–Create a field that converts strings to
floatvalues. -
field_int–Create a field that converts strings to
intvalues. -
field_json–Create a field that decodes JSON strings.
-
field_list_str–Create a field that splits strings into trimmed string lists.
-
field_path–Create a field that normalizes values to
Path. -
field_str–Create a field that keeps string values unchanged.
-
field_time–Create a field that parses times from strings.
-
field_timedelta–Create a field that parses duration strings to timedeltas.
-
group–Create a
Groupdescriptor.
Attributes:
-
__commit_id__(str | None) – -
__version__(str) – -
__version_tuple__(tuple[int | str, ...]) –
BaseConfig
¶
Base class for descriptor-backed configuration containers.
Subclasses declare Field descriptors for individual
settings and group descriptors for nested
BaseConfig sections. Each config subclass is a
cached singleton, while its bound Var values remain
context-local.
Methods:
-
load_env–Refresh all fields from their configured environment variables.
-
override–Temporarily override fields or nested groups in the active context.
-
set–Set fields or nested groups from Python values.
-
to_dict–Serialize the active config tree to nested dictionaries.
-
to_namespace–Serialize the active config tree to nested namespaces.
Attributes:
-
env_prefix(str) – -
name(str) –
load_env
¶
Refresh all fields from their configured environment variables.
Nested BaseConfig groups are refreshed
recursively.
Source code in src/liblaf/conf/_config.py
override
¶
Temporarily override fields or nested groups in the active context.
Mapping values passed for nested groups are delegated to the nested
config's own override() method. Previous values are restored even when
the block exits with an exception.
Parameters:
-
changes(Mapping[str, Any] | None, default:None) –Optional mapping of names to temporary values.
-
**kwargs(Any, default:{}) –Additional name-to-value overrides.
Yields:
-
Generator[None]–Nonewhile the overrides are active. Previous values are restored -
Generator[None]–when the context exits.
Source code in src/liblaf/conf/_config.py
set
¶
Set fields or nested groups from Python values.
Mapping values passed for nested config groups are forwarded to that
group's own set() method. When changes and keyword arguments contain
the same name, the value from changes is applied.
Parameters:
-
changes(Mapping[str, Any] | None, default:None) –Optional mapping of field or group names to new values.
-
**kwargs(Any, default:{}) –Additional field or group updates.
Source code in src/liblaf/conf/_config.py
to_dict
¶
Serialize the active config tree to nested dictionaries.
Returns:
-
dict[str, Any]–A dictionary containing current field values and nested group
-
dict[str, Any]–dictionaries.
Source code in src/liblaf/conf/_config.py
to_namespace
¶
to_namespace() -> SimpleNamespace
Serialize the active config tree to nested namespaces.
Returns:
-
SimpleNamespace–A
types.SimpleNamespacetree mirroring -
SimpleNamespace–
Source code in src/liblaf/conf/_config.py
ConfigMeta
¶
Bases: type
flowchart TD
liblaf.conf.ConfigMeta[ConfigMeta]
click liblaf.conf.ConfigMeta href "" "liblaf.conf.ConfigMeta"
Collect config descriptors and cache one instance per config class.
Methods:
-
__call__–Return the class singleton, creating it on first access.
-
__new__–Create a config class with derived names and descriptor maps.
__call__
¶
__call__[T: BaseConfig](*args, **kwargs) -> T
Return the class singleton, creating it on first access.
Source code in src/liblaf/conf/_config.py
__new__
¶
__new__(
mcs,
name: str,
bases: tuple[type, ...],
namespace: dict[str, Any],
/,
**_kwargs: Any,
) -> type
Create a config class with derived names and descriptor maps.
Source code in src/liblaf/conf/_config.py
Field
dataclass
¶
Field(
env: str | None = None,
default: T | MissingType = MISSING,
factory: Factory[T] | None = None,
converter: Converter[T] = identity,
)
Descriptor that declares one configuration value.
A Field stores the environment-variable name, default or factory, and
converter used to create a bound Var. Binding is lazy:
the Var is created the first time the field is accessed on a config
instance.
Parameters:
-
env(str | None, default:None) – -
default(T | MissingType, default:<MissingType.MISSING: 1>) – -
factory(T | None, default:None) – -
converter(T, default:<function identity at 0x71bd62842610>) –
Attributes:
Methods:
-
__get__–Return this descriptor on classes or a cached bound
Varon objects. -
__set_name__–Record the field name assigned by the owning config class.
__get__
¶
Return this descriptor on classes or a cached bound Var on objects.
Source code in src/liblaf/conf/_field.py
__set_name__
¶
Group
dataclass
¶
Group(factory: Callable[[], T])
Descriptor that lazily attaches a nested object to a config instance.
BaseConfig helpers such as set(), load_env(), and to_dict() expect
group values to be nested BaseConfig objects.
The descriptor itself can cache any zero-argument factory result.
Parameters:
-
factory(Callable[[], T]) –
Attributes:
Methods:
-
__get__–Return this descriptor on classes or a cached group value on objects.
-
__set_name__–Record the group name assigned by the owning config class.
__get__
¶
Return this descriptor on classes or a cached group value on objects.
Source code in src/liblaf/conf/_group.py
__set_name__
¶
Var
dataclass
¶
Var(
name: str,
default: T | MissingType = MISSING,
factory: Factory[T] | None = None,
env: str | None = None,
converter: Converter[T] | None = None,
)
Context-local storage for one configuration value.
A Var can be seeded from an environment variable, a default value, or a
factory. The active value is stored in a contextvars.ContextVar, so
temporary overrides follow normal context propagation rules.
Parameters:
-
env(str | None) – -
converter(T) –
Parameters:
-
name(str) –Name assigned to the underlying
contextvars.ContextVar. -
default(T | MissingType, default:MISSING) –Default value used when
envis unset. -
factory(Factory[T] | None, default:None) –Zero-argument callable used to create a default when
defaultis omitted. -
env(str | None, default:None) –Environment-variable name to read during initialization and later
load_env()calls. -
converter(Converter[T] | None, default:None) –Callable used to convert environment strings to Python values. Defaults to
identity.
Methods:
-
__hash__–Return the hash of the wrapped context variable.
-
get–Return the active value.
-
load_env–Reload the active value from the configured environment variable.
-
override–Temporarily set a value in the active context.
-
reset–Restore a value captured by
set(). -
set–Set the active value.
Attributes:
-
converter(Converter[T]) – -
env(str | None) – -
name(str) –Name of the wrapped
contextvars.ContextVar.
Source code in src/liblaf/conf/_var.py
get
¶
Return the active value.
Parameters:
-
default(Any, default:MISSING) –Optional fallback returned when the variable has no value.
Returns:
-
T–The active context value, or
defaultwhen provided and no value is -
T–set.
Source code in src/liblaf/conf/_var.py
load_env
¶
Reload the active value from the configured environment variable.
Source code in src/liblaf/conf/_var.py
override
¶
override(value: T) -> Generator[None]
Temporarily set a value in the active context.
Parameters:
-
value(T) –Temporary value to expose inside the context.
Yields:
-
Generator[None]–Nonewhile the override is active. The previous value is restored -
Generator[None]–when the context exits.
Source code in src/liblaf/conf/_var.py
reset
¶
reset(token: Token[T]) -> None
set
¶
set(value: T) -> Token[T]
Set the active value.
Parameters:
-
value(T) –New value for the active context.
Returns:
-
Token[T]–A
contextvars.Tokenthat can restore the previous value with -
Token[T]–
Source code in src/liblaf/conf/_var.py
field
¶
field[T](
*,
env: str | None = None,
default: T | MissingType = MISSING,
factory: Factory[T] | None = None,
converter: Converter[T] = identity,
) -> Field[T]
Create a Field descriptor.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name. When omitted, the owning config's
env_prefixand the field name are combined. -
default(T | MissingType, default:MISSING) –Default value used when no environment value is present.
-
factory(Factory[T] | None, default:None) –Zero-argument callable used to create a default when
defaultis omitted. -
converter(Converter[T], default:identity) –Callable used to convert environment strings to Python values.
Returns:
-
Field[T]–A field descriptor ready to assign on a
-
Field[T]–BaseConfigsubclass.
Source code in src/liblaf/conf/_field.py
field_bool
¶
field_bool(
env: str | None = None,
default: bool | MissingType = MISSING,
factory: Factory[bool] | None = None,
converter: Converter[bool] | None = None,
) -> Field[bool]
Create a field that parses booleans with Pydantic string rules.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(bool | MissingType, default:MISSING) –Default boolean value.
-
factory(Factory[bool] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[bool] | None, default:None) –Optional custom converter. When omitted, Pydantic string validation is used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_date
¶
field_date(
env: str | None = None,
default: Any | MissingType = MISSING,
factory: Factory[Any] | None = None,
converter: Converter[Any] | None = None,
) -> Field[Any]
Create a field that parses calendar dates from strings.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(Any | MissingType, default:MISSING) –Default date-like value.
-
factory(Factory[Any] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[Any] | None, default:None) –Optional custom converter. When omitted, Pydantic's pendulum
Dateadapter is used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_datetime
¶
field_datetime(
env: str | None = None,
default: datetime | MissingType = MISSING,
factory: Factory[datetime] | None = None,
converter: Converter[datetime] | None = None,
) -> Field[datetime]
Create a field that parses datetimes from strings.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(datetime | MissingType, default:MISSING) –Default datetime value.
-
factory(Factory[datetime] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[datetime] | None, default:None) –Optional custom converter. When omitted, Pydantic's pendulum
DateTimeadapter is used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_decimal
¶
field_decimal(
env: str | None = None,
default: Decimal | MissingType = MISSING,
factory: Factory[Decimal] | None = None,
converter: Converter[Decimal] | None = None,
) -> Field[Decimal]
Create a field that converts strings to Decimal.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(Decimal | MissingType, default:MISSING) –Default decimal value.
-
factory(Factory[Decimal] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[Decimal] | None, default:None) –Optional custom converter. When omitted,
Decimalis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_float
¶
field_float(
env: str | None = None,
default: float | MissingType = MISSING,
factory: Factory[float] | None = None,
converter: Converter[float] | None = None,
) -> Field[float]
Create a field that converts strings to float values.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(float | MissingType, default:MISSING) –Default float value.
-
factory(Factory[float] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[float] | None, default:None) –Optional custom converter. When omitted,
floatis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_int
¶
field_int(
env: str | None = None,
default: int | MissingType = MISSING,
factory: Factory[int] | None = None,
converter: Converter[int] | None = None,
) -> Field[int]
Create a field that converts strings to int values.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(int | MissingType, default:MISSING) –Default integer value.
-
factory(Factory[int] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[int] | None, default:None) –Optional custom converter. When omitted,
intis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_json
¶
field_json(
env: str | None = None,
default: Any | MissingType = MISSING,
factory: Factory[Any] | None = None,
converter: Converter[Any] | None = None,
) -> Field[Any]
Create a field that decodes JSON strings.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(Any | MissingType, default:MISSING) –Default JSON-compatible value.
-
factory(Factory[Any] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[Any] | None, default:None) –Optional custom converter. When omitted,
json.loadsis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_list_str
¶
field_list_str(
env: str | None = None,
default: list[str] | MissingType = MISSING,
factory: Factory[list[str]] | None = None,
converter: Converter[list[str]] | None = None,
delimiter: str = ",",
) -> Field[list[str]]
Create a field that splits strings into trimmed string lists.
Empty items are preserved. For example, the default converter turns
"a,, b," into ["a", "", "b", ""].
Parameters:
-
env(str | None, default:None) –Explicit environment variable name.
-
default(list[str] | MissingType, default:MISSING) –Default list value.
-
factory(Factory[list[str]] | None, default:None) –Callable that produces a fresh default list.
-
converter(Converter[list[str]] | None, default:None) –Optional converter overriding the built-in splitter.
-
delimiter(str, default:',') –Delimiter used by the default converter.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_path
¶
field_path(
env: str | None = None,
default: StrPath | MissingType = MISSING,
factory: Factory[StrPath] | None = None,
converter: Converter[Path] | None = None,
) -> Field[Path]
Create a field that normalizes values to Path.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(StrPath | MissingType, default:MISSING) –Default filesystem path. When provided, it is converted to
Pathimmediately. -
factory(Factory[StrPath] | None, default:None) –Zero-argument callable used when
defaultis omitted. Its result is wrapped inPath. -
converter(Converter[Path] | None, default:None) –Optional custom converter. When omitted,
Pathis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_str
¶
field_str(
env: str | None = None,
default: str | MissingType = MISSING,
factory: Factory[str] | None = None,
converter: Converter[str] | None = None,
) -> Field[str]
Create a field that keeps string values unchanged.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(str | MissingType, default:MISSING) –Default string value.
-
factory(Factory[str] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[str] | None, default:None) –Optional custom converter. When omitted,
identityis used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_time
¶
field_time(
env: str | None = None,
default: time | MissingType = MISSING,
factory: Factory[time] | None = None,
converter: Converter[time] | None = None,
) -> Field[time]
Create a field that parses times from strings.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(time | MissingType, default:MISSING) –Default time value.
-
factory(Factory[time] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[time] | None, default:None) –Optional custom converter. When omitted, Pydantic's pendulum
Timeadapter is used.
Returns:
Source code in src/liblaf/conf/_field_specifiers.py
field_timedelta
¶
field_timedelta(
env: str | None = None,
default: timedelta | MissingType = MISSING,
factory: Factory[timedelta] | None = None,
converter: Converter[timedelta] | None = None,
) -> Field[timedelta]
Create a field that parses duration strings to timedeltas.
Parameters:
-
env(str | None, default:None) –Explicit environment-variable name.
-
default(timedelta | MissingType, default:MISSING) –Default duration value.
-
factory(Factory[timedelta] | None, default:None) –Zero-argument callable used when
defaultis omitted. -
converter(Converter[timedelta] | None, default:None) –Optional custom converter. When omitted, Pydantic's pendulum
Durationadapter is used.
Returns: