aboutsummaryrefslogtreecommitdiff
path: root/tools/cru-py/cru/config.py
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2025-01-11 02:25:41 +0800
commit0d7dd933dfab91faf1a42b7883eb059d7fb31d80 (patch)
tree123f1a8e21a0398363f5d22f7169969ce1a483c2 /tools/cru-py/cru/config.py
parent51842e8b324908bae234eb9049295970a51ef4a7 (diff)
downloadcrupest-0d7dd933dfab91faf1a42b7883eb059d7fb31d80.tar.gz
crupest-0d7dd933dfab91faf1a42b7883eb059d7fb31d80.tar.bz2
crupest-0d7dd933dfab91faf1a42b7883eb059d7fb31d80.zip
HALF WORK: 2024.1.11
Diffstat (limited to 'tools/cru-py/cru/config.py')
-rw-r--r--tools/cru-py/cru/config.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/tools/cru-py/cru/config.py b/tools/cru-py/cru/config.py
index 926ed6a..497eb01 100644
--- a/tools/cru-py/cru/config.py
+++ b/tools/cru-py/cru/config.py
@@ -82,11 +82,20 @@ class ConfigItem(Generic[_T]):
def can_generate_default(self) -> bool:
return self.default is not None
- def set_value(self, v: _T | str, /, allow_convert_from_str=False):
- if allow_convert_from_str:
- self._value = self.value_type.check_value(v)
- else:
+ def set_value(
+ self, v: _T | str, *, empty_is_default=True, allow_convert_from_str=True
+ ):
+ if empty_is_default and v == "":
+ self._value = None
+ elif allow_convert_from_str:
self._value = self.value_type.check_value_or_try_convert_from_str(v)
+ else:
+ self._value = self.value_type.check_value(v)
+
+ def reset(self, clear_default_cache=False):
+ if clear_default_cache:
+ self._default_value = None
+ self._value = None
def generate_default_value(self) -> _T:
if self.default is None:
@@ -140,3 +149,7 @@ class Configuration(CruUniqueKeyList[ConfigItem, str]):
item = ConfigItem(name, description, INTEGER_VALUE_TYPE, value, default)
self.add(item)
return item
+
+ def reset_all(self, clear_default_cache=False) -> None:
+ for item in self:
+ item.reset(clear_default_cache)