# Python Interface Wrapper: {{ crate_name }}

This crate is the PyO3 wrapper for the generated Rust crate `{{ low_level_crate_name }}`.
It exists so the low-level kernel crate can stay `no_std`-friendly and be used
independently of Python.

Python module name: `{{ module_name }}`

## Layout

- `../{{ low_level_project_dir }}`: low-level Rust crate with the generated kernels
- `src/lib.rs`: PyO3 wrapper that calls into the low-level crate
- `pyproject.toml`: maturin configuration for building the Python module

## Build

```bash
cargo build
```

## Install

From this directory, after activating your Python virtual environment:

```bash
python -m pip install -e .
```

## Python API

{% for codegen in codegens -%}
- `workspace_for_function("{{ codegen.function_name }}")`
- `call("{{ codegen.function_name }}", ...)`
{% endfor %}

Single-output functions return a scalar or list. Multi-output functions return a
dictionary keyed by output name.
