chronaxis.legacy.export_write
在独立进程把原始帧交给共用BLF写入器,真实收尾后才确认完成。
LegacyCANProcessWrite接收共享ResourceBudget和新输出路径,构造只计有限状态、 核路径而不spawn或打开输出。start加载依赖并由共用BLFWrite取得文件和写入器;每次 write只发一个有界PUT,收到同序ACK才承认该帧,FINISH没有额外帧写入许可。 finish须BLFWrite完成收尾、实际exitcode0、所有Pipe/Process及自有RAM清完,并核输出 stat不超过本writer直接预留,才公开finished。提前close、失败或取消不能伪完成。
进程/管道/wire/READY/当前帧分别先付并记真实槽;释放前后取消可重试,最高 can_process_write_cleanup_owner始终指向同一实际owner。磁盘在start前保守预留 65536 bytes、每PUT前4096 bytes,累计保留且不倒扣;不凭共享余额差接管费用。 原BLF压缩、库内部缓存及整进程RSS未测,也不承诺文件与源BLF字节一致。 这里只写控制器新工作根下的新文件,不读取来源CAN或DBC。
这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。
相关类型
AnalysisError、LegacyRawFrame、Path、RemoteLegacyError、ResourceBudget、ResultClosedError
对象导航
导入与重导出来源(展开)
from pathlib import Path
from .export_worker import worker_main
from ..can_dependencies import runtime_dependency_versions
from .process_read import RemoteLegacyError, _freeze, _wire_metadata_bytes
from .records import MAX_WIRE_BYTES, PROFILE_ID, LegacyRawFrame, decode_packet, encode_packet, frame_to_dict
from ..results.budget import ResourceBudget
from ..results.errors import AnalysisError, ResultClosedError
from ..results.spool import _cleanup_owner, _release_owned_ram, _reserve_owned_ramLegacyCANWriteError
报告新外部writer协议或原子进程失败;远端原错仅作为明确事实cause。
class LegacyCANWriteError(AnalysisError)继承关系:AnalysisError。下表列本类声明的字段;基类字段及其约束见对应类型链接。
源码:src/chronaxis/legacy/export_write.py:28(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite
拥有一个真实writer子进程与独立费用,共用的资源用量记录但不关闭其他owner。
_waiting阻止第二个在途控制包;_process_stopped只由实际exitcode确认。 _closed表示自有责任结束,_finished还须本次FINISH及输出大小验证成功。 输出路径和累计spool事实在close后保留,READY借引用在close时解除。
LegacyCANProcessWrite(budget, output_path)源码:src/chronaxis/legacy/export_write.py:32(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.__init__
预约固定协调状态并检查新路径,不启动进程或创建目标文件。
LegacyCANProcessWrite.__init__(budget, output_path)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
budget |
ResourceBudget | 是 | 无 | 位置或关键字。本次运行共用的ResourceBudget对象,用于检查内存和临时磁盘用量。当前对象在分配前申请额度,用完后归还;同一次运行的组件应使用同一个对象。 |
output_path |
str | Path | 是 | 无 | 位置或关键字。output_path为控制器已有新工作根下的str/Path目标,须为.blf后缀,目标不能已存在。 |
返回说明
未启动的独立writer。
异常说明
类型、路径或预算原错;未返回构造的持续 清理失败附can_process_write_cleanup_owner,同对象恢复后close。
本函数直接报告的具体错误:
TypeError:原CAN写出需要ResourceBudget和新输出路径。ValueError:原CAN输出路径超过本层有限能力。
源码:src/chronaxis/legacy/export_write.py:40(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._check_path
拒绝已有目标及缺少的新工作根,不创建目录或文件。
LegacyCANProcessWrite._check_path()参数:无显式参数。
参数说明
无,使用已保存resolved路径。
返回说明
返回None,不返回额外的计算值。
异常说明
ValueError为后缀错误,FileExistsError为已有目标, FileNotFoundError为父目录不存在;真正独占创建由child执行。
源码:src/chronaxis/legacy/export_write.py:71(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.output_path
读取实际新目标。
LegacyCANProcessWrite.output_path装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
resolved Path或构造前失败时None。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:87(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.closed
读取全部自有责任关闭状态。
LegacyCANProcessWrite.closed装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
True表示本对象的关闭已完成;False表示尚未关闭完毕。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:92(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.finished
读取完整FINISH事实。
LegacyCANProcessWrite.finished装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
bool,失败/提前close为False。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:97(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.failed
读取失败诊断状态。
LegacyCANProcessWrite.failed装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
True表示本对象已记录处理失败;False表示尚未记录失败。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:102(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.worker_pid
读取本次真实启动PID。
LegacyCANProcessWrite.worker_pid装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
int或None,关闭后保留。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:107(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.spool_bytes
读取本writer直接累计磁盘预留。
LegacyCANProcessWrite.spool_bytes装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
int bytes,不倒扣。
异常说明
无。
源码:src/chronaxis/legacy/export_write.py:112(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.counters
区分PUT尝试、合法ACK和本父确认帧数,不用断管推断写入成功。
LegacyCANProcessWrite.counters装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
新dict,取消时puts_issued仅为许可尝试上界。
异常说明
原小容器分配错误;不向child发送额外控制或写入。
源码:src/chronaxis/legacy/export_write.py:117(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.metadata
借读同次READY事实,不隐式start。
LegacyCANProcessWrite.metadata装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
冻结映射,借用至close。
异常说明
ResultClosedError为关闭/失败,RuntimeError为尚无实际READY。
本函数直接报告的具体错误:
RuntimeError:原CAN writer尚未READY。
源码:src/chronaxis/legacy/export_write.py:127(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._require_open
阻止关闭或失败后继续许可。
LegacyCANProcessWrite._require_open()参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
ResultClosedError为不可推进;close仍可重复恢复。
本函数直接报告的具体错误:
ResultClosedError:原CAN writer已关闭、清理中或失败。
源码:src/chronaxis/legacy/export_write.py:136(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._reserve_spool
逐笔记录本次直接磁盘预留,回调执行后取消也保留真实归属。
LegacyCANProcessWrite._reserve_spool(amount)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
amount |
int | 是 | 无 | 位置或关键字。本次要申请或归还的内存字节数,填写非负整数。申请后计入本对象的占用;归还的数量不能超过本对象此前申请且尚未归还的数量。 |
返回说明
返回None,不返回额外的计算值。
异常说明
原配额/取消,文件及累计值不倒扣。
源码:src/chronaxis/legacy/export_write.py:143(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._fail
以实际父错误为主收尾,普通底层错误包装并保cause及最高恢复owner。
LegacyCANProcessWrite._fail(exc, phase)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
exc |
BaseException | 是 | 无 | 位置或关键字。本次操作的原异常,供附加关闭失败信息并保留原因链。不要用错误字符串代替异常对象。 |
phase |
str | 是 | 无 | 位置或关键字。发生错误时正在执行的步骤名称;写入错误信息,帮助区分初始化、读取、解码或关闭失败。 |
返回说明
不返回。
异常说明
KI/SystemExit/AnalysisError原对象,其余LegacyCANWriteError保原cause; 两次有限cleanup副错只附note,绝不伪称写出完成。
源码:src/chronaxis/legacy/export_write.py:155(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.start
实际创建独立spawn及原writer,READY不包含任何帧许可。
LegacyCANProcessWrite.start()参数:无显式参数。
参数说明
无。
返回说明
self,重复成功调用不重建或重复预留。
异常说明
路径/依赖/管道/协议/配额/预算或父原取消,最高owner按实际槽可恢复。
源码:src/chronaxis/legacy/export_write.py:170(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._check_ready
核同次实际PID及现有依赖,不接受bool伪版本或自称READY。
LegacyCANProcessWrite._check_ready(packet)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
packet |
dict[str, object] | 是 | 无 | 位置或关键字。已经解码并检查字段的进程通信包,含op操作名及该操作的数据;本函数按当前协议步骤继续检查或发送它。 |
返回说明
返回None,不返回额外的计算值。
异常说明
LegacyCANWriteError为结构/类型/profile/PID/版本/摘要不符。
本函数直接报告的具体错误:
LegacyCANWriteError:原CAN writer READY身份、版本、实际PID或vendor不符。
源码:src/chronaxis/legacy/export_write.py:206(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._exchange
同步交换唯一控制包,禁止第二个在途PUT或把子退出当成ACK。
LegacyCANProcessWrite._exchange(packet)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
packet |
dict | 是 | 无 | 位置或关键字。packet为有界控制dict。 |
返回说明
严格JSON dict。
异常说明
父原取消/管道/编码错误或LegacyCANWriteError;远端失败以明确 RemoteLegacyError事实为cause,不能声称跨进程保留异常对象身份。
源码:src/chronaxis/legacy/export_write.py:219(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.write
完整发送一个原始帧并等唯一ACK,不缓存后继或按ID筛帧。
LegacyCANProcessWrite.write(frame)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
frame |
LegacyRawFrame | 是 | 无 | 位置或关键字。frame为原生LegacyRawFrame,保全部公开字段及原浮点timestamp。 |
返回说明
None,合法ACK后counters增加;无额外on_message_received。
异常说明
TypeError为非原模型;原预算/磁盘/取消或writer/协议失败,之后只能close。
本函数直接报告的具体错误:
TypeError:原CAN writer.write需要LegacyRawFrame。LegacyCANWriteError:原CAN writer ACK不属于本次唯一PUT。
源码:src/chronaxis/legacy/export_write.py:251(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.finish
完成原stop、真实正常退出及全部费用,再核实际文件未超过预留。
LegacyCANProcessWrite.finish()参数:无显式参数。
参数说明
无。
返回说明
self,成功后重复调用不重发FINISH或重写文件。
异常说明
原取消/预算/关闭错误,或LegacyCANWriteError为不完整回应、异常退出 或实际stat超本writer累计预留;任何失败都不置finished。
源码:src/chronaxis/legacy/export_write.py:283(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._close_connection
实际关闭端点后才撤槽。
LegacyCANProcessWrite._close_connection(slot)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
slot |
str | 是 | 无 | 位置或关键字。保存本对象通信端点的属性名;关闭后清空该属性,防止重复关闭旧端点。 |
返回说明
返回None,不返回额外的计算值。
异常说明
原close/取消;执行后异常也按真实closed确认,不丢未关句柄。
源码:src/chronaxis/legacy/export_write.py:311(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite._close_process
有限等待自己实际进程退出再关句柄,绝不以终止请求代替退出证明。
LegacyCANProcessWrite._close_process()参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
原join/terminate/kill/close或LegacyCANWriteError; 未确认时保原进程/费用并附稳定退出诊断。显式join上限为.5/.5/5秒, Windows kill仍是TerminateProcess,必须实际exitcode非None。
源码:src/chronaxis/legacy/export_write.py:323(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
LegacyCANProcessWrite.close
只关本writer实际IPC/进程和费用,产物与累计磁盘预留保留。
LegacyCANProcessWrite.close()参数:无显式参数。
参数说明
无。
返回说明
None,完成后重复调用幂等。
异常说明
原关闭/预算/取消附can_process_write_cleanup_owner,当前槽供持续恢复; 提前关闭不发送额外帧或FINISH,不设置finished,不修改借用预算的其他费用。
源码:src/chronaxis/legacy/export_write.py:354(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。