algobench-sdk 2.0.1__tar.gz → 2.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/PKG-INFO +1 -1
  2. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/__init__.py +1 -1
  3. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/parsers/csv_parser.py +3 -83
  4. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench_sdk.egg-info/PKG-INFO +1 -1
  5. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/pyproject.toml +1 -1
  6. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/README.md +0 -0
  7. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/__main__.py +0 -0
  8. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/api.py +0 -0
  9. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/cli.py +0 -0
  10. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/__init__.py +0 -0
  11. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/analysis_criteria.py +0 -0
  12. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/business.py +0 -0
  13. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/metric_keywords.py +0 -0
  14. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/metrics.py +0 -0
  15. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/config/thresholds.py +0 -0
  16. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/exceptions.py +0 -0
  17. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/models.py +0 -0
  18. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/parsers/__init__.py +0 -0
  19. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/__init__.py +0 -0
  20. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/core.py +0 -0
  21. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/diagnosis.py +0 -0
  22. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/qvalue.py +0 -0
  23. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/sample_processing.py +0 -0
  24. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/__init__.py +0 -0
  25. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/data_type.py +0 -0
  26. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/effect_size.py +0 -0
  27. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/nonparametric.py +0 -0
  28. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/smart.py +0 -0
  29. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/stats/tests/t_tests.py +0 -0
  30. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/utils/__init__.py +0 -0
  31. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/utils/improvement.py +0 -0
  32. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/utils/math_utils.py +0 -0
  33. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench/utils/numbers.py +0 -0
  34. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench_sdk.egg-info/SOURCES.txt +0 -0
  35. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench_sdk.egg-info/dependency_links.txt +0 -0
  36. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench_sdk.egg-info/requires.txt +0 -0
  37. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/algobench_sdk.egg-info/top_level.txt +0 -0
  38. {algobench_sdk-2.0.1 → algobench_sdk-2.0.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algobench-sdk
3
- Version: 2.0.1
3
+ Version: 2.0.3
4
4
  Summary: AlgoBench - 算法基准测试分析工具的 Python SDK 与 CLI
5
5
  Author: DuanxiangLiu
6
6
  License-Expression: AGPL-3.0-only
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- __version__ = "2.0.1"
5
+ __version__ = "2.0.3"
6
6
 
7
7
  from algobench.api import analyze, compute_statistics_only as compute_statistics
8
8
  from algobench.models import (
@@ -12,76 +12,13 @@ from algobench.config.business import (
12
12
  )
13
13
 
14
14
 
15
- def parse_metric_inline_config(value: str) -> dict:
16
- """解析指标备注行中的内联配置,对应 JS 的 parseMetricRemarkValue。
17
-
18
- 从 ## metric:name 后面的文本中提取 key=value 配置对和纯文本备注。
19
-
20
- Args:
21
- value: ## metric:name 后面的文本,如 "半周长线长 better=higher unit=ms"
22
-
23
- Returns:
24
- {"remark": str, "config": dict | None}
25
- config 存在时包含解析出的配置键值对,否则为 None。
26
- """
27
- trimmed = (value or "").strip()
28
- if not trimmed:
29
- return {"remark": "", "config": None}
30
-
31
- tokens = trimmed.split()
32
- config: dict = {}
33
- remark_parts: list[str] = []
34
- has_config = False
35
-
36
- for token in tokens:
37
- eq_index = token.find("=")
38
- if eq_index <= 0:
39
- remark_parts.append(token)
40
- continue
41
-
42
- key = token[:eq_index].strip()
43
- raw_value = token[eq_index + 1 :].strip()
44
- if not key or raw_value == "":
45
- remark_parts.append(token)
46
- continue
47
-
48
- if key == "better":
49
- config["better"] = raw_value
50
- has_config = True
51
- elif key == "unit":
52
- config["unit"] = raw_value
53
- has_config = True
54
- elif key == "impDisplayMode":
55
- config["impDisplayMode"] = raw_value
56
- has_config = True
57
- elif key in ("scale", "valueScale"):
58
- try:
59
- parsed = float(raw_value)
60
- if parsed != float("inf") and parsed != float("-inf") and parsed == parsed: # isfinite check
61
- config["valueScale"] = parsed
62
- has_config = True
63
- else:
64
- remark_parts.append(token)
65
- except ValueError:
66
- remark_parts.append(token)
67
- elif key == "description":
68
- config["description"] = raw_value
69
- has_config = True
70
- else:
71
- remark_parts.append(token)
72
-
73
- remark = " ".join(remark_parts) or config.get("description") or trimmed
74
- return {"remark": remark, "config": config if has_config else None}
75
-
76
-
77
15
  def extract_remarks(text: str) -> dict:
78
16
  """从 CSV 文本中提取语义注释行,对应 JS 的 extractRemarks + splitRemarksAndBody。
79
17
 
80
18
  返回:
81
19
  {
82
20
  "algoRemarks": {algo_name: remark},
83
- "metricRemarks": {metric_name: remark | {"remark": str, "config": dict}},
84
- "metricConfigs": {metric_name: config_dict}, # 仅当存在内联配置时出现
21
+ "metricRemarks": {metric_name: remark},
85
22
  "datasetRemark": str,
86
23
  }
87
24
  """
@@ -89,8 +26,6 @@ def extract_remarks(text: str) -> dict:
89
26
  if not text or not isinstance(text, str):
90
27
  return result
91
28
 
92
- metric_configs: dict[str, dict] = {}
93
-
94
29
  for line in text.splitlines():
95
30
  trimmed = line.strip()
96
31
  if not trimmed.startswith(REMARK_PREFIX):
@@ -109,15 +44,8 @@ def extract_remarks(text: str) -> dict:
109
44
  key = metric_match.group(1)
110
45
  value = (metric_match.group(2) or "").strip()
111
46
  if key:
112
- parsed = parse_metric_inline_config(value)
113
- if parsed["config"] is not None:
114
- result["metricRemarks"][key] = {
115
- "remark": parsed["remark"],
116
- "config": parsed["config"],
117
- }
118
- metric_configs[key] = parsed["config"]
119
- else:
120
- result["metricRemarks"][key] = parsed["remark"]
47
+ # 仅保留 remark 文本,不再解析 key=value 配置
48
+ result["metricRemarks"][key] = value
121
49
  continue
122
50
 
123
51
  note_match = REMARK_NOTE_PATTERN.match(trimmed)
@@ -125,9 +53,6 @@ def extract_remarks(text: str) -> dict:
125
53
  result["datasetRemark"] = (note_match.group(1) or "").strip()
126
54
  continue
127
55
 
128
- if metric_configs:
129
- result["metricConfigs"] = metric_configs
130
-
131
56
  return result
132
57
 
133
58
 
@@ -206,11 +131,6 @@ def parse_csv(csv_string: str, selected_cases: list[str] | None = None) -> dict:
206
131
  "metricRemarks": {k: v for k, v in remarks["metricRemarks"].items() if k in metrics},
207
132
  "datasetRemark": remarks["datasetRemark"],
208
133
  }
209
- # 保留 metricConfigs(仅过滤掉不存在的指标)
210
- if "metricConfigs" in remarks:
211
- filtered_remarks["metricConfigs"] = {
212
- k: v for k, v in remarks["metricConfigs"].items() if k in metrics
213
- }
214
134
 
215
135
  # 构建标准化数据
216
136
  data = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algobench-sdk
3
- Version: 2.0.1
3
+ Version: 2.0.3
4
4
  Summary: AlgoBench - 算法基准测试分析工具的 Python SDK 与 CLI
5
5
  Author: DuanxiangLiu
6
6
  License-Expression: AGPL-3.0-only
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "algobench-sdk"
7
- version = "2.0.1"
7
+ version = "2.0.3"
8
8
  description = "AlgoBench - 算法基准测试分析工具的 Python SDK 与 CLI"
9
9
  readme = "README.md"
10
10
  license = "AGPL-3.0-only"
File without changes
File without changes