Inspect API
本页提供 tarsio.inspect 的参考文档。
可用于理解类型解析结果、字段布局和递归引用结构。
示例代码
from tarsio import Struct, inspect as tinspect, field
class User(Struct):
id: int = field(tag=0)
name: str = field(tag=1)
info = tinspect.struct_info(User)
assert info is not None
assert info.fields[0].name == "id"
核心概念
type_info(tp): 解析任意支持类型,返回带kind的TypeInfo。struct_info(cls): 返回StructInfo,描述字段、tag 与默认值语义。FieldInfo是Field的兼容别名,适合渐进迁移。
注意事项
- 内省 API 面向开发与诊断,不替代业务解码逻辑。
- 不支持的标注会抛
TypeError,建议在启动阶段完成类型预检。 - 递归结构会出现
RefType分支,需要在工具层显式处理。
API 参考
tarsio.inspect
Tarsio 类型内省.
主要用途:
- 在开发阶段对
typing.Annotated字段标注进行静态建模 - 提供
type_info()/struct_info()的返回对象结构(kind分支 + 关联字段)
type_info
将类型标注解析为 Tarsio 的类型内省结果.
| 参数 | 描述 |
|---|---|
tp
|
需要解析的类型标注,支持内置类型(如
类型:
|
| 返回 | 描述 |
|---|---|
TypeInfo
|
解析后的 |
| 引发 | 描述 |
|---|---|
TypeError
|
当类型标注不受支持或包含未支持的前向引用时抛出。 |
源代码位于: python/tarsio/inspect.pyi
struct_info
struct_info(cls: type) -> StructInfo | None
解析 Struct 类并返回字段定义信息.
| 参数 | 描述 |
|---|---|
cls
|
需要解析的
类型:
|
| 返回 | 描述 |
|---|---|
StructInfo | None
|
|
StructInfo | None
|
或该类是未具体化的泛型模板,则返回 |
| 引发 | 描述 |
|---|---|
TypeError
|
当字段缺少 tag、tag 重复、混用整数 tag 与 |
源代码位于: python/tarsio/inspect.pyi
TypeInfo
module-attribute
TypeInfo: TypeAlias = (
IntType
| StrType
| FloatType
| BoolType
| BytesType
| AnyType
| NoneType
| TypedDictType
| NamedTupleType
| DataclassType
| EnumType
| UnionType
| ListType
| TupleType
| VarTupleType
| MapType
| SetType
| OptionalType
| StructType
| RefType
| TarsDictType
)
Type
BasicType
CompoundType
IntType
StrType
FloatType
BoolType
BytesType
AnyType
NoneType
EnumType
Bases: CompoundType
Enum 类型.
编码:取 value 的内层类型映射。
| 属性 | 描述 |
|---|---|
cls |
枚举类型。
类型:
|
value_type |
枚举值的类型内省结果。
类型:
|
UnionType
ListType
Bases: CompoundType
列表类型:list[T].
编码:List(若元素类型为 int 且值为 bytes,则使用 SimpleList)。
| 属性 | 描述 |
|---|---|
item_type |
元素类型。
类型:
|
TupleType
VarTupleType
Bases: CompoundType
元组类型:可变长度、元素类型相同 tuple[T, ...].
编码:List(若元素类型为 int 且值为 bytes,则使用 SimpleList)。
| 属性 | 描述 |
|---|---|
item_type |
元素类型。
类型:
|
MapType
Bases: CompoundType
映射类型:dict[K, V].
编码:Map。
| 属性 | 描述 |
|---|---|
key_type |
键类型。
类型:
|
value_type |
值类型。
类型:
|
SetType
OptionalType
Bases: CompoundType
可选类型:T | None 或 typing.Optional[T].
编码:None 时不写 tag,有值时按内层类型映射。
| 属性 | 描述 |
|---|---|
inner_type |
内层类型。
类型:
|
StructType
Bases: CompoundType
Struct 类型:字段类型为另一个 tarsio.Struct 子类.
编码:StructBegin ... StructEnd。
| 属性 | 描述 |
|---|---|
cls |
Struct 类型。
类型:
|
fields |
字段列表,按 tag 升序。 |