Minimal checksummed binary configuration handling for Python. Config
layers user settings over DEFAULT_CONFIG; load_config/save_config
persist to a strict binary format with optional gzip/xz/zlib compression.
Standard library only.
Install
pip install pafex
Usage
from pafex import Config, load_config, save_config
cfg = Config({'strict_mode': True, 'allowed_tags': {'p', 'a'}})
cfg.get('strict_mode')
cfg.get('strip_whitespace')
cfg.update({'max_depth': 3})
save_config(cfg, 'default.config', compression='gzip')
loaded = load_config('default.config')
loaded == cfg
Config file layout:
raw: [8-byte MD5 checksum][4-byte size][config]
gzip: [8-byte MD5 checksum][4-byte size][gzip.compress(config)]
xz: [8-byte MD5 checksum][4-byte size][lzma.compress(config)]
zlib: [8-byte MD5 checksum][4-byte size][zlib.compress(config)]
Writes are atomic (temp file + os.replace). With no explicit
path, load_config/save_config locate the caller's default.config
(caller's module directory first, then the package directory).
Errors raise PafexError subclasses: ConfigLoadError (read/parse
failures), ConfigChecksumError (integrity mismatch) and
ConfigDecompressError (corrupt compressed payload).