chronaxis.legacy
源码基线:8904c2f744951857659abd40aaa3535d57faf53c
1"""公开旧CAN记录,以及按需加载的记录仓、逐次模型与贡献累计原语。23输入输出和wire边界由records统一;实际进程由调用方显式创建,worker只在INIT后4加载CAN依赖。包导入无输入/DBC读取、logger配置或子进程副作用;不代表旧reader关闭5缺陷已修复。单BLF公共AnalysisRunner和原始片段已在其任务中验收;独立逐次模型及累计6只接收调用方提供的记录和已求值贡献,不证明表达式、旧ChrgInfo出口或公共7legacy_sum来源已经接通。原语不替输入提供者补缓存、施加TTL或重新解码。8解码记录仓只在显式构造后写入新目录,保存现有合法记录,不扩大原IPC值类型。9"""1011# 只公开标准库冻结模型;不能在包入口急切导入worker的运行依赖。12from .records import (LegacyCANField, LegacyCANRequest, LegacyDecodedFrame, LegacyRawFrame,13 StoredRawFrame, MAX_WIRE_BYTES, PROFILE_ID, decoded_from_dict, decoded_to_dict, decode_packet,14 encode_packet, field_from_dict, field_to_dict, frame_from_dict, frame_to_dict)1516__all__ = ('LegacyCANField', 'LegacyCANRequest', 'LegacyDecodedFrame', 'LegacyRawFrame',17 'StoredRawFrame', 'MAX_WIRE_BYTES', 'PROFILE_ID', 'decoded_from_dict', 'decoded_to_dict',18 'decode_packet', 'encode_packet', 'field_from_dict', 'field_to_dict', 'frame_from_dict', 'frame_to_dict',19 'LegacyDecodedUpdate', 'LegacyUpdateOrder', 'LegacySkipReason', 'LegacySumContribution',20 'LegacySumSnapshot', 'LegacySumAccumulator', 'StoredDecodedMessage', 'DecodedMessageStore',21 'MAX_DECODED_MESSAGE_ROW_BYTES')222324def __getattr__(name):25 """按需公开独立模型、记录仓与累计,保持原CAN worker的轻量导入。2627 参数: name为请求的模块属性名。返回: 已实现模型类本身,不创建输入或状态。28 异常: AttributeError为未公开名称;模型模块导入错误原样传播。29 副作用: 仅访问明确名称时导入其模型或累计模块,不读取日志或DBC;30 NumPy仅在调用者实际选择数组累计后加载。31 """32 # 已有CAN记录保持直接导出;未知名称不触发额外导入或提供占位实现。33 if name in ('LegacyDecodedUpdate', 'LegacyUpdateOrder'):34 from .updates import LegacyDecodedUpdate, LegacyUpdateOrder35 return {'LegacyDecodedUpdate': LegacyDecodedUpdate, 'LegacyUpdateOrder': LegacyUpdateOrder}[name]36 # 累计定义只需标准库及已有预算协议,数组内核由实际执行入口另行加载。37 if name in ('LegacySkipReason', 'LegacySumContribution', 'LegacySumSnapshot', 'LegacySumAccumulator'):38 from .sum import LegacySkipReason, LegacySumContribution, LegacySumSnapshot, LegacySumAccumulator39 return {'LegacySkipReason': LegacySkipReason, 'LegacySumContribution': LegacySumContribution,40 'LegacySumSnapshot': LegacySumSnapshot, 'LegacySumAccumulator': LegacySumAccumulator}[name]41 # 请求仓类型只加载定义;目录创建、编码写入和资源预留都由显式实例负责。42 if name in ('StoredDecodedMessage', 'DecodedMessageStore', 'MAX_DECODED_MESSAGE_ROW_BYTES'):43 from .message_store import StoredDecodedMessage, DecodedMessageStore, MAX_DECODED_MESSAGE_ROW_BYTES44 return {'StoredDecodedMessage': StoredDecodedMessage, 'DecodedMessageStore': DecodedMessageStore,45 'MAX_DECODED_MESSAGE_ROW_BYTES': MAX_DECODED_MESSAGE_ROW_BYTES}[name]46 raise AttributeError(f'chronaxis.legacy没有公开属性{name!r}')47