Chronaxis用户手册English
本页目录相关类型对象导航DerivedDefinition属性与数据字段DerivedDefinition.__post_init__ExprNode属性与数据字段CompiledExpression属性与数据字段StaticExpression属性与数据字段contains_host_call参数返回说明异常说明_node参数返回说明异常说明_SyntaxCompiler_SyntaxCompiler.__init___SyntaxCompiler._error_SyntaxCompiler.parse_SyntaxCompiler._final_unit_SyntaxCompiler._name_SyntaxCompiler._context_SyntaxCompiler._units_SyntaxCompiler._binary_SyntaxCompiler.visitcompile_expression参数返回说明异常说明流程说明validate_expression参数返回说明异常说明边界说明_create_compiler参数返回说明异常说明expression_identity参数返回说明异常说明

chronaxis.core.expression

检查表达式中每个名称、运算、函数、类型和单位。例如voltage * current可以算功率,而battery.current这种属性访问不允许。检查成功后生成执行器可用的表达式对象;不会打开数据文件或运行任意Python代码。全部语法见表达式完整说明。

这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。

相关类型

DeclarationBindings、DecodedBindings、ExtensionRegistry、MessageBindings、MessageDeclarations、PreparedLookup、SignalBindings、SignalDType

对象导航

对象 用途
DerivedDefinition 声明一个由现有信号计算得到的新名称、表达式和结果单位。
DerivedDefinition.__post_init__ 验证派生声明结构,不解析或加载来源。
ExprNode 保存表达式编译器已检查的一个内部节点。
CompiledExpression 保存可供求值器使用的表达式树及其真实输入绑定。
StaticExpression 表达式通过配置检查后得到的对象。它保存语法、类型、单位和依赖名称,但尚未核实实际数据,不能直接交给数值求值器。运行时需要根据实际输入生成CompiledExpression。
contains_host_call 判定子树是否含宿主运行回调,以隔离静态常量参数检查。
_node 从已验证子节点汇总局部依赖及单位状态。
_SyntaxCompiler 在一次编译中检查名称、语法、单位与派生依赖。
_SyntaxCompiler.__init__ 建立当前声明表并校验完整派生输入。
_SyntaxCompiler._error 给出语法位置、拒绝原因与可用别名。
_SyntaxCompiler.parse 解析一个表达式并验证根结果单位/枚举域。
_SyntaxCompiler._final_unit 执行当前版本的根结果单位要求。
_SyntaxCompiler._name 解析真实别名、消息参数或本计划派生,并拒绝环/未知名称。
_SyntaxCompiler._context 把纯数字/enum常量按另一侧明确类型及单位校验。
_SyntaxCompiler._units 按首版表推断单位,裸常量加减/比较采用对方单位。
_SyntaxCompiler._binary 静态编译数值/比较,整数常量比较保留精确边界。
_SyntaxCompiler.visit 逐AST节点执行首版白名单,不递归放行未知语法。
compile_expression 检查表达式及全部派生声明,关联当前真实输入绑定。
validate_expression 只根据来源声明检查表达式,不读取真实输入。
_create_compiler 构造当前编译器,拒绝用参数重解释绑定版本。
expression_identity 共用公开与按需重编译的身份公式,防止版本接线遗漏。
导入与重导出来源(展开)
python
from dataclasses import dataclass, field, replace
from hashlib import sha256
from math import isfinite
from types import MappingProxyType
from .binding import SignalBindings, _identity
from .lookup import PreparedLookup
from .declarations import DeclarationBindings
from .decoded_binding import DecodedBindings
from .message_binding import MessageBindings, MessageDeclarations
from .numeric import INTEGER_BOUNDS, result_dtype
from .types import SignalDType
from .unit_registry import resolve_unit
from .validation import require_identifier, require_text

DerivedDefinition

声明一个由现有信号计算得到的新名称、表达式和结果单位。

