Expand description
Error handling for Python bindings
Converts Synta errors to Python exceptions.
Because both synta::Error and pyo3::PyErr are defined in foreign crates,
the orphan rule prevents impl From<synta::Error> for PyErr directly.
The local newtype SyntaErr bridges the gap: callers use .map_err(SyntaErr)?
and pyo3’s ? machinery picks up From<SyntaErr> for PyErr.