Workflows¶
just-makeit generates the C, the Python bindings, the build system, and the tests — you write the algorithm. These pages walk the common paths end to end.
Every path is the same loop:
flowchart LR
A["<b>Describe</b><br/>jm object · method · property …<br/>or edit just-makeit.toml"] --> G["<b>Generate</b><br/>jm apply renders the whole project<br/>and reconciles it by who owns each file"]
G --> K["<b>Implement</b><br/>step() in <obj>_core.h<br/>methods in <obj>_core.c"]
K --> B["<b>Build & test</b><br/>make · make test<br/>from pkg import Obj"]
B -. "change the API" .-> A
G -. "jm status: what is behind" .-> G
- Describe — Configuration and the CLI reference; which verb to reach for is the decision tree.
- Generate — who owns each file, and so what
applydoes to it: the edit lifecycle; every file, tagged: project layout. - Implement — template gallery for the shape of an object; enriching stubs for docstrings from your header.
- Build & test — testing & benchmarking, distribution; keeping a project current as jm moves: upgrading.
Pick your starting point¶
| You're here if… | Start with |
|---|---|
You have one algorithm to wrap and want from my_dsp import Engine with full C and Python tests |
Standalone extension |
You have several independent algorithms and want them in one package, each with its own .so |
Multi-extension package |
You want related types grouped behind one import — from my_filters.filter import Fir, Biquad |
Grouped module types |
Not sure whether an object should be standalone or live in a module? See standalone vs module.
Working with a project¶
- The edit lifecycle — author → apply/regenerate →
implement → test → iterate, plus lifting an existing C body with
--impl. - Project layout & generated API — what jm writes, and the C and Python API it exposes.
Documentation & tests¶
- Type stubs & doctests — the generated
.pyiand its out-of-the-box doctests. - Enriching stubs from your C header — drive rich docstrings and runnable doctests straight from your header's Doxygen.
- Testing & benchmarking — the generated test and benchmark suites, and extending an object's state.
Shipping¶
- Distribution & configuration — install the C library for
downstream consumers, and the
just-makeit.tomlreference.