Template: Registry-style digestion#
Use this template when the library prefers a central registry rather than one file per argument.
Goal#
Define a module exposing
ARGUMENT_DIGESTERS.ArgDigest discovers digesters via
digestion_style="registry".
Required structure#
my_lib/
_argdigest.py
_private/
digestion/
registry.py
Library config (my_lib/_argdigest.py)#
DIGESTION_SOURCE = "my_lib._private.digestion.registry"
DIGESTION_STYLE = "registry"
STRICTNESS = "warn"
SKIP_PARAM = "skip_digestion"
Programmatic config alternative (my_lib/__init__.py)#
import argdigest.config
argdigest.config.set_defaults(
digestion_source="my_lib._private.digestion.registry",
digestion_style="registry"
)
Registry module (registry.py)#
def digest_a(a, caller=None):
return int(a)
def digest_b(b, a=None, caller=None):
return int(b) + int(a)
ARGUMENT_DIGESTERS = {
"a": digest_a,
"b": digest_b,
}
Usage in public API#
from argdigest import arg_digest
@arg_digest(config="my_lib._argdigest")
def analyze(a, b, skip_digestion=False):
...