Skip to content

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 &lt;obj&gt;_core.h<br/>methods in &lt;obj&gt;_core.c"]
    K --> B["<b>Build &amp; test</b><br/>make · make test<br/>from pkg import Obj"]
    B -. "change the API" .-> A
    G -. "jm status: what is behind" .-> G

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

Documentation & tests

Shipping