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-14 22:36:08 +0800
commita5c2f62b0b3c4ec6ce46c57bcd99319a85900798 (patch)
tree0cb89834a1ed32bdf20597309c78c3a5cbca3c88 /tools/cru-py/cru/config.py
parentb9788b23bbd000d2a2d14402b4e2abacd5a57365 (diff)
downloadcrupest-a5c2f62b0b3c4ec6ce46c57bcd99319a85900798.tar.gz
crupest-a5c2f62b0b3c4ec6ce46c57bcd99319a85900798.tar.bz2
crupest-a5c2f62b0b3c4ec6ce46c57bcd99319a85900798.zip
HALF WORK: 2024.1.14
Diffstat (limited to 'tools/cru-py/cru/config.py')
-rw-r--r--tools/cru-py/cru/config.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/cru-py/cru/config.py b/tools/cru-py/cru/config.py
index 497eb01..bd8eaf9 100644
--- a/tools/cru-py/cru/config.py
+++ b/tools/cru-py/cru/config.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from typing import TypeVar, Generic
+from typing import Any, TypeVar, Generic
from ._error import CruInternalError, CruException
from .list import CruUniqueKeyList
@@ -124,7 +124,7 @@ class ConfigItem(Generic[_T]):
)
-class Configuration(CruUniqueKeyList[ConfigItem, str]):
+class Configuration(CruUniqueKeyList[ConfigItem[Any], str]):
def __init__(self):
super().__init__(lambda c: c.name)
@@ -134,7 +134,7 @@ class Configuration(CruUniqueKeyList[ConfigItem, str]):
description: str,
value: str | None = None,
default: ValueGeneratorBase[str] | str | None = None,
- ) -> ConfigItem:
+ ) -> ConfigItem[str]:
item = ConfigItem(name, description, TEXT_VALUE_TYPE, value, default)
self.add(item)
return item
@@ -145,7 +145,7 @@ class Configuration(CruUniqueKeyList[ConfigItem, str]):
description: str,
value: int | None = None,
default: ValueGeneratorBase[int] | int | None = None,
- ) -> ConfigItem:
+ ) -> ConfigItem[int]:
item = ConfigItem(name, description, INTEGER_VALUE_TYPE, value, default)
self.add(item)
return item
@@ -153,3 +153,11 @@ class Configuration(CruUniqueKeyList[ConfigItem, str]):
def reset_all(self, clear_default_cache=False) -> None:
for item in self:
item.reset(clear_default_cache)
+
+ def to_dict(self) -> dict[str, Any]:
+ return {item.name: item.value for item in self}
+
+ def to_str_dict(self) -> dict[str, str]:
+ return {
+ item.name: item.value_type.convert_value_to_str(item.value) for item in self
+ }