fleche.config
Configuration system for fleche.
Storage type names
The type key in a storage config dict is case-sensitive and uses the
following lowercase identifiers:
"memory"In-memory dict (
ValueMemory/CallMemory). No required keys. Optional (value backend):remaining_depth(int, default0)."void"No-op — discards all data (
ValueVoid/CallVoid). No required keys. Optional (value backend):remaining_depth(int, default0)."pickle"Filesystem backend serialised with the standard
picklemodule (ValuePickleFile/CallPickleFile). Required:root(path to storage directory). Optional:compress(bool, defaultFalse) — gzip-compress files. Optional:lock_timeout(float, default1.0) — write-lock wait timeout (s). Optional:lock_wait_start(float, default0.001) — initial lock-poll interval for exponential backoff (s). Optional (value backend):remaining_depth(int, default0)."cloudpickle"Filesystem backend serialised with
cloudpickle— handles more complex Python objects thanpickle. Required:root. Optional:compress(bool, defaultFalse) — gzip-compress files. Optional:lock_timeout(float, default1.0) — write-lock wait timeout (s). Optional:lock_wait_start(float, default0.001) — initial lock-poll interval for exponential backoff (s). Optional (value backend):remaining_depth(int, default0)."dill"Filesystem backend serialised with
dill. Required:root. Optional:compress(bool, defaultFalse) — gzip-compress files. Optional:lock_timeout(float, default1.0) — write-lock wait timeout (s). Optional:lock_wait_start(float, default0.001) — initial lock-poll interval for exponential backoff (s). Optional (value backend):remaining_depth(int, default0)."bagofholding_hdf"HDF5-backed storage via the
bagofholdinglibrary (ValueBagOfHoldingH5File/CallBagOfHoldingH5File). Required:root. Optional:lock_timeout(float, default1.0) — write-lock wait timeout (s). Optional:lock_wait_start(float, default0.001) — initial lock-poll interval for exponential backoff (s). Optional (value backend):remaining_depth(int, default0)."sql"SQL database via SQLAlchemy (
Sql). Call storage only. Required:url(SQLAlchemy connection URL, e.g."sqlite:///~/.fleche/calls.db"). Optional:echo(bool, defaultFalse) — log SQL statements.
Example fleche.toml
[default]
cache = "persistent"
metadata = ["Runtime"]
[persistent]
values.type = "cloudpickle"
values.root = "~/.fleche/values"
calls.type = "cloudpickle"
calls.root = "~/.fleche/calls"
[fast]
values.type = "memory"
calls.type = "memory"
[with_sql_calls]
values.type = "cloudpickle"
values.root = "~/.fleche/values"
calls.type = "sql"
calls.url = "sqlite:///~/.fleche/calls.db"
Attributes
Functions
|
|
|
|
Load the default metadata from the configuration file. |
|
Construct a |
|
|
Convert a Storage instance to a config dict (inverse of |
|
Construct a |
|
Convert a |
|
|
|
Load a cache from the configuration file. |
Module Contents
- fleche.config._live_caches: dict[str, fleche.caches.Cache][source]
- fleche.config.load_default_metadata()[source]
Load the default metadata from the configuration file.
- fleche.config.storage_from_config(d: dict[str, Any], type: Literal['call']) fleche.storage.CallStorage[source]
- fleche.config.storage_from_config(d: dict[str, Any], type: Literal['value']) fleche.storage.ValueStorage
Construct a
StorageBackendfrom a config dict.The dict must contain a
"type"key (case-sensitive, lowercase) and any additional parameters required by that storage backend. The input dict is not mutated.Supported type values and their parameters:
{"type": "memory"}{"type": "void"}{"type": "pickle", "root": "<path>"}— optional:compress,lock_timeout,lock_wait_start,remaining_depth(value only){"type": "cloudpickle", "root": "<path>"}— same optional keys as"pickle"{"type": "dill", "root": "<path>"}— same optional keys as"pickle"{"type": "bagofholding_hdf", "root": "<path>"}— optional:lock_timeout,lock_wait_start,remaining_depth(value only){"type": "sql", "url": "<sqlalchemy-url>"}(call storage only) — optional:echo
See the module docstring for full descriptions of each key.
- fleche.config.storage_to_config(s: fleche.storage.ValueStorage | fleche.storage.CallStorage) dict[str, Any][source]
Convert a Storage instance to a config dict (inverse of
storage_from_config).The returned dict contains a
"type"key and any additional parameters needed to reconstruct the storage viastorage_from_config().
- fleche.config.cache_from_config(d: dict[str, Any] | list[dict[str, Any]]) fleche.caches.BaseCache[source]
Construct a
BaseCachefrom a config dict or list.The cache type is determined implicitly from the shape of the input:
A list of dicts is treated as a
CacheStack, with each element processed recursively.A dict containing a
max_sizekey creates aSizeLimitedCache.A dict containing
read_only: truewraps the resulting cache in aReadOnlyCache.Otherwise a plain
Cacheis created.
The input dict is not mutated.
Examples:
# Plain cache with in-memory storage cache_from_config({ "values": {"type": "memory"}, "calls": {"type": "memory"}, }) # Size-limited cache — presence of max_size selects SizeLimitedCache cache_from_config({ "values": {"type": "memory"}, "calls": {"type": "memory"}, "max_size": 100, }) # Read-only cache — read_only: true wraps the cache in ReadOnlyCache cache_from_config({ "values": {"type": "memory"}, "calls": {"type": "memory"}, "read_only": True, }) # CacheStack — a list of dicts is implicitly treated as a stack cache_from_config([ {"values": {"type": "memory"}, "calls": {"type": "memory"}}, {"values": {"type": "void"}, "calls": {"type": "void"}}, ])
- fleche.config.cache_to_config(c: fleche.caches.BaseCache) dict[str, Any] | list[dict[str, Any]][source]
Convert a
BaseCacheto a config dict or list.This is the inverse of
cache_from_config(). The output can be round-tripped back viacache_from_config(cache_to_config(cache)).Cache→ dict with"values"and"calls"SizeLimitedCache→ same dict plus"max_size"ReadOnlyCachewrapping aCacheorSizeLimitedCache→ inner cache dict with"read_only": TrueCacheStack→ list of dicts
- Raises:
ValueError – for unsupported cache types or unsupported
ReadOnlyCacheinner types.
- fleche.config._create_cache(cache_config: dict[str, Any]) fleche.caches.Cache[source]
- fleche.config.load_cache_config(name: str | None = None) fleche.caches.Cache[source]
Load a cache from the configuration file.
If name is None, the default cache is loaded. The names ‘memory’ and ‘void’ are special-cased to return a transient in-memory cache and a no-op cache respectively.
Note: The Tags metadata cannot be configured from the config file.