diff --git a/pyproject.toml b/pyproject.toml index eb22b1f..1a82f49 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "hatchling.build" [project] name = "swankit" -version = "0.1.2b3" +version = "0.1.2b4" dynamic = ["readme", "dependencies"] description = "Base toolkit for SwanLab" license = "Apache-2.0" diff --git a/swankit/callback/models/key.py b/swankit/callback/models/key.py index cf1c00f..cd55c33 100644 --- a/swankit/callback/models/key.py +++ b/swankit/callback/models/key.py @@ -34,6 +34,19 @@ def __init__(self, y_range: YRange = None, chart_name: Optional[str] = None, met self.chart_name: Optional[str] = chart_name self.metric_name: Optional[str] = metric_name + def clone(self, y_range: YRange = None, chart_name: Optional[str] = None, metric_name: Optional[str] = None): + """ + 克隆一个新的ColumnConfig对象,并且可以修改其中的参数 + :param y_range: y轴范围 + :param chart_name: 图表名称 + :param metric_name: 指标名称 + """ + return ColumnConfig( + y_range=y_range if y_range is not None else self.y_range, + chart_name=chart_name if chart_name is not None else self.chart_name, + metric_name=metric_name if metric_name is not None else self.metric_name, + ) + class ColumnInfo: """ diff --git a/test/unit/callback/models/test_key.py b/test/unit/callback/models/test_key.py index 4ef406a..a7774ab 100644 --- a/test/unit/callback/models/test_key.py +++ b/test/unit/callback/models/test_key.py @@ -2,6 +2,21 @@ from swankit.core import ChartType +def test_column_config(): + c = K.ColumnConfig(y_range=(0, 100), chart_name="CPU Utilization (%)") + assert c.y_range == (0, 100) + assert c.chart_name == "CPU Utilization (%)" + assert c.metric_name is None + clone = c.clone(y_range=None, metric_name="12345") + assert clone.y_range == (0, 100) + assert clone.chart_name == c.chart_name + assert clone.metric_name == "12345" + clone = c.clone(y_range=(0, 50), chart_name="CPU Utilization (%)", metric_name="12345") + assert clone.y_range == (0, 50) + assert clone.chart_name == c.chart_name + assert clone.metric_name == "12345" + + def test_column_info(): c = K.ColumnInfo( key="a/1",