From 671b5ce2c75ccae26d574515d2a281cefd30c81f Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 20 Jun 2019 20:39:03 +0000 Subject: [PATCH] Make adding config values easier --- cheuph/config.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cheuph/config.py b/cheuph/config.py index ea6fd15..f545a4a 100644 --- a/cheuph/config.py +++ b/cheuph/config.py @@ -1,6 +1,7 @@ from dataclasses import dataclass, field from enum import Enum, auto -from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar +from typing import (Any, Callable, Dict, Iterable, List, Optional, Tuple, + TypeVar) __all__ = ["ConfigException", "ConfigValueException", "TransparentConfig", "Kind", "Condition", "Option", "TreeLoader"] @@ -65,7 +66,7 @@ Condition = Callable[[Any], bool] class Option: kind: Kind default: Any - conditions: List[Tuple[Condition, str]] = field(default_factory=list) + conditions: Iterable[Tuple[Condition, str]] = field(default_factory=list) def check_valid(self, value: Any) -> None: if not self.kind.matches(value): @@ -83,6 +84,16 @@ class TreeLoader: def __init__(self) -> None: self._options: Dict[str, Any] = {} + def add(self, + name: str, + kind: Kind, + default: Any, + *conditions: Tuple[Condition, str], + ) -> None: + + option = Option(kind, default, conditions) + self.add_option(name, option) + def add_option(self, name: str, option: Option) -> None: self._options[name] = option