From 2e22b02b1bd7ef83ba1949beef109b713ccf830d Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Thu, 15 May 2025 18:18:38 +0800 Subject: [PATCH 1/3] chore: echarts type and add settings property --- pyproject.toml | 2 +- swankit/core/data.py | 2 ++ swankit/core/settings.py | 17 ++++++++++++++--- test/unit/core/test_settings.py | 34 +++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 test/unit/core/test_settings.py diff --git a/pyproject.toml b/pyproject.toml index 2a64763..99751e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "hatchling.build" [project] name = "swankit" -version = "0.1.7" +version = "0.1.8" dynamic = ["readme", "dependencies"] description = "Base toolkit for SwanLab" license = "Apache-2.0" diff --git a/swankit/core/data.py b/swankit/core/data.py index c0fa219..3ff5fae 100644 --- a/swankit/core/data.py +++ b/swankit/core/data.py @@ -153,6 +153,8 @@ def __init__(self, chart_type: str, column_type: str): MOLECULE = ChartItem("molecule", "MOLECULE") + ECHARTS = ChartItem("echarts", "ECHARTS") + # ---------------------------------- 需要子类实现的方法 ---------------------------------- @abstractmethod diff --git a/swankit/core/settings.py b/swankit/core/settings.py index ffa84ad..6a7e3c2 100644 --- a/swankit/core/settings.py +++ b/swankit/core/settings.py @@ -8,7 +8,7 @@ swankit 为 swanlab 定制的配置类 """ import os -from typing import Tuple +from typing import Tuple, List, Optional class LazySettings: @@ -20,6 +20,7 @@ def __init__(self): self.__exp_name = None self.__exp_colors = None self.__description = None + self.__tags = None @property def exp_name(self) -> str: @@ -36,7 +37,7 @@ def exp_name(self, exp_name: str) -> None: self.__exp_name = exp_name @property - def exp_colors(self) -> Tuple[str, str]: + def exp_colors(self) -> Optional[Tuple[str, str]]: """实验颜色""" return self.__exp_colors @@ -48,7 +49,7 @@ def exp_colors(self, exp_colors: Tuple[str, str]) -> None: self.__exp_colors = exp_colors @property - def description(self) -> str: + def description(self) -> Optional[str]: """实验描述""" return self.__description @@ -58,6 +59,16 @@ def description(self, description: str) -> None: if self.__description is not None: raise ValueError("description can only be set once") self.__description = description + + @property + def tags(self) -> Optional[List[str]]: + return self.__tags + + @tags.setter + def tags(self, tags:List[str]) -> None: + if self.__tags is not None: + raise ValueError("tags can only be set once") + self.__tags = tags class SwanLabSharedSettings(LazySettings): diff --git a/test/unit/core/test_settings.py b/test/unit/core/test_settings.py new file mode 100644 index 0000000..bd42388 --- /dev/null +++ b/test/unit/core/test_settings.py @@ -0,0 +1,34 @@ +""" +@author: cunyue +@file: test_settings.py +@time: 2025/5/15 18:15 +@description: 测试 settings +""" + + +def test_lazy_settings(): + from swankit.core.settings import LazySettings + + settings = LazySettings() + settings.exp_name = "test" + settings.exp_colors = ("red", "blue") + settings.description = "test description" + + assert settings.exp_name == "test" + assert settings.exp_colors == ("red", "blue") + assert settings.description == "test description" + + try: + settings.exp_name = "test2" + except ValueError as e: + assert str(e) == "exp_name can only be set once" + + try: + settings.exp_colors = ("green", "yellow") + except ValueError as e: + assert str(e) == "exp_colors can only be set once" + + try: + settings.description = "test description 2" + except ValueError as e: + assert str(e) == "description can only be set once" From 93cb664b8755c86a1f4bb823e4203a74ce489a06 Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Thu, 15 May 2025 18:25:56 +0800 Subject: [PATCH 2/3] fix: test --- test/unit/core/test_settings.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/test/unit/core/test_settings.py b/test/unit/core/test_settings.py index bd42388..3b9cf1a 100644 --- a/test/unit/core/test_settings.py +++ b/test/unit/core/test_settings.py @@ -5,6 +5,8 @@ @description: 测试 settings """ +import pytest + def test_lazy_settings(): from swankit.core.settings import LazySettings @@ -18,17 +20,9 @@ def test_lazy_settings(): assert settings.exp_colors == ("red", "blue") assert settings.description == "test description" - try: + with pytest.raises(ValueError, match="exp_name can only be set once"): settings.exp_name = "test2" - except ValueError as e: - assert str(e) == "exp_name can only be set once" - - try: + with pytest.raises(ValueError, match="exp_colors can only be set once"): settings.exp_colors = ("green", "yellow") - except ValueError as e: - assert str(e) == "exp_colors can only be set once" - - try: + with pytest.raises(ValueError, match="description can only be set once"): settings.description = "test description 2" - except ValueError as e: - assert str(e) == "description can only be set once" From 2eaf17627a5211ac8cf5dac9ee86aa35431e8083 Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Thu, 15 May 2025 18:27:48 +0800 Subject: [PATCH 3/3] fix: comment --- swankit/core/settings.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/swankit/core/settings.py b/swankit/core/settings.py index 6a7e3c2..e681419 100644 --- a/swankit/core/settings.py +++ b/swankit/core/settings.py @@ -59,13 +59,15 @@ def description(self, description: str) -> None: if self.__description is not None: raise ValueError("description can only be set once") self.__description = description - + @property def tags(self) -> Optional[List[str]]: + """实验标签""" return self.__tags - + @tags.setter - def tags(self, tags:List[str]) -> None: + def tags(self, tags: List[str]) -> None: + """实验标签""" if self.__tags is not None: raise ValueError("tags can only be set once") self.__tags = tags