Repository Structure and CI Workflows#
This page explains how the source code is organized and how the
continuous-integration workflows are structured for each component of
yet-another-onnx-builder (yobx).
Overview#
The repository is organized as a set of mostly-independent optional sub-packages
under yobx/. Each sub-package has its own unit-test directory under
unittests/ and typically a dedicated CI workflow.
The table below summarizes the mapping:
Library |
Source |
Tests |
CI Workflows |
|---|---|---|---|
Core / Builder |
|
|
|
scikit-learn (and xgboost, lightgbm) |
|
|
|
PyTorch / Transformers |
|
|
|
TensorFlow |
|
|
|
On top of the per-library workflows there are cross-cutting quality checks that run on every push:
Workflow |
Purpose |
|---|---|
|
Builds and uploads the Python package ( |
|
Builds the Sphinx documentation (triggered by |
|
Static type-checking of the whole |
|
Linting with |
|
Spell-checking of documentation strings with |
|
Experimental type-analysis with |
Core / Builder#
The core of the library lives in several tightly-coupled sub-packages:
yobx/xbuilder/—GraphBuilder, the main API for constructing and optimizing ONNX graphs. See GraphBuilder for a full description.yobx/xoptim/— pattern-based graph optimizer and all optimization patterns (patterns/,patterns_ort/,patterns_ml/,patterns_exp/). See Available Patterns.yobx/xshape/— symbolic shape-expression system used internally byGraphBuilder. See ShapeBuilder.yobx/builder/— lightweight builder helpers and theOnnxScriptGraphBuilderbridge.yobx/container/—ModelContainerfor grouping several ONNX models that share initializers.yobx/helpers/— general ONNX and runtime utilities shared by all sub-packages.yobx/reference/— reference evaluators (onnxruntime,torch).yobx/translate/— translates ONNX graphs back to executable Python.
Tests#
Core tests live directly under unittests/. Each library has its own subfolder
and CI file.