简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

ErisPulse.loaders.strict 模块


模块概述

ErisPulse 严格模式

提供统一的模块/适配器加载合规性管理。

提示

  1. 通过 ErisPulse.framework.strict_mode 配置级别(0=宽松(默认), 1=跳过, 2=致命)
  2. 通过 ErisPulse.framework.strict_mode_exceptions 配置豁免清单
  3. StrictModeManager 由初始化协调器创建并注入到各加载器,确保跨加载器收集违规

类列表

class StrictModeLevel(IntEnum)

严格模式级别

内部方法 内部枚举,对应配置中的 strict_mode 数值

class Violation

单条违规记录

class StrictModeManager

严格模式管理器

统一处理模块/适配器加载过程中的合规性判定与违规收集。

提示 使用方式:

manager = StrictModeManager.from_config()

未继承基类时判定是否拒绝

if manager.decide(name, "module", "not_base_class"): ... # 跳过该模块 ... pass

异常类失败仅记录(调用方已自行跳过)

manager.record_failure(name, "module", "load_failed", detail=str(e))

在检查点统一抛出致命错误

manager.raise_if_fatal()

方法列表

__post_init__()

初始化豁免集合,便于快速查找


from_config()

从框架配置创建管理器实例

返回值 (配置好的管理器实例;读取配置失败时回退到默认值): > 内部方法 由初始化协调器调用,读取 ErisPulse.framework.strict_mode 及豁免清单。 strict_mode 配置值会被严格校验:非法值(非 0/1/2)会明确告警并回退到 默认级别,避免用户以为开了严格模式实际却在宽松模式下运行。


is_exempt(name: str, component_type: str)

判断组件是否在豁免清单中


decide(name: str, component_type: str, reason: str)

报告一次可"容忍或拒绝"的违规,并返回处置决定

主要用于"未继承基类"这类违规:在宽松级别下可容忍继续加载, 在严格级别下应拒绝(跳过)。

内部方法 在致命级别下,非豁免违规会同时被记录,待检查点统一抛出


record_failure(name: str, component_type: str, reason: str, detail: str = '')

记录一次异常类失败

与 decide 不同,此方法假定调用方已自行跳过该组件(例如捕获了异常)。 被拒绝的组件会记入 _rejections(与级别无关,用于摘要展示); 仅在致命级别下额外记入 _violations,以便检查点统一报告并中止。

内部方法 调用方应同时输出自己的具体错误日志,此方法不重复输出


has_fatal_violations()

是否存在致命级别的违规

返回值 (当前为致命级别且已收集到违规时返回): True


violations()

已收集的致命违规列表(只读视图)


rejections()

被拒绝/跳过的组件列表(只读视图,与级别无关,用于摘要展示)


tolerated()

宽松模式下被容忍加载的组件列表


raise_if_fatal()

在检查点统一报告并抛出致命错误

当处于致命级别且收集到违规时,先打印完整违规清单,再抛出 StrictModeError 中止启动。无致命违规时直接返回。

异常: StrictModeError - 存在致命违规时抛出