Entropyk/.agent/workflows/bmad-update-python-bindings.md
Sepehr fa480ed303 feat: implement mass balance validation for Story 7.1
- Added port_mass_flows to Component trait and implements for core components.
- Added System::check_mass_balance and integrated it into the solver.
- Restored connect methods for ExpansionValve, Compressor, and Pipe to fix integration tests.
- Updated Python and C bindings for validation errors.
- Updated sprint status and story documentation.
2026-02-21 23:21:34 +01:00

33 lines
1.8 KiB
Markdown

---
description: Update Python bindings when Rust source changes
---
# Update Python Bindings
This workflow automates the process of updating the PyO3 Python bindings when the underlying Rust core (`crates/components`, `crates/solver`, etc.) changes.
Since the Python bindings use local Cargo workspace dependencies, changes to the Rust core structure (like adding a new struct field to a Component, or changing a method signature) will cause the Python wrapper to fail compilation until the wrapper's `#[pyclass]` and `#[pymethods]` are updated to match.
Follow these steps to migrate and recompile the bindings:
1. **Identify Rust Core Changes:** Review the recent Git history or modifications in the `crates/` directory to identify what component structs, enums, or functions have changed their public API.
2. **Update PyO3 Wrappers:** Modify the corresponding wrapper classes in `bindings/python/src/` (e.g., `components.rs`, `solver.rs`, `types.rs`) to reflect the new API.
- Adjust `#[pyclass]` fields and `#[new]` constructors if struct definitions changed.
- Update `#[pymethods]` if function signatures or return types changed.
3. **Register New Types:** If new components or types were added to the core, create new wrappers for them and register them in the `#[pymodule]` definition in `bindings/python/src/lib.rs`.
// turbo-all
4. **Recompile Bindings:** Run the MATURIN build process.
```bash
cd bindings/python
source .venv/bin/activate
maturin develop --release
```
5. **Run Tests:** Execute the Python test suite to ensure the bindings still work correctly and the API behavior is intact.
```bash
cd bindings/python
source .venv/bin/activate
pytest tests/ -v
```
6. **Fix Errors:** If there are any Rust compilation errors (due to mismatched types) or Python test failures, fix them iteratively.