# Python Bindings

## Autogenerated Doc-Strings

Doc-strings for the python API wrapper are generated by gen_docs.py
The script is run automatically during the build to keep python
doc strings fully up-to-date with c++ sources.

It scrapes documentation comments and c++ function signatures
from the manifold c++ sources, in order to generate a c++ header file 
exposing the comments as string variables named by function names.
This allows python bindings to re-use the c++ comments directly.

Some snake-casing of params is applied for python use case.

---

When modifying the Manifold C++ sources, you may need to update
gen_docs.py. For example, top-level free functions are white-listed,
so if you add a new one, you will need to add it in gen_docs.py.

Similarly, the list of source files to parse is also white listed,
so if you define functions in new files that need python wrappers,
you will also need to up gen_docs.py.

To verify that python docs are correct after changes, you can
run the following commends from the manifold repo root:
```
pip install .
python -c 'import manifold3d; help(manifold3d)'
```

Alternatively you could generate stubs with nanobind python module
```
pip install -m nanobind
python -m nanobind.stubgen -m manifold3d -o manifold3d.pyi -i=. -p=bindings/python/stub_pattern.txt
```
It will emit some warnings and write a file `manifold3d.pyi`
which will show all the function signatures and docstrings.
