kuu.config

Module Contents

Classes

SchedulerSettings

MetricsSettings

WebSettings

WatchSettings

PersistenceConfig

Settings

Kuunfig

Top-level configuration with defaults and named presets.

API

class kuu.config.SchedulerSettings[source]

Bases: msgspec.Struct

enable: bool = False
class kuu.config.MetricsSettings[source]

Bases: msgspec.Struct

enable: bool = False
host: str = '0.0.0.0'
port: kuu.config.Port = 9191
class kuu.config.WebSettings[source]

Bases: msgspec.Struct

enable: bool = False
host: str = '0.0.0.0'
port: kuu.config.Port = 8181
path: str = '/dashboard'
class kuu.config.WatchSettings[source]

Bases: msgspec.Struct

enable: bool = False
root: pathlib.Path = 'field(...)'
respect_gitignore: bool = True
exclude: list[pathlib.Path] = 'field(...)'
reload_delay: float = 0.25
reload_debounce: float = 0.5
class kuu.config.PersistenceConfig[source]

Bases: msgspec.Struct

enable: bool = True
dsn: str = 'field(...)'
schema: str | None = None
runs_table: str = 'kuu_runs'
logs_table: str = 'kuu_run_logs'
keep_days: int = 7
max_runs: int = 100000
log_level: str = 'INFO'
capture_args: bool = True
class kuu.config.Settings[source]

Bases: msgspec.Struct

app: Annotated[str, Meta(pattern=_APP_PATTERN, description='path to the location of `Kuu` instance formatted as `dotted.python_module[:instance]`')] | None = None
task_modules: list[Annotated[str, Meta(pattern=_MODULE_PATTERN)]] = 'field(...)'
queues: list[str] = 'field(...)'
processes: Annotated[int, Meta(ge=1)] = 1
concurrency: Annotated[int, Meta(ge=1)] = 64
prefetch: Annotated[int, Meta(ge=0)] = 0
shutdown_timeout: Annotated[float, Meta(ge=0)] = 30.0
watch_fs: bool = False
metrics: kuu.config.MetricsSettings = 'field(...)'
dashboard: kuu.config.WebSettings = 'field(...)'
watch: kuu.config.WatchSettings = 'field(...)'
scheduler: kuu.config.SchedulerSettings = 'field(...)'
persistence: kuu.config.PersistenceConfig = 'field(...)'
with_overrides(overrides: list[str]) Self[source]
to_dict() dict[str, Any][source]
class kuu.config.Kuunfig[source]

Bases: msgspec.Struct

Top-level configuration with defaults and named presets.

[default]
app = "myapp:kuu"
task_modules = ["myapp.tasks"]
processes = 4
concurrency = 64

[presets.prod]
processes = 8

[presets.dev]
processes = 1
concurrency = 16

Use resolve() to merge a named preset with defaults:

>>> cfg = Kuunfig.load()
>>> settings = cfg.resolve("prod")
default: kuu.config.Settings = None
presets: dict[str, dict[str, Any]] = 'field(...)'
classmethod load(config: str | pathlib.Path | None = None) Self[source]
resolve(name: str | None = None) kuu.config.Settings[source]