taolib.remote.probe_models 源代码
"""远端探测模型与可配置项。
该模块专注于“数据与配置”,不包含任何网络/远端执行逻辑,便于复用与测试。
"""
import os
from collections.abc import Mapping
from dataclasses import dataclass
from typing import Any
[文档]
DEFAULT_CONDA_ACTIVATE_CMD = os.environ.get("TAOLIB_REMOTE_CONDA_ACTIVATE_CMD", ":")
[文档]
DEFAULT_PROBE_CMD = os.environ.get("TAOLIB_REMOTE_PROBE_CMD", "python -V")
[文档]
DEFAULT_ENCODING = os.environ.get("TAOLIB_REMOTE_ENCODING", "utf-8")
@dataclass(frozen=True, slots=True)
[文档]
class RemoteProbeReport:
"""远端探测结果。
语义约定:
- conda_available=False 时,不会尝试执行 probe_cmd(probe_attempted=False, probe_ok=None)。
- conda_available=True 且 probe_attempted=True 时,probe_ok 表示探测命令退出状态是否成功。
"""
[文档]
conda_available: bool
[文档]
probe_attempted: bool
[文档]
probe_ok: bool | None
@dataclass(frozen=True, slots=True)
[文档]
class RemoteProbeCommands:
"""远端探测使用的命令集合。
命令分为两类:
- prefix 命令:tools_env_cmd、conda_activate_cmd,会在同一执行上下文中叠加生效;
- 常规命令:uname_cmd、check_conda_cmd、probe_cmd,会在远端依次运行。
"""
[文档]
conda_activate_cmd: str = DEFAULT_CONDA_ACTIVATE_CMD
[文档]
probe_cmd: str = DEFAULT_PROBE_CMD
[文档]
check_conda_cmd: str = "command -v conda"
[文档]
uname_cmd: str = "uname -a"
@dataclass(frozen=True, slots=True)
[文档]
class RemoteProbeRunOptions:
"""远端命令执行选项与错误处理策略。
encoding 与 run_kwargs 会被合并用于 Connection.run(...)。
raise_on_* 用于控制缺少 conda 或 probe 失败时,是返回结构化结果还是抛出异常。
"""
[文档]
encoding: str = DEFAULT_ENCODING
[文档]
run_kwargs: Mapping[str, Any] | None = None
[文档]
raise_on_conda_missing: bool = False
[文档]
raise_on_probe_failure: bool = False
[文档]
def merged_run_kwargs(self) -> dict[str, Any]:
merged: dict[str, Any] = {"encoding": self.encoding}
if self.run_kwargs:
merged.update(dict(self.run_kwargs))
return merged