v0.0.16¶
New: Namespace Mounting¶
Separates namespace definition from persistence activation. Namespaces are
defined declaratively (YAML/dict), then ns.mount(storage) activates caching,
provenance, and logging in one call.
@mountable/@mount_requiredmarker decorators for introspection — no runtime behavior, just flags for tooling.ns.is_mounted/ns.requires_mount/ns.has_mountableproperties detect whether a namespace needs or benefits from mounting.Namespace.mount(storage)wraps cache nodes, sets up DAG provenance, and configures logging.- Discriminated config deserialization —
from_dictdispatches ontypefield ("cache","auto") via_CONFIG_TYPESdict, enabling cache config in YAML. mount_cached_node()extracted from the old imperative path.register_cached_callableremoved entirely.- DAG provenance on mount —
_register_dagcreatesDagRunnerper-call withns._provenance, falling back toNullProvenancewhen unmounted.
Changed: Logging Configuration¶
LogConfigbase class withlog_file,log_level,loggersfields and asetup_logging()method.StorageConfiginherits it.LogConfig.setup_logging()configures the root logger with aFileHandler,NodeRunLogFilter, configurable level, and per-category overrides. Usable standalone or viamount()._setup_file_loggingremoved fromlyth.py.
Changed: StorageConfig Path Resolution¶
dag_dbrenamed todags_db,trigger_dbrenamed totriggers_db.get_cache_db(root)/get_dags_db(root)/get_triggers_db(root)/get_log_file(root)— resolve paths relative to a root directory.resolve_paths(root)resolves all storage paths in-place._resolve_configinlyth.pyreduced to a single call.
Fixes¶
- Trigger payload bug —
_poll_loopwas passingpayload={}when nopoll_fnwas configured, causingfire()to skip the config's default payload. Changed topayload=None.