Faebryk API创建
- 作者仓库星标 3,367
- 许可证 MIT
- 作者仓库 atopile
Faebryk Core Module
The Faebryk core here is the TypeGraph + edge types implemented in Zig and exposed to Python via faebryk.core.faebrykpy.
Source-of-truth for API + behavior:
src/faebryk/core/faebrykpy.py(Python-facing wrapper + type-safeEdgeTrait.traverse)src/faebryk/core/zig/gen/faebryk/typegraph.pyi(public stubbed API surface)src/faebryk/core/zig/src/faebryk/*(Zig implementation)
Quick Start
import faebryk.core.faebrykpy as fbrk
import faebryk.core.graph as graph
g = graph.GraphView.create()
tg = fbrk.TypeGraph.create(g=g)
Relevant Files
src/faebryk/core/faebrykpy.py(re-exports +EdgeTraversal+ type-safeEdgeTrait.traverse)src/faebryk/core/zig/gen/faebryk/typegraph.pyi(TypeGraph stub)- Key edge types (imported by
faebrykpy.py):EdgeComposition(parent/child structure)EdgeTrait/Trait(trait attachment)EdgePointer(references)EdgeInterfaceConnection(interface connections)EdgeOperand(solver operand wiring)EdgeType/EdgeNext(type graph plumbing)
- Linker:
Linker(used by compiler/linking stages)
Dependants (Call Sites)
- FabLL:
src/faebryk/core/node.py(binds Python classes into the TypeGraph; uses composition/trait edges) - Compiler:
src/atopile/compiler/*(creates and links TypeGraphs) - Solver:
src/faebryk/core/solver/*(operand edges and instance traversal) - Build/export pipeline:
src/atopile/build_steps.py(visits type/instance edges for PCB/layout features)
How to Work With / Develop / Test
Core Concepts
- GraphView + TypeGraph: a
TypeGraphis created against aGraphView:import faebryk.core.graph as graph import faebryk.core.faebrykpy as fbrk g = graph.GraphView.create() tg = fbrk.TypeGraph.create(g=g) - Type nodes vs instance nodes:
- TypeGraph stores type definitions (“what exists structurally on a type”)
- GraphView also holds instances created from those types (“a concrete design graph”)
- EdgeTraversal:
TypeGraph.ensure_child_reference(..., path=[...])usesEdgeTraversalitems to walk references through the type graph.
Development Workflow
- Zig-side changes: edit
src/faebryk/core/zig/src/faebryk/*(edges, typegraph internals). - Rebuild bindings:
ato dev compile(importsfaebryk.core.zig). - Python ergonomics: add wrappers/helpers in
src/faebryk/core/faebrykpy.py(example: type-safeEdgeTrait.traverse).
Testing
- TypeGraph-heavy tests live in compiler/runtime suites:
ato dev test --llm test/compiler/test_typegraph.py -qato dev test --llm test/compiler/test_runtime.py -q
- Zig-backed traversal tests:
ato dev test --llm test/core/zig/test_interface_pathfinder.py -q
Best Practices
- Import edges/TypeGraph via
faebryk.core.faebrykpy(so callers get Python helpers, not just raw generated types). - Prefer type-safe trait traversal:
EdgeTrait.traverse(trait_type=SomeTrait)over stringly-typedtrait_type_name=....
- When building reference paths, be explicit about edge semantics (composition vs pointer vs trait) rather than relying on implicit string behavior.
- 流狐分类
- 通用
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 94 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @atopile · MIT
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- macOS · Linux · Windows
- 底层运行要求
- Node.js · Python
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Quick Start
Quick Start
Development Workflow
Zig-side changes: edit src/faebryk/core/zig/src/faebryk/ (edges, typegraph internals). Rebuild bindings: ato dev compile (imports faebryk.core.zig). Python ergonomics: add wrappers/helpers in src/faebryk/core/faebrykpy.py (example: type-safe…
# Faebryk Core Module
The Faebryk core here is the **TypeGraph** + edge types implemented in Zig and exposed to Python via `faebryk.core.faebrykpy`.
Source-of-truth for API + behavior:
- `src/faebryk/core/faebrykpy.py` (Python-facing wrapper + type-safe `EdgeTrait.traverse`)
- `src/faebryk/core/zig/gen/faebryk/typegraph.pyi` (public stubbed API surface)
- `src/faebryk/core/zig/src/faebryk/*` (Zig implementation)
## Quick Start
```python
import faebryk.core.faebrykpy as fbrk
import faebryk.core.graph as graph
g = graph.GraphView.create()
tg = fbrk.TypeGraph.create(g=g)
```
## Relevant Files
- `src/faebryk/core/faebrykpy.py` (re-exports + `EdgeTraversal` + type-safe `EdgeTrait.traverse`)
- `src/faebryk/core/zig/gen/faebryk/typegraph.pyi` (TypeGraph stub)
- Key edge types (imported by `faebrykpy.py`):
- `EdgeComposition` (parent/child structure)
- `EdgeTrait` / `Trait` (trait attachment)
- `EdgePointer` (references)
- `EdgeInterfaceConnection` (interface connections)
- `EdgeOperand` (solver operand wiring)
- `EdgeType` / `EdgeNext` (type graph plumbing)
- Linker:
- `Linker` (used by compiler/linking stages)
## Dependants (Call Sites)
- FabLL: `src/faebryk/core/node.py` (binds Python classes into the TypeGraph; uses composition/trait edges)
- Compiler: `src/atopile/compiler/*` (creates and links TypeGraphs)
- Solver: `src/faebryk/core/solver/*` (operand edges and instance traversal)
- Build/export pipeline: `src/atopile/build_steps.py` (visits type/instance edges for PCB/layout features)
## How to Work With / Develop / Test
### Core Concepts
- **GraphView + TypeGraph**: a `TypeGraph` is created against a `GraphView`:
```python
import faebryk.core.graph as graph
import faebryk.core.faebrykpy as fbrk
g = graph.GraphView.create()
… 证据边界与执行链路
作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> Quick Start → Relevant Files → Dependants (Call Sites) → How to Work With / Develop / Test → Core Concepts → Development Workflow
要点 -> TypeGraph · GraphView + TypeGraph · Type nodes vs instance nodes · EdgeTraversal
文件/命令 -> faebryk.core.faebrykpy · src/faebryk/core/faebrykpy.py · EdgeTrait.traverse · src/faebryk/core/zig/gen/faebryk/typegraph.pyi · src/faebryk/core/zig/src/faebryk/ · EdgeTraversal · faebrykpy.py · EdgeComposition
内容 SHA-256 -> 5e0bc10f7159
方法与流程
适用与边界
原文中的明确线索
faebryk.core.faebrykpy、src/faebryk/core/faebrykpy.py、EdgeTrait.traverse、src/faebryk/core/zig/gen/faebryk/typegraph.pyi、src/faebryk/core/zig/src/faebryk/、EdgeTraversal、faebrykpy.py、EdgeComposition