fix(lint): isinstance 元组写法改 PEP 604 联合类型,修复 CI 的 UP038

CI 经 requirements-dev.txt 锁定 ruff==0.11.11(UP038 仍生效),本地 0.16.4 已移除该
规则导致漏检。10 处 isinstance(x, (A, B)) 统一改为 isinstance(x, A | B)(项目
requires-python>=3.10,联合类型 isinstance 合法;strategy.py 已有同风格先例)。
已用 CI 同版本工具链本地复验:ruff 0.11.11 check/format、mypy 2.1.0 strict、
1252 单测全过。
This commit is contained in:
GitHub
2026-09-01 22:36:37 +08:00
parent 917295edaf
commit 561e2d3e61
5 changed files with 10 additions and 10 deletions
+2 -2
View File
@@ -116,7 +116,7 @@ def _clean_json(obj: Any) -> Any:
if isinstance(obj, dict):
return {str(k): _clean_json(v) for k, v in obj.items()}
if isinstance(obj, (list, tuple)):
if isinstance(obj, list | tuple):
return [_clean_json(v) for v in obj]
if isinstance(obj, _np.integer):
return int(obj)
@@ -125,7 +125,7 @@ def _clean_json(obj: Any) -> Any:
return f if _np.isfinite(f) else None
if isinstance(obj, _np.bool_):
return bool(obj)
if obj is None or isinstance(obj, (str, int, bool)):
if obj is None or isinstance(obj, str | int | bool):
return obj
if isinstance(obj, float):
return float(obj) if _np.isfinite(obj) else None
+1 -1
View File
@@ -89,6 +89,6 @@ class IndicatorCache:
arr_id = id(a)
self._array_refs[arr_id] = a # 持引用,防 id 复用
return ("arr", arr_id, a.shape)
if isinstance(a, (int, float, str, bool, type(None))):
if isinstance(a, int | float | str | bool | None):
return ("s", type(a).__name__, repr(a))
return ("o", type(a).__name__, repr(a))
+2 -2
View File
@@ -107,7 +107,7 @@ def _clean(obj: Any) -> Any:
"""numpy/Timestamp/NaN → JSON 原生(递归)。"""
if isinstance(obj, dict):
return {str(k): _clean(v) for k, v in obj.items()}
if isinstance(obj, (list, tuple)):
if isinstance(obj, list | tuple):
return [_clean(v) for v in obj]
if isinstance(obj, np.integer):
return int(obj)
@@ -118,7 +118,7 @@ def _clean(obj: Any) -> Any:
return bool(obj)
if isinstance(obj, float) and not math.isfinite(obj):
return None
if obj is None or isinstance(obj, (str, int, bool)):
if obj is None or isinstance(obj, str | int | bool):
return obj
if hasattr(obj, "isoformat"):
return obj.isoformat()
+2 -2
View File
@@ -108,7 +108,7 @@ def to_json_native(obj: Any) -> Any:
if isinstance(obj, dict):
return {str(k): to_json_native(v) for k, v in obj.items()}
if isinstance(obj, (list, tuple)):
if isinstance(obj, list | tuple):
return [to_json_native(v) for v in obj]
if isinstance(obj, np.integer):
return int(obj)
@@ -119,7 +119,7 @@ def to_json_native(obj: Any) -> Any:
return bool(obj)
if isinstance(obj, float) and not math.isfinite(obj):
return None
if obj is None or isinstance(obj, (str, int, bool)):
if obj is None or isinstance(obj, str | int | bool):
return obj
if hasattr(obj, "isoformat"):
return obj.isoformat()
+3 -3
View File
@@ -53,16 +53,16 @@ def _json_default(obj: Any) -> Any:
import numpy as np
import pandas as pd
if isinstance(obj, (np.integer,)):
if isinstance(obj, np.integer):
return int(obj)
if isinstance(obj, (np.floating,)):
if isinstance(obj, np.floating):
v = float(obj)
return v if np.isfinite(v) else None
if isinstance(obj, np.bool_):
return bool(obj)
if isinstance(obj, pd.Timestamp):
return obj.isoformat()
if isinstance(obj, (np.ndarray, pd.Series)):
if isinstance(obj, np.ndarray | pd.Series):
return obj.tolist()
return str(obj)