API Reference¶

Complete API documentation for vein.

Core Modules¶

Configuration Sources¶

Validation¶

Caching¶

Retry & Backoff¶

Quick Reference¶

Common Imports¶

# Core
from vein import config, Config

# Sources
from vein.sources import from_env, from_dict
from vein.sources.files import from_yaml, from_json, from_ini
from vein.sources.aws import (
    from_appconfig,
    from_parameter_store,
    from_secrets_manager
)

# Validation
from vein.validation.policies import (
    RangeValidator,
    RegexValidator,
    TypeValidator,
    PydanticValidator
)

# Caching
from vein.cache import Cache
from vein.cache.strategies import TTLCacheStrategy, LRUCacheStrategy

Config Methods¶

# Assignment
config.key = value
config["key"] = value
config.nested.key = value

# Access
value = config.key
value = config["key"]
value = config.get("key", default)

# Update
config.update(dict_or_source)
config.update({"key": "value"})
config.update(from_env())

# Validation
config.key.add_validator(validator)
config.key.remove_validator(validator)

# Events
config.on_change("key", handler)
config.off_change("key", handler)

# State tracking
config.enable_state_tracking()
history = config.key.get_history()
config.key.rollback(steps=1)

Value Methods¶

When working with configuration values:

# Get raw value (for external libraries)
raw_value = config.key.value

# Type checking
if isinstance(config.port, int):
    print("Port is an integer")

# All Python operators work
result = config.timeout * config.retries
message = config.prefix + " " + config.suffix

# Comparison
if config.count > 10:
    print("Count exceeds limit")

Source Options¶

Common options for configuration sources:

# Environment variables
from_env(prefix="APP_", lowercase=True, strip_prefix=True)

# Files
from_yaml("config.yml", encoding="utf-8")
from_json("config.json", parse_dates=True)

# AWS
from_appconfig(
    application="my-app",
    environment="prod",
    profile="config",
    poll_interval=30,
    cache=Cache(TTLCacheStrategy(minutes=5))
)

from_parameter_store(
    prefix="/myapp/prod/",
    recursive=True,
    decrypt=True,
    cache=Cache(LRUCacheStrategy(100))
)