diff --git a/src/easy_tdx/backtest/formula_strategy.py b/src/easy_tdx/backtest/formula_strategy.py index e757f74..bfbb450 100644 --- a/src/easy_tdx/backtest/formula_strategy.py +++ b/src/easy_tdx/backtest/formula_strategy.py @@ -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 diff --git a/src/easy_tdx/backtest/indicator_cache.py b/src/easy_tdx/backtest/indicator_cache.py index 10591ce..a7f9cf2 100644 --- a/src/easy_tdx/backtest/indicator_cache.py +++ b/src/easy_tdx/backtest/indicator_cache.py @@ -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)) diff --git a/src/easy_tdx/backtest/rotation.py b/src/easy_tdx/backtest/rotation.py index b9f0716..8e5aee0 100644 --- a/src/easy_tdx/backtest/rotation.py +++ b/src/easy_tdx/backtest/rotation.py @@ -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() diff --git a/src/easy_tdx/backtest/types.py b/src/easy_tdx/backtest/types.py index dc47b69..fcbb9df 100644 --- a/src/easy_tdx/backtest/types.py +++ b/src/easy_tdx/backtest/types.py @@ -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() diff --git a/src/easy_tdx/web/task_store.py b/src/easy_tdx/web/task_store.py index e15fc89..6a7b4a1 100644 --- a/src/easy_tdx/web/task_store.py +++ b/src/easy_tdx/web/task_store.py @@ -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)