chronaxis.core.declarations
在读取数据之前检查来源、信号和派生名称声明,生成不可变的声明绑定。
输入为来源定位、时基、请求范围、信号定义和同步证据;输出DeclarationBindings 及其SHA-256身份。函数只检查配置关系,不证明文件、DBC字段或实际观测存在, 也不创建虚拟样本。静态表达式检查可使用这些声明;实际解释器仍需包含内存数据 的SignalBindings。本模块只依赖标准库和核心模型,没有文件操作、样本计算、 全局注册或执行计划缓存。
这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。
相关类型
ExtensionRegistry、Interval、LookupTablePlan、SignalDefinition、SynchronizationEvidence、TimeType、TimebaseSpec
对象导航
| 对象 | 用途 |
|---|---|
DeclaredSource |
保存一个尚未读取的来源定位,以及其声明的固定时间映射。 |
DeclaredSource.__post_init__ |
校验声明结构,保持声明身份与实际内容证据保持分开。 |
DeclarationBindings |
冻结一个计划的来源、信号名称和同步关系,供执行前检查使用。 |
DeclarationBindings.__post_init__ |
检查名称、来源和显式同步关系,并生成声明身份。 |
DeclarationBindings.resolve |
定位当前声明中的唯一信号别名。 |
DeclarationBindings.require_synchronized |
按实际联合依赖检查声明的公共时间基准。 |
导入与重导出来源(展开)
from dataclasses import dataclass, field
from hashlib import sha256
from .binding import SignalDefinition, SynchronizationEvidence, _identity
from .unit_conversion import binding_version
from .unit_registry import REGISTRY_VERSION
from .lookup import LookupTablePlan, validate_lookups
from .models import Interval, TimebaseSpec
from .types import TimeType
from .validation import require_identifier, require_text
from ..timebase.conversion import require_int64_nsDeclaredSource
保存一个尚未读取的来源定位,以及其声明的固定时间映射。
input_identity包含规范配置中的路径顺序、格式和处理配置标识,不是文件内容 哈希。offset_ns是整数纳秒偏移;模型不会估计漂移。字段实际存在性由来源执行 接口另行检查,不能凭声明认定数据已读取。全部字段不可变。
class DeclaredSource属性与数据字段
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
name |
str | 是 | 无 | 当前计划来源名。 |
timebase |
TimebaseSpec | 是 | 无 | 原始来源坐标。 |
input_identity |
str | 是 | 无 | 规范声明身份,与实际数据身份分别保存。 |
offset_ns |
int | 否 | 0 | 显式固定偏移,不自动估计漂移。 |
源码:src/chronaxis/core/declarations.py:26(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
DeclaredSource.__post_init__
校验声明结构,保持声明身份与实际内容证据保持分开。
DeclaredSource.__post_init__() -> None参数:无显式参数。
参数说明
无;读取name/timebase/input_identity/offset_ns。
返回说明
None,冻结声明。
异常说明
TypeError/ValueError/TimeOverflowError为配置错误。
本函数直接报告的具体错误:
TypeError:声明来源需要TimebaseSpec。
返回类型:None。
源码:src/chronaxis/core/declarations.py:39(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
DeclarationBindings
冻结一个计划的来源、信号名称和同步关系,供执行前检查使用。
signals与derived_names共用名称空间。identity只证明配置声明;来源路径、 处理配置、转换或有效期变化会改变它。模型不验证文件内容、实际列或DBC 元数据,不能代替执行数据绑定。同步检查只针对当前节点实际使用的来源。
class DeclarationBindings属性与数据字段
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
session_id |
str | 是 | 无 | 当前会话声明。 |
timebase |
TimebaseSpec | 是 | 无 | 计划分析坐标。 |
domain |
Interval | None | 是 | 无 | 用户请求范围;None声明整文件无时间筛选,不表示无观测。 |
sources |
tuple[DeclaredSource, ...] | 是 | 无 | 保留声明原顺序。 |
signals |
tuple[SignalDefinition, ...] | 是 | 无 | 已校验单信号契约。 |
derived_names |
tuple[str, ...] | 否 | () | signals统一名称空间。 |
synchronization |
tuple[SynchronizationEvidence, ...] | 否 | () | 显式核实依据。 |
config_version |
int | None | 否 | None | 缺省继承信号;空声明可指定版本。 |
extensions |
ExtensionRegistry | None | 否 | None | 宿主交给静态声明的不可变注册表,用于解析本计划可见的扩展。 |
lookups |
tuple[LookupTablePlan, ...] | 否 | () | v4命名表,独立于信号来源。 |
temporal_inputs |
tuple[tuple[str, tuple[str, ...]], ...] | 否 | () | 每项由变换名及其物理信号别名元组组成,联合依赖同步检查沿此表还原到采集来源。 |
identity |
str | 不填写 | 构造时计算 | 配置身份,不是执行绑定SHA。 |
源码:src/chronaxis/core/declarations.py:59(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
DeclarationBindings.__post_init__
检查名称、来源和显式同步关系,并生成声明身份。
DeclarationBindings.__post_init__() -> None参数:无显式参数。
参数说明
无;输入均为已经校验的不可变声明模型。
返回说明
None;不读取任何样本、文件或DBC。
异常说明
TypeError/ValueError为结构错误、名称冲突、来源错误或同步关系冲突。
本函数直接报告的具体错误:
TypeError:声明绑定需要带有明确类型的时基/范围与tuple容器。TypeError:声明绑定需要DeclaredSource/SignalDefinition。ValueError:source.name重复。TypeError:同步需要SynchronizationEvidence。ValueError:同步来源重复/未知或目标时基不一致。
返回类型:None。
源码:src/chronaxis/core/declarations.py:80(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
DeclarationBindings.resolve
定位当前声明中的唯一信号别名。
DeclarationBindings.resolve(name: str) -> SignalDefinition参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
name |
str | 是 | 无 | 位置或关键字。name简单别名。 |
返回说明
当前计划SignalDefinition。
异常说明
ValueError为名称非法或未知。
返回类型:SignalDefinition。
源码:src/chronaxis/core/declarations.py:166(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
DeclarationBindings.require_synchronized
按实际联合依赖检查声明的公共时间基准。
DeclarationBindings.require_synchronized(names: tuple[str, ...]) -> None参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
names |
tuple[str, ...] | 是 | 无 | 位置或关键字。names为原信号简单别名tuple。 |
返回说明
None,单来源或公共起点/显式同步依据齐备时通过。
异常说明
TypeError/ValueError为容器、别名或同步缺项。
本函数直接报告的具体错误:
TypeError:联合依赖names必须为tuple。
返回类型:None。
源码:src/chronaxis/core/declarations.py:184(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。