chronaxis.results.artifact_exports
管理本次生成的导出文件及其索引。结果发布时复制并核对这些文件,不再重新计算导出数据。关闭对象会释放读取资源,文件是否发布由单独状态记录。
这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。
相关类型
FrameSort、Path、ResultClosedError、ResultFormatError
对象导航
| 对象 | 用途 |
|---|---|
ArtifactExportStore |
保存一次会话的信号/报文导出及独立清单,不借用原数据reader。 |
ArtifactExportStore.__init__ |
创建独占目录及索引。 |
ArtifactExportStore.closed |
读取真实关闭状态。 |
ArtifactExportStore.owned_ram |
汇总本仓及索引实际费用供父层核账。 |
ArtifactExportStore.next_path |
提供当前导出独占子目录。 |
ArtifactExportStore._close_slot |
真实close成功后撤槽。 |
ArtifactExportStore._identity |
取得普通文件的替换/修改标识。 |
ArtifactExportStore._file |
必要复制时才读内容;请求摘要则在同次读取计算。 |
ArtifactExportStore.append |
登记刚生成目录中有限文件的实际身份。 |
ArtifactExportStore.seal |
结束目录索引的写入;之后才能把导出文件交给结果对象管理。 |
ArtifactExportStore.copy_to |
逐目录复制到新发布位置,按请求在同次读取核摘要。 |
ArtifactExportStore.recover_copy |
关闭失败发布句柄,可重新发布到另一新目录。 |
ArtifactExportStore.close |
真实关闭索引及IO后释放自己的费用,保留磁盘。 |
导入与重导出来源(展开)
from pathlib import Path
from ..core.validation import require_text
from hashlib import sha256
from .frame_sort import FrameSort
from .budget import _reserve_owned_ram, _release_owned_ram, _cleanup_owner
from .errors import ResultClosedError, ResultFormatError
from .raw_exports import _write_allArtifactExportStore
保存一次会话的信号/报文导出及独立清单,不借用原数据reader。
ArtifactExportStore(budget, path, session_id, device_label, *, integrity=True)源码:src/chronaxis/results/artifact_exports.py:19(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.__init__
创建独占目录及索引。
ArtifactExportStore.__init__(budget, path, session_id, device_label, *, integrity=True)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
budget |
ResourceBudget | 是 | 无 | 位置或关键字。本次运行共用的ResourceBudget对象,用于检查内存和临时磁盘用量。当前对象在分配前申请额度,用完后归还;同一次运行的组件应使用同一个对象。 |
path |
pathlib.Path | 是 | 无 | 位置或关键字。保存本次导出文件登记信息的新目录,记录会话与文件摘要。 |
session_id |
str | 是 | 无 | 位置或关键字。本次会话的名字,用来防止把不同试验的数据混在一起。 |
device_label |
str | 是 | 无 | 位置或关键字。本次产出的设备标签,接受任意非空文本,如lab-pc或试验台一号;pending表示未指定。标签不参与计算,不从路径推断;此Python参数是否可省略以签名为准,分析配置省略metadata.device_label时使用pending。 |
integrity |
bool | 否 | True | 仅关键字。是否执行本对象的额外内容摘要或认证核验;False仍保留结构、类型、预算及必要文件变化检查。 |
返回说明
__init__返回None;使用类名构造时得到已经初始化的对象。后续由该对象管理并关闭自己创建的资源。
异常说明
配置/IO/预算错。
本函数直接报告的具体错误:
TypeError:device_label必须为字符串。ValueError:device_label不能为空或全空白;帧导出取消回调必须可调用。
源码:src/chronaxis/results/artifact_exports.py:22(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.closed
读取真实关闭状态。
ArtifactExportStore.closed装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
True表示本对象的关闭已完成;False表示尚未关闭完毕。
异常说明
无。
源码:src/chronaxis/results/artifact_exports.py:42(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.owned_ram
汇总本仓及索引实际费用供父层核账。
ArtifactExportStore.owned_ram装饰器:property。
读取属性,不使用调用括号。
参数说明
无。
返回说明
bytes。
异常说明
无。
源码:src/chronaxis/results/artifact_exports.py:48(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.next_path
提供当前导出独占子目录。
ArtifactExportStore.next_path()参数:无显式参数。
参数说明
无。
返回说明
Path。
异常说明
非building。
本函数直接报告的具体错误:
ResultClosedError:导出索引不能新增。
源码:src/chronaxis/results/artifact_exports.py:53(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore._close_slot
真实close成功后撤槽。
ArtifactExportStore._close_slot(slot)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
slot |
str | 是 | 无 | 位置或关键字。当前对象中用于保存资源或其费用的属性名,例如"_row_cost";只能指向本对象实际管理的项。释放成功后才清空对应项。 |
返回说明
返回None,不返回额外的计算值。
异常说明
原close错,保槽重试。
源码:src/chronaxis/results/artifact_exports.py:60(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore._identity
取得普通文件的替换/修改标识。
ArtifactExportStore._identity(path)装饰器:staticmethod。
参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
path |
str | Path | 是 | 无 | 位置或关键字。本次任务专用路径;只操作本次登记的资源,不能指向原始输入或历史项目目录。 |
返回说明
四整数tuple。
异常说明
链接/非普通文件/IO。
源码:src/chronaxis/results/artifact_exports.py:68(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore._file
必要复制时才读内容;请求摘要则在同次读取计算。
ArtifactExportStore._file(path, destination=None, expected=None, identity=None)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
path |
pathlib.Path | 是 | 无 | 位置或关键字。实际导出源文件,读取其字节数和SHA-256以核对完整性。 |
destination |
pathlib.Path | None | 否 | None | 位置或关键字。复制的目标文件;None表示仅核对源文件,不执行复制。 |
expected |
tuple | None | 否 | None | 位置或关键字。可选(size_bytes, sha256)二元组;文件大小与哈希都必须与登记值相同。 |
identity |
tuple[int, int, int, int] | None | 否 | None | 位置或关键字。本次登记的设备号、文件号、大小和mtime_ns;未请求摘要时据此拒绝文件替换或修改。 |
返回说明
大小和可选摘要。
异常说明
IO/内容变化。
本函数直接报告的具体错误:
ResultClosedError:导出文件还有未清理句柄。ResultFormatError:导出文件内容与登记身份不同。ResultFormatError:导出文件超过登记大小。
源码:src/chronaxis/results/artifact_exports.py:75(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.append
登记刚生成目录中有限文件的实际身份。
ArtifactExportStore.append(export_type, scope, interval, *, segment_id=None, completed_files=None)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
export_type |
str | 是 | 无 | 位置或关键字。"signal_csv"是信号CSV,"can_frames"是CAN报文文件;写入导出清单用于分类。 |
scope |
str | 是 | 无 | 位置或关键字。"session"表示整个会话,"segments"表示窗口产生的单个片段。 |
interval |
Interval | 是 | 无 | 位置或关键字。实际导出的左闭右开Interval;无观测时可为None。 |
segment_id |
str | None | 否 | None | 仅关键字。本导出所属的片段ID;导出整个会话时填写None。 |
completed_files |
Sequence[dict] | None | 否 | None | 仅关键字。同次writer交出的文件名、字节数和可选摘要;None沿原登记路径取得事实,不能传外部伪造的证明。 |
返回说明
返回None,不返回额外的计算值。
异常说明
文件/索引错。
本函数直接报告的具体错误:
ValueError:导出种类或范围错误。ValueError:导出缺完成清单。ValueError:导出目录仅接受至多16个普通文件。
源码:src/chronaxis/results/artifact_exports.py:116(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.seal
结束目录索引的写入;之后才能把导出文件交给结果对象管理。
ArtifactExportStore.seal()参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
状态/排序IO错。
源码:src/chronaxis/results/artifact_exports.py:151(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.copy_to
逐目录复制到新发布位置,按请求在同次读取核摘要。
ArtifactExportStore.copy_to(destination)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
destination |
pathlib.Path | 是 | 无 | 位置或关键字。新的发布目录;复制已经生成的文件并核对摘要,不再读取或解码原始日志。 |
返回说明
exports.jsonl路径。
异常说明
IO/完整性错。
本函数直接报告的具体错误:
ResultClosedError:导出索引未封口或有发布资源待恢复。ResultFormatError:导出索引数量不符。ResultFormatError:导出索引序号不连续。ResultFormatError:导出索引目录错误。ResultFormatError:导出索引包含不安全文件名。
源码:src/chronaxis/results/artifact_exports.py:156(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.recover_copy
关闭失败发布句柄,可重新发布到另一新目录。
ArtifactExportStore.recover_copy()参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
实际close错可重试。
源码:src/chronaxis/results/artifact_exports.py:201(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
ArtifactExportStore.close
真实关闭索引及IO后释放自己的费用,保留磁盘。
ArtifactExportStore.close()参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
原close错。
源码:src/chronaxis/results/artifact_exports.py:211(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
内部匿名回调
第146行匿名函数
lambda f: f['name']| 参数 | 含义 | 返回/异常 |
|---|---|---|
f |
参数按上方签名传入;具体调用语义尚待补充。 | 返回值由上方表达式决定;具体用途和异常尚待核对,不据模板推断。 |