Source code for datalad_core.config.defaults

from __future__ import annotations

from datasalad.settings import (
    Defaults,
)
from datasalad.settings import (
    UnsetValue as Unset,
)

from datalad_core.config.item import ConfigItem as Item


[docs] class ImplementationDefaults(Defaults): """Source for registering implementation defaults of settings This is a in-memory only source that is populated by any implementations that want to expose their configuration options.""" def __str__(self): return 'ImplementationDefaults'
__the_defaults: ImplementationDefaults | None = None
[docs] def get_defaults() -> ImplementationDefaults: """Return a a process-unique `ImplementationDefault` instance This function can be used obtain a :class:`ImplementationDefaults` instance for setting and/or getting defaults for settings. """ global __the_defaults # noqa: PLW0603 if __the_defaults is None: __the_defaults = ImplementationDefaults() register_defaults_gitcfg(__the_defaults) return __the_defaults
def register_defaults_gitcfg(defaults: ImplementationDefaults) -> None: for k, v in _gitcfg.items(): defaults[k] = v def anything2bool(val): if val == '': return False if hasattr(val, 'lower'): val = val.lower() if val in {'off', 'no', 'false', '0'} or not bool(val): return False if ( val in {'on', 'yes', 'true', True} or (hasattr(val, 'isdigit') and val.isdigit() and int(val)) or (isinstance(val, int) and val) ): return True msg = f'Cannot interpret {val!r} as a boolean' raise ValueError(msg) _gitcfg = { 'core.bare': Item(Unset, coercer=anything2bool), 'extensions.worktreeConfig': Item(Unset, coercer=anything2bool), }