mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 23:54:21 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user