参与贡献
CadFlow 由公共 Python 前端、C++17 运行时、生成式跨语言契约和大型兼容测试套件组成。贡献应保持收窄的公共边界,并提供与行为变更风险相称的证据。
仓库结构
CadFlow/
├── python/cadflow/ 公共前端与领域 Facade
├── python/cadflow/_engine/ 内置完整 Python 功能层
├── native/ C++ Session、内核、I/O、Runtime 与 Physics
├── scene-contract/ 跨语言 Scene Schema 与验证器
├── skills/ Agent 工作流与 API 参考
├── examples/ 零件、装配、柔性模型与重建
├── docs/ 架构、指南与生成 API 文档
├── agent_dsl/ 可选实验性命令封装
└── tests/ 原生、打包、兼容和工作流测试
开发环境
先完成安装,再安装测试依赖:
python -m pip install -e ".[test]" --no-build-isolation
修改原生后端时:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j2
并行度应与可用内存匹配;OCCT 密集型构建可能消耗较多资源。
运行测试
python -m pytest -q
开发时先运行最相关的测试文件,提交前再运行完整套件:
python -m pytest -q tests/test_native_backend.py
python -m pytest -q tests/compat_suite/test_compat_public_api_surface.py
python -m pytest -q
打包变更还应构建 Wheel:
python -m pip wheel . --no-deps -w dist
遵守所有权边界
- 公共集成使用
import cadflow as cad和公共领域模块。 - Python 前端不得泄漏 OCC 对象或私有 C++ Handle。
c_api.cpp保持为稳定 ABI 入口。- 几何密集型算法属于原生 Kernel。
- 约束、策略、Schema、诊断和元数据可以保留在 Python。
- 迁移兼容行为前应先有特征化测试。
新增或修改公共操作
根据实际情况覆盖完整纵向链路:
- C++ Kernel 实现与验证。
- 稳定 C ABI 入口。
- Python 原生 Binding。
ModelFacade,以及适用时的Graph支持。- 所有权与无效输入测试。
- OCCT 等价或往返证据。
- 用户指南与生成 API 更新。
Pull Request 检查表
- 变更解决一个明确陈述的问题。
- 公共行为与限制均有文档。
- 新代码遵守既有所有权边界。
- 测试覆盖成功、无效输入和相关兼容行为。
- 只有源发生变化时才更新生成文件。
- CAD 示例会验证几何并检查非空输出。
- 应用代码不依赖
cadflow._engine或直接 OCP 对象。 - License 与 OpenCascade Notice 要求保持完整。
大型实现前,请先在 GitHub Issue Tracker 中讨论缺陷或行为提案。