Bump pyo3 0.24 -> 0.29 so symclaw-python builds on Python 3.14

The bindings could not build against the installed interpreter, so the
whole workspace had to be checked with --exclude symclaw-python. Two API
changes: PyObject left the prelude (now Py<PyAny>), and #[pyclass] types
implementing Clone must opt in to the FromPyObject derive.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
osobh
2026-09-19 20:01:26 -07:00
co-authored by Claude Opus 5
parent a44207c782
commit a97663e631
3 changed files with 40 additions and 153 deletions
+1 -1
View File
@@ -14,6 +14,6 @@ crate-type = ["cdylib"]
[dependencies]
symclaw-core = { path = "../symclaw-core" }
pyo3 = { version = "0.24", features = ["extension-module"] }
pyo3 = { version = "0.29", features = ["extension-module"] }
num-rational = { workspace = true }
ordered-float = { workspace = true }
+2 -2
View File
@@ -163,7 +163,7 @@ fn py_to_expr(obj: &Bound<'_, PyAny>) -> PyResult<Arc<Expr>> {
// ── PyExpr ───────────────────────────────────────────────────────
/// A Python-facing symbolic expression.
#[pyclass(name = "Expression")]
#[pyclass(name = "Expression", from_py_object)]
#[derive(Clone)]
struct PyExpr {
inner: Arc<Expr>,
@@ -482,7 +482,7 @@ impl PyLimitResult {
/// Create symbol(s). Single name returns Expression, comma-separated returns tuple.
#[pyfunction]
#[pyo3(name = "S")]
fn py_s(py: Python<'_>, names: &str) -> PyResult<PyObject> {
fn py_s(py: Python<'_>, names: &str) -> PyResult<Py<PyAny>> {
let parts: Vec<&str> = names
.split(',')
.map(str::trim)