From 747950a735f0ae44f77cda4ea01f5c772ecea59e Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Sat, 27 Sep 2025 09:44:18 +0100 Subject: [PATCH] build against PyO3 0.27 draft --- Cargo.toml | 4 ++++ crates/jiter/src/py_lossless_float.rs | 6 ++++-- crates/jiter/src/py_string_cache.rs | 6 ++++-- crates/jiter/src/python.rs | 8 +++++--- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dc60ea7..9e9b3bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,3 +27,7 @@ debug = true [workspace.dependencies] pyo3 = { version = "0.26" } pyo3-build-config = { version = "0.26" } + +[patch.crates-io] +pyo3 = { git = "https://github.com/pyo3/pyo3.git" } +pyo3-build-config = { git = "https://github.com/pyo3/pyo3.git" } diff --git a/crates/jiter/src/py_lossless_float.rs b/crates/jiter/src/py_lossless_float.rs index 87799f3..65c8d0a 100644 --- a/crates/jiter/src/py_lossless_float.rs +++ b/crates/jiter/src/py_lossless_float.rs @@ -20,8 +20,10 @@ impl Default for FloatMode { const FLOAT_ERROR: &str = "Invalid float mode, should be `'float'`, `'decimal'` or `'lossless-float'`"; -impl<'py> FromPyObject<'py> for FloatMode { - fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult { +impl<'py> FromPyObject<'_, 'py> for FloatMode { + type Error = PyErr; + + fn extract(ob: Borrowed<'_, 'py, PyAny>) -> PyResult { if let Ok(str_mode) = ob.extract::<&str>() { match str_mode { "float" => Ok(Self::Float), diff --git a/crates/jiter/src/py_string_cache.rs b/crates/jiter/src/py_string_cache.rs index 9854ff5..c86e68c 100644 --- a/crates/jiter/src/py_string_cache.rs +++ b/crates/jiter/src/py_string_cache.rs @@ -20,8 +20,10 @@ impl Default for StringCacheMode { } } -impl<'py> FromPyObject<'py> for StringCacheMode { - fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult { +impl<'py> FromPyObject<'_, 'py> for StringCacheMode { + type Error = PyErr; + + fn extract(ob: Borrowed<'_, 'py, PyAny>) -> PyResult { if let Ok(bool_mode) = ob.cast::() { Ok(bool_mode.is_true().into()) } else if let Ok(str_mode) = ob.extract::<&str>() { diff --git a/crates/jiter/src/python.rs b/crates/jiter/src/python.rs index cb2a538..94511c4 100644 --- a/crates/jiter/src/python.rs +++ b/crates/jiter/src/python.rs @@ -43,7 +43,7 @@ impl PythonParse { /// /// # Returns /// - /// A [PyObject](https://docs.rs/pyo3/latest/pyo3/type.PyObject.html) representing the parsed JSON value. + /// A [Py>](https://docs.rs/pyo3/latest/pyo3/typePyy>.html) representing the parsed JSON value. pub fn python_parse<'py>(&self, py: Python<'py>, json_data: &[u8]) -> JsonResult> { macro_rules! ppp { ($string_cache:ident, $key_check:ident, $parse_number:ident) => { @@ -237,8 +237,10 @@ impl FromPyObject<'py> for PartialMode { - fn extract_bound(ob: &Bound<'py, PyAny>) -> PyResult { +impl<'py> FromPyObject<'_, 'py> for PartialMode { + type Error = PyErr; + + fn extract(ob: Borrowed<'_, 'py, PyAny>) -> PyResult { if let Ok(bool_mode) = ob.cast::() { Ok(bool_mode.is_true().into()) } else if let Ok(str_mode) = ob.extract::<&str>() {