name与原信号共用名称空间,需在bindings.derived_names中预先登记。 构造本类只检查文本和名称;表达式编译时才检查单位、依赖和循环引用。 unit省略时由表达式支持的单位关系推导;显式标签不授权猜测物理量纲,未知单位组合仍保留unverified状态, 表示关系未验证。实例不可重新赋值,不保存信号值或运行中的状态。

python
class DerivedDefinition

属性与数据字段

名称 数据类型 必填 省略时的值 用途、取值和效果
name str 是 无 已在bindings.derived_names登记的简单别名。
expr str 是 无 白名单DSL文本,不是任意Python。
unit str | None 否 None 缺省使用表达式已支持的单位关系。

源码:src/chronaxis/core/expression.py:57(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

DerivedDefinition.__post_init__

验证派生声明结构,不解析或加载来源。

python
DerivedDefinition.__post_init__() -> None

参数:无显式参数。

参数说明

无;读取name/expr/unit。

返回说明

None,不改用户声明。

异常说明

TypeError/ValueError为标识符/空文本问题。

返回类型:None。

源码:src/chronaxis/core/expression.py:70(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

ExprNode

保存表达式编译器已检查的一个内部节点。

operator给出注册操作,args保存不可变子节点,dtype和unit说明结果类型与单位。 aliases记录展开后的原信号依赖,运行时只按简单别名取值,不访问属性路径。 constant说明整棵子树只由字面量组成;编译器可据此赋予常量上下文单位和 整数类型,不能借此改变信号本身的类型。unit_status保留单位是否已验证。 节点不保存样本值缓存,解释器的计算结果仅在当前一次求值中保存。

python
class ExprNode

属性与数据字段

名称 数据类型 必填 省略时的值 用途、取值和效果
operator str 是 无 节点执行的操作。const保存常量;name读取信号;add/sub/mul/div分别加、减、乘、除;eq/ne/lt/le/gt/ge分别等于、不等于、小于、小于或等于、大于、大于或等于;and/or/not为且、或、非;abs/neg取绝对值、相反数;isclose按给定容差比较;to_float转成浮点数;int_literal_eq/ne/lt/le/gt/ge按精确整数字面量边界作对应的六种比较。节点由编译器生成,普通用户在配置中填写表达式。
dtype SignalDType 是 无 SignalDType枚举成员:INT64是有符号64位整数,UINT64是无符号64位整数,FLOAT64是双精度浮点,BOOL是真/假,ENUM是预先声明的状态标签。这里传枚举成员,不传字符串;当前运算支持哪些类型仍见本对象的约束。
unit str 是 无 结果单位标签。
unit_status str 是 无 "verified"表示单位及换算关系已通过程序的单位表检查;"unverified"表示使用未登记的单位文字,程序未验证其物理换算关系。
args tuple 否 () 参与本操作的子节点元组。const和name没有子节点;abs、neg、not、to_float及int_literal_*有一个;算术和普通比较有两个;and/or可有多个;isclose按a、b、atol、rtol顺序有四个。
value int | float | bool | str | tuple[int | float, int | float] | PreparedLookup | None 否 None 纯常量或精确比较边界。 None用于非恒定值节点;实际常量保存在此字段。
name str | None 否 None name仅简单已绑定别名。 None用于不是信号引用的节点;信号节点保存简单别名。
labels tuple[str, ...] 否 () enum逻辑域。
aliases tuple[str, ...] 否 () 本节点实际依赖的原信号别名元组;派生信号会展开到它依赖的原信号。没有信号依赖时为空元组。
constant bool 否 False 纯常量静态上下文标志。
allow_float_literal bool 否 False 编译器已检查是否可以让浮点字面量参与当前运算。True表示可以,False表示不能走这条转换路径;普通用户不通过修改此字段放宽类型检查。
conversion_promoted bool 否 False 编译时类型提升依据,不影响最终数值节点等价。
unit_explicit bool 否 False 编译时目标尺度;运行身份由实际转换节点确定。
typed_constant bool 否 False 带单位纯常量只适配dtype,不继承别的单位。
host_function FunctionSpec | None 否 None 宿主逐点调用编译出的函数契约,保存输出规范、回调及实现身份。普通表达式节点省略。

源码:src/chronaxis/core/expression.py:87(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

CompiledExpression

保存可供求值器使用的表达式树及其真实输入绑定。

root已检查语法、类型与单位;dependencies只包含展开后的原信号别名。 identity关联绑定、派生定义、规范语法树和编译版本。改变会话、字段映射、 有效期或转换声明都会影响身份,解释器要求调用时bindings与编译时一致。 实例不可重新赋值,没有全局执行缓存;创建本对象并不执行数值计算。

python
class CompiledExpression

属性与数据字段

名称 数据类型 必填 省略时的值 用途、取值和效果
text str 是 无 原表达式仅供定位,不动态执行。
bindings SignalBindings | DecodedBindings | MessageBindings 是 无 各自真实输入域的运行身份。
root ExprNode 是 无 实际白名单带有明确类型的树。
dependencies tuple[str, ...] 是 无 实际需要的已解码信号列。
normalized_ast str 是 无 不含位置的AST规范结构。
identity str 是 无 完整执行身份SHA。

源码:src/chronaxis/core/expression.py:115(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

StaticExpression

表达式通过配置检查后得到的对象。它保存语法、类型、单位和依赖名称,但尚未核实实际数据,不能直接交给数值求值器。运行时需要根据实际输入生成CompiledExpression。

python
class StaticExpression

属性与数据字段

名称 数据类型 必填 省略时的值 用途、取值和效果
text str 是 无 原DSL,仅用于定位。
bindings DeclarationBindings | MessageDeclarations 是 无 声明身份,没有实际读入证明。
root ExprNode 是 无 白名单类型/单位已经校验。
dependencies tuple[str, ...] 是 无 展开后的原信号依赖。
normalized_ast str 是 无 规范语法,仅供静态身份。
identity str 是 无 独立静态版本前缀的SHA。

源码:src/chronaxis/core/expression.py:133(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

contains_host_call

判定子树是否含宿主运行回调,以隔离静态常量参数检查。

python
contains_host_call(root)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
root ExprNode 是 无 位置或关键字。静态常量参数的候选子树;若含宿主调用,不在编译阶段运行该回调。

返回说明

bool。

异常说明

内部不合法树传播属性错误。

源码:src/chronaxis/core/expression.py:148(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_node

从已验证子节点汇总局部依赖及单位状态。

python
_node(operator, dtype, unit, args=(), **kwargs) -> ExprNode

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
operator str 是 无 位置或关键字。已由编译器确定的节点操作名,与ExprNode.operator使用同一含义。这个辅助函数把已检查的子节点组合起来,不负责接收或验证用户自由输入的操作名。
dtype SignalDType 是 无 位置或关键字。此节点的结果类型,传SignalDType枚举成员;由编译器根据操作及子节点确定。
unit str 是 无 位置或关键字。此节点结果的单位,例如W;由编译器先检查运算关系。
args tuple[ExprNode, ...] 否 () 位置或关键字。按运算顺序排列的子节点。二元运算依次为左、右;isclose依次保存两个待比较值和两项容差。
kwargs dict[str, object] 否 {} 可变关键字。转交ExprNode的额外构造字段,如value、name、labels、allow_float_literal;这些字段的类型和用途见ExprNode。

返回说明

冻结ExprNode;不进行样本计算。

异常说明

内部参数冲突传播,配置由编译器先验证。

返回类型:ExprNode。

源码:src/chronaxis/core/expression.py:164(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler

在一次编译中检查名称、语法、单位与派生依赖。

signals和derived来自当前绑定,不读取数据来源。消息域另有显式参数表, 参数按const执行但保constant=False,不随对方改变单位。nodes仅在本实例 内复用已编译的派生树;visiting记录当前递归路径,用于指出循环依赖。 根表达式的declared_unit可给未知组合提供显式标签,但不证明该量纲正确。 状态不跨编译调用共享,不缓存信号值,也不扩大受限表达式语法。

python
_SyntaxCompiler(bindings, derived)

源码:src/chronaxis/core/expression.py:182(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler.__init__

建立当前声明表并校验完整派生输入。

python
_SyntaxCompiler.__init__(bindings, derived)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
bindings MessageBindings | MessageDeclarations | SignalBindings | DecodedBindings | DeclarationBindings 是 无 位置或关键字。bindings为明确带有明确类型的普通/消息运行绑定或各自静态声明
derived tuple 是 无 位置或关键字。derived为tuple DerivedDefinition,数值执行仍由公开入口的类型门槛控制。

返回说明

None,仅局部解析状态。

异常说明

TypeError/ValueError为类型/缺项/重复/名称空间不一致。

本函数直接报告的具体错误:

  • TypeError:解析需要带有明确类型的真实/声明绑定及tuple DerivedDefinition。
  • ValueError:derived声明与bindings名称不一致或重复。

源码:src/chronaxis/core/expression.py:192(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._error

给出语法位置、拒绝原因与可用别名。

python
_SyntaxCompiler._error(node, message)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。
message str 是 无 位置或关键字。向用户解释配置错误的文字;与node中的行列位置一起组成错误信息。

返回说明

不返回,抛ValueError。

异常说明

ValueError定位行/列,不自动点号改名。

源码:src/chronaxis/core/expression.py:224(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler.parse

解析一个表达式并验证根结果单位/枚举域。

python
_SyntaxCompiler.parse(text, unit=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
text str 是 无 位置或关键字。text为非空DSL
unit str | None 否 None 位置或关键字。unit为可选显式结果单位。

返回说明

带有明确类型的 ExprNode和规范AST。

异常说明

ValueError为语法/白名单/类型/单位/环;不吞I/O异常。

源码:src/chronaxis/core/expression.py:234(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._final_unit

执行当前版本的根结果单位要求。

python
_SyntaxCompiler._final_unit(root, unit, node)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
root ExprNode 是 无 位置或关键字。当前已编译表达式子树的根,包含静态类型、操作和依赖。
unit str | None 是 无 位置或关键字。用户明确要求的输出单位标签,省略时沿用此版本的默认表达式单位规则。
node ast.AST 是 无 位置或关键字。原配置的表达式语法位置,用于报告当前步骤发现的编译错误。

返回说明

已核对未知单位标签的原节点。

异常说明

ValueError为结果与声明单位不一致。

源码:src/chronaxis/core/expression.py:269(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._name

解析真实别名、消息参数或本计划派生,并拒绝环/未知名称。

python
_SyntaxCompiler._name(node)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。

返回说明

已绑定name节点或已编译派生树。

异常说明

ValueError为未知别名/环/派生表达式错误。

源码:src/chronaxis/core/expression.py:281(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._context

把纯数字/enum常量按另一侧明确类型及单位校验。

python
_SyntaxCompiler._context(literal, other, node, *, arithmetic)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
literal ExprNode 是 无 位置或关键字。纯常量子树,用来检查常量在当前比较或运算中的类型和单位。
other ExprNode 是 无 位置或关键字。与常量进行运算的另一棵表达式子树,提供其已知类型和单位。
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。
arithmetic int 是 无 仅关键字。arithmetic 表示算术字面量必须能在目标整数类型表示。

返回说明

合法常量子树;含浮点常量的整型运算保持float路径。

异常说明

ValueError为字面量类型/定宽/枚举域冲突。

源码:src/chronaxis/core/expression.py:326(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._units

按首版表推断单位,裸常量加减/比较采用对方单位。

python
_SyntaxCompiler._units(operator, left, right, node, declared_unit=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
operator str 是 无 位置或关键字。单位推导使用的运算类别:add相加、sub相减、compare比较、mul相乘、div相除。比较类别还用于isclose的两个被比较值。
left ExprNode 是 无 位置或关键字。已经静态检查的左操作数ExprNode。
right ExprNode 是 无 位置或关键字。已经静态检查的右操作数ExprNode。
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。
declared_unit str | None 否 None 位置或关键字。表达式根节点声明的结果单位;None表示未额外提供标签。声明单位不负责自动改变输入数值或把错误量纲改正确。

返回说明

上下文单位子树及输出单位。

异常说明

ValueError为未转换单位或未支持组合。

源码:src/chronaxis/core/expression.py:375(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler._binary

静态编译数值/比较,整数常量比较保留精确边界。

python
_SyntaxCompiler._binary(operator, left, right, node, declared_unit=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
operator str 是 无 位置或关键字。本入口支持add相加、sub相减、mul相乘、div相除,以及eq等于、ne不等于、lt小于、le小于或等于、gt大于、ge大于或等于。填写这些内部名称,不填写符号或任意函数名。
left ExprNode 是 无 位置或关键字。已经静态检查的左操作数ExprNode。
right ExprNode 是 无 位置或关键字。已经静态检查的右操作数ExprNode。
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。
declared_unit str | None 否 None 位置或关键字。表达式根节点声明的结果单位;None表示未额外提供标签。声明单位不负责自动改变输入数值或把错误量纲改正确。

返回说明

带有明确类型的 ExprNode;绝不运行用户代码。

异常说明

ValueError为单位/类型/常量配置错误。

源码:src/chronaxis/core/expression.py:413(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_SyntaxCompiler.visit

逐AST节点执行首版白名单,不递归放行未知语法。

python
_SyntaxCompiler.visit(node, declared_unit=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
node ast.AST 是 无 位置或关键字。当前正在检查的Python表达式语法节点;保留行列位置,出错时可指出原表达式的具体位置。支持的语法见表达式。
declared_unit str | None 否 None 位置或关键字。表达式根节点声明的结果单位;None表示未额外提供标签。声明单位不负责自动改变输入数值或把错误量纲改正确。

返回说明

完整带有明确类型的内部节点。

异常说明

ValueError定位未注册语法/函数/类型/单位。

源码:src/chronaxis/core/expression.py:475(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

compile_expression

检查表达式及全部派生声明,关联当前真实输入绑定。

python
compile_expression(text: str, bindings: SignalBindings | DecodedBindings | MessageBindings, *, derived: tuple[DerivedDefinition, ...]=(), unit: str | None=None, config_version: int | None=None, extensions=None) -> CompiledExpression

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
text str 是 无 位置或关键字。非空文本;bindings为真实SignalBindings、DecodedBindings或MessageBindings。
bindings SignalBindings | DecodedBindings | MessageBindings 是 无 位置或关键字。bindings为真实SignalBindings、DecodedBindings或MessageBindings。 derived: 完整且不可变的DerivedDefinition元组,需与已登记名称一致。 unit: 可选结果单位
derived tuple[DerivedDefinition, ...] 否 () 仅关键字。完整且不可变的DerivedDefinition元组,需与已登记名称一致。
unit str | None 否 None 仅关键字。可选结果单位;兼容登记单位同时转换数值。config_version省略时继承绑定。
config_version int | None 否 None 仅关键字。兼容登记单位同时转换数值。config_version省略时继承绑定。 extensions: 可选的宿主ExtensionRegistry,省略时使用绑定已经关联的注册。
extensions None 否 None 仅关键字。此版本预留的编译参数,必须保持 None,非空对象在编译前被拒绝。

返回说明

CompiledExpression,保存表达式树、实际依赖别名和完整绑定身份。

异常说明

TypeError、ValueError: 输入结构、语法、名称、类型、单位、循环依赖 或多来源同步依据不满足要求。

本函数直接报告的具体错误:

  • TypeError:可执行编译需要真实SignalBindings、DecodedBindings或MessageBindings。

流程说明

每次新建编译状态,先检查所有派生声明,再编译根表达式与同步依赖。 此时不计算数值,也不读取日志或加载DBC;数值精度失败由求值器报告。

返回类型:CompiledExpression。

源码:src/chronaxis/core/expression.py:606(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

validate_expression

只根据来源声明检查表达式,不读取真实输入。

python
validate_expression(text: str, bindings: DeclarationBindings | MessageDeclarations, *, derived: tuple[DerivedDefinition, ...]=(), unit: str | None=None, config_version: int | None=None, extensions=None) -> StaticExpression

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
text str 是 无 位置或关键字。非空表达式文本;bindings为DeclarationBindings或MessageDeclarations。
bindings DeclarationBindings | MessageDeclarations 是 无 位置或关键字。bindings为DeclarationBindings或MessageDeclarations。 derived: 完整DerivedDefinition元组
derived tuple[DerivedDefinition, ...] 否 () 仅关键字。完整DerivedDefinition元组;unit为可选显式结果单位。
unit str | None 否 None 仅关键字。unit为可选显式结果单位。 config_version: 省略时继承绑定
config_version int | None 否 None 仅关键字。省略时继承绑定;extensions为可选宿主注册,不运行回调。
extensions None 否 None 仅关键字。此版本预留的编译参数,必须保持 None,非空对象在编译前被拒绝。

返回说明

StaticExpression,说明名称、语法、类型、单位和同步声明已检查。 该类型不能交给数值解释器执行,也不证明实际字段或数据内容已核实。

异常说明

TypeError、ValueError: 声明结构、语法、名称、单位、循环依赖或同步缺项。

本函数直接报告的具体错误:

  • TypeError:静态校验需要DeclarationBindings或MessageDeclarations。

边界说明

未被根引用的派生表达式也要检查;读取真实输入后需要重新建立运行绑定。

返回类型:StaticExpression。

源码:src/chronaxis/core/expression.py:643(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

_create_compiler

构造当前编译器,拒绝用参数重解释绑定版本。

python
_create_compiler(bindings, derived, *, config_version=None, extensions=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
bindings SignalBindings | DecodedBindings | MessageBindings | DeclarationBindings | MessageDeclarations 是 无 位置或关键字。本次编译所用绑定容器,提供名称、输入类型与单位。运行绑定和纯声明保持各自身份。
derived tuple[DerivedDefinition, ...] 是 无 位置或关键字。参与本次编译的派生定义,包含名称、表达式和可选输出单位。
config_version int | None 否 None 仅关键字。显式版本必须与绑定一致;省略时使用绑定记录的版本。
extensions None 否 None 仅关键字。此版本预留的编译参数,必须保持 None,非空对象在编译前被拒绝。

返回说明

当前任务独享的编译器实例。

异常说明

TypeError/ValueError为版本类型、冲突或尚未支持的扩展对象。

源码:src/chronaxis/core/expression.py:678(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

expression_identity

共用公开与按需重编译的身份公式,防止版本接线遗漏。

python
expression_identity(bindings, root, normalized, derived, *, static=False, extensions=None)

参数

名称 数据类型 必填 省略时的值 用途、取值和效果
bindings SignalBindings | DecodedBindings | MessageBindings | DeclarationBindings | MessageDeclarations 是 无 位置或关键字。本次编译所用绑定容器,提供名称、输入类型与单位。运行绑定和纯声明保持各自身份。
root ExprNode 是 无 位置或关键字。当前已编译表达式子树的根,包含静态类型、操作和依赖。
normalized str 是 无 位置或关键字。解析后的规范 AST 文本,用于生成可复现的表达式身份。
derived tuple[DerivedDefinition, ...] 是 无 位置或关键字。参与本次编译的派生定义,包含名称、表达式和可选输出单位。
static bool 否 False 仅关键字。static区分静态域。
extensions ExtensionRegistry | None 否 None 仅关键字。可执行或静态表达式所用的宿主注册;注册的名称、版本、端口和后端能力摘要参与身份计算。

返回说明

SHA256文本,包含当前单位和函数规则版本。

异常说明

内部类型错误直接传播,不读取文件。

源码:src/chronaxis/core/expression.py:704(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。

Chronaxis 用户手册 · 离线阅读