chronaxis._control_models
三条内部控制通道的固定模型转换;协议仅接受这里显式列出的构造器。
这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。
相关类型
ASCSpec、BLFSpec、BatchJobResult、CANCSVLayout、CANCSVSpec、CANTextSpec、CSVTimeSpec、ColumnMapping、FrameRebuildRule、Path、SignalDefinition
对象导航
| 对象 | 用途 |
|---|---|
native |
复制控制值为有限JSON树。 |
keys |
核对模型的完整字段集合。 |
extract |
摘取固定模型的明确字段。 |
_scalar |
编码信号无效值标记。 |
_restore_scalar |
恢复信号无效值标记。 |
pack_signal |
展开已冻结信号声明。 |
restore_signal |
恢复明确的信号声明。 |
pack_input |
展开一个CAN文件输入。 |
restore_input |
恢复一个CAN文件输入。 |
pack_source |
展开单次CAN来源。 |
restore_source |
恢复单文件CAN来源。 |
pack_options |
展开CAN读取关键字。 |
restore_options |
恢复CAN读取关键字。 |
pack_frame_context |
展开所需帧重建声明。 |
restore_frame_context |
恢复固定帧重建上下文。 |
pack_result |
展开无活动资源的批量结果。 |
restore_result |
恢复批量任务结果事实。 |
pack_message |
展开固定控制命令的参数。 |
restore_message |
恢复固定命令参数。 |
_object |
核对有限对象字段。 |
_program |
核对已有数值指令形状。 |
check_fast_spec |
核对有限fast文件声明。 |
_check_fast_rows |
检查快速批量总量所用的固定五字段结果。 |
check_message_fields |
核对大消息的固定字段。 |
导入与重导出来源(展开)
from collections.abc import Mapping
from math import isfinite
from pathlib import Pathnative
复制控制值为有限JSON树。
native(value, depth=0)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
None | bool | int | float | str | Mapping[str, Any] | list | tuple | 是 | 无 | 位置或关键字。要复制的原生树;映射键必须是字符串,浮点值必须有限,tuple转换为list,不接受自定义模型。 |
depth |
int | 否 | 0 | 位置或关键字。当前递归层数,入口为0,每经过一层容器加1;超过320时拒绝。 |
返回说明
独立list/dict及原生标量。
异常说明
类型、深度或非有限数错误。
源码:src/chronaxis/_control_models.py:21(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
keys
核对模型的完整字段集合。
keys(data, names)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
data |
dict[str, Any] | 是 | 无 | 位置或关键字。待检查的模型字段字典;字段集合必须与names完全相等,不允许缺项或多项。 |
names |
Sequence[str] | 是 | 无 | 位置或关键字。调用点写定的全部必需字段名,用来比对data的键集合。 |
返回说明
原字典。
异常说明
缺项、多项或非字典时ValueError。
源码:src/chronaxis/_control_models.py:45(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
extract
摘取固定模型的明确字段。
extract(value, names)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
SignalDefinition | ASCSpec | CANCSVLayout | ColumnMapping | CSVTimeSpec | FrameRebuildRule | BatchJobResult | 是 | 无 | 位置或关键字。由调用点选定的固定模型;只读取names列出的属性,不发现任意对象类型。 |
names |
Sequence[str] | 是 | 无 | 位置或关键字。本次需要摘取的属性名序列;返回字典使用同名键,属性缺失时保留AttributeError。 |
返回说明
字段名到原值的dict。
异常说明
缺少已声明属性时AttributeError。
源码:src/chronaxis/_control_models.py:57(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_scalar
编码信号无效值标记。
_scalar(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
None | str | bool | int | float | 是 | 无 | 位置或关键字。信号invalid_values中的一个原生标记;浮点以hex文本保留NaN、Inf和原类型,其他原生值使用value标记。 |
返回说明
二元素列表,分别为固定种类及无损原值。
异常说明
未支持类型时ValueError。
源码:src/chronaxis/_control_models.py:67(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_restore_scalar
恢复信号无效值标记。
_restore_scalar(data)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
data |
list[str | bool | int | None] | 是 | 无 | 位置或关键字。二元素列表:第一项是float或value标记,第二项是浮点hex文本或对应原生标量;不接受额外元素。 |
返回说明
原生标量,保留float与整数区别。
异常说明
种类、数量或浮点文本非法时ValueError。
源码:src/chronaxis/_control_models.py:81(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_signal
展开已冻结信号声明。
pack_signal(signal)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
signal |
SignalDefinition | 是 | 无 | 位置或关键字。已冻结的信号声明;按_SIGNAL写定字段展开,dtype转名称,invalid_values用专用标量标记。 |
返回说明
JSON原生字段字典。
异常说明
模型类型或字段值非法。
源码:src/chronaxis/_control_models.py:97(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_signal
恢复明确的信号声明。
restore_signal(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。包含_SIGNAL全部且仅这些字段的原生字典;dtype名称、枚举对、无效标记等恢复后由SignalDefinition再次核约束。 |
返回说明
SignalDefinition,其派生单位状态由构造重新核对。
异常说明
字段、dtype或模型约束错误。
源码:src/chronaxis/_control_models.py:114(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_input
展开一个CAN文件输入。
pack_input(item)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
item |
ASCSpec | BLFSpec | CANCSVSpec | 是 | 无 | 位置或关键字。一个已确定格式的输入声明;只展开相应固定字段和路径文本,不打开文件。 |
返回说明
固定种类及字段字典的二元素列表。
异常说明
未知输入类型时TypeError。
源码:src/chronaxis/_control_models.py:132(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_input
恢复一个CAN文件输入。
restore_input(data)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
data |
list[Any] | 是 | 无 | 位置或关键字。恰好两项:asc/blf/csv种类标记和该种类的完整字段字典;路径恢复为Path。 |
返回说明
ASCSpec、BLFSpec或CANCSVSpec,不读取输入。
异常说明
种类、字段或原模型约束错误。
源码:src/chronaxis/_control_models.py:157(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_source
展开单次CAN来源。
pack_source(source)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
source |
CANTextSpec | 是 | 无 | 位置或关键字。当前文件任务的CAN来源声明,包含格式输入、DBC路径、通道、时钟和读取政策;不扫描报文。 |
返回说明
原生字段字典,路径按现有文本保留。
异常说明
类型或嵌套模型错误。
源码:src/chronaxis/_control_models.py:190(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_source
恢复单文件CAN来源。
restore_source(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。固定来源字段字典,inputs必须是恰好一份输入的list;恢复CANTextSpec和TimebaseSpec,不读取文件。 |
返回说明
CANTextSpec,不打开DBC或日志。
异常说明
字段、时间类型或输入数量错误。
源码:src/chronaxis/_control_models.py:207(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_options
展开CAN读取关键字。
pack_options(options)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
options |
dict[str, Any] | 是 | 无 | 位置或关键字。键仅接受_OPTIONS登记的CAN读取选项;周期/元数据定位显式展开,ID集合转列表,回调不可传输。 |
返回说明
原生字典,周期定位显式展开,ID集合变列表。
异常说明
回调、未知关键字或未支持值类型错误。
源码:src/chronaxis/_control_models.py:227(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_options
恢复CAN读取关键字。
restore_options(options)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
options |
dict[str, Any] | 是 | 无 | 位置或关键字。来自控制消息的白名单选项;定位字典恢复为LegacyCANField,ID列表恢复为tuple。 |
返回说明
含固定LegacyCANField元组及ID元组的dict。
异常说明
未知选项或非法定位模型错误。
源码:src/chronaxis/_control_models.py:247(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_frame_context
展开所需帧重建声明。
pack_frame_context(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
tuple[tuple[FrameRebuildRule, ...], bool, bool] | None | 是 | 无 | 位置或关键字。None表示无需帧重建;否则依次为重建规则、是否读取周期、是否做完整性记录。 |
返回说明
None或固定三元素列表。
异常说明
非原生字段错误。
源码:src/chronaxis/_control_models.py:267(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_frame_context
恢复固定帧重建上下文。
restore_frame_context(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
list[Any] | None | 是 | 无 | 位置或关键字。None或恰好三项的原生列表:规则字典列表、周期开关、完整性开关;后两项必须为bool。 |
返回说明
None或FrameRebuildRule元组与两个bool。
异常说明
字段、开关或规则校验错误。
源码:src/chronaxis/_control_models.py:280(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_result
展开无活动资源的批量结果。
pack_result(result)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
result |
BatchJobResult | 是 | 无 | 位置或关键字。没有活动recovery句柄的任务结果;仅展开_RESULT事实字段,输出及清单Path改为文本。 |
返回说明
固定原生结果字典。
异常说明
未知类型或仍持恢复句柄时TypeError。
源码:src/chronaxis/_control_models.py:300(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_result
恢复批量任务结果事实。
restore_result(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。完整_RESULT结果字段字典;指定路径恢复为Path,错误链恢复tuple,recovery保持为空。 |
返回说明
BatchJobResult,指定路径字段恢复为Path,恢复对象仍为空。
异常说明
字段或结果模型约束错误。
源码:src/chronaxis/_control_models.py:316(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
pack_message
展开固定控制命令的参数。
pack_message(family, message)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
family |
str | 是 | 无 | 位置或关键字。已选控制通道族,只使用can、fast或batch;决定哪些参数按固定模型展开。 |
message |
tuple[Any, ...] | list[Any] | 是 | 无 | 位置或关键字。首项为已登记命令,其余为该命令参数;此函数返回展开后的参数列表,不含命令名。 |
返回说明
JSON原生参数列表。
异常说明
未支持对象或固定模型错误。
源码:src/chronaxis/_control_models.py:331(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
restore_message
恢复固定命令参数。
restore_message(family, operation, arguments)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
family |
str | 是 | 无 | 位置或关键字。can、fast或batch之一,与已校验控制消息头相同,用于选择固定恢复规则。 |
operation |
str | 是 | 无 | 位置或关键字。该通道登记的命令名;只恢复此命令写定的模型,不按输入类名构造对象。 |
arguments |
list[Any] | 是 | 无 | 位置或关键字。解码后的原生参数列表;按命令核数量及字段,返回时在前面加上operation。 |
返回说明
现有消费者使用的tuple,仅恢复写定模型。
异常说明
数量、类型或模型校验错误。
源码:src/chronaxis/_control_models.py:356(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_object
核对有限对象字段。
_object(value, required, allowed)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。待检查的有限字段对象;函数只核字典类型和键集合,不复制或修改内容。 |
required |
Collection[str] | 是 | 无 | 位置或关键字。该对象不可省略的键集合;必须全部出现在value中。 |
allowed |
Collection[str] | 是 | 无 | 位置或关键字。该对象全部允许的键集合;value不得包含集合外的键。 |
返回说明
None,不改输入。
异常说明
缺项、未知字段或类型错误。
源码:src/chronaxis/_control_models.py:400(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_program
核对已有数值指令形状。
_program(value, depth=0)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。fast已编译的固定数值指令,包含op、dtype及该操作允许的字段;只检查形状,不重编译表达式。 |
depth |
int | 否 | 0 | 位置或关键字。当前指令树递归深度,入口为0;超过128拒绝。 |
返回说明
None,不重新编译文本表达式。
异常说明
未知操作、dtype、参数或深度错误。
源码:src/chronaxis/_control_models.py:411(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
check_fast_spec
核对有限fast文件声明。
check_fast_spec(value)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
value |
dict[str, Any] | 是 | 无 | 位置或关键字。fast单文件原生声明;需path、dbc、channel及非空metrics,其他键和指令按固定白名单核对。 |
返回说明
None,不加载数据库或运行公式。
异常说明
未知字段、缺项或固定指令错误。
源码:src/chronaxis/_control_models.py:443(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_check_fast_rows
检查快速批量总量所用的固定五字段结果。
_check_fast_rows(rows)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
rows |
list[dict[str, str | int | float | None]] | None | 是 | 无 | 位置或关键字。None表示未请求或任务失败;否则每行仅含name、unit、value、status、reason五字段,值需有限或None。 |
返回说明
None;不改数值、名称和顺序,也不限制合法任务的计算项数量。
异常说明
未知字段、类型或结果状态错误。
源码:src/chronaxis/_control_models.py:480(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
check_message_fields
核对大消息的固定字段。
check_message_fields(family, operation, arguments)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
family |
str | 是 | 无 | 位置或关键字。can、fast或batch控制族,选择要核的固定大消息规则。 |
operation |
str | 是 | 无 | 位置或关键字。本族登记命令;fast文件/EOF及batch任务/结果有各自字段约束。 |
arguments |
list[Any] | tuple[Any, ...] | 是 | 无 | 位置或关键字。已通过基础数量检查的命令参数;此处补核计数、固定结果及数值指令,用户分析配置仍交原计划验证。 |
返回说明
None,用户config仍交原AnalysisPlan验证。
异常说明
固定字段、计数、结果状态或指令错误。
源码:src/chronaxis/_control_models.py:503(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。