From cbf2e3047b9161a70be60dcaea163d4b8f980e2a Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Thu, 28 Mar 2024 02:50:16 +0000 Subject: [PATCH] update to PyO3 0.21 final (#71) --- Cargo.lock | 12 ++++++------ Cargo.toml | 4 ++-- src/python.rs | 32 ++++++++++++-------------------- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6d1a5e..5052655 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,9 +268,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.21.0-beta.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0c41d899f822e5f39186d6da130a822a0a43edb19992b51bf4ef6cd0b4cfd1" +checksum = "a02a88a17e74cadbc8ce77855e1d6c8ad0ab82901a4a9b5046bd01c1c0bd95cd" dependencies = [ "cfg-if", "libc", @@ -284,9 +284,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.21.0-beta.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5509c2aa78c7e770077e41ba86f806e60dcee812e924ccb2d6fe78c0a0128ce2" +checksum = "a5eb0b6ecba38961f6f4bd6cd5906dfab3cd426ff37b2eed5771006aa31656f1" dependencies = [ "once_cell", "target-lexicon", @@ -294,9 +294,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.21.0-beta.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6bb234a86ed619a661f3bb3c2493aaff9cb937e33e198d17f5f20a15881e155" +checksum = "ba8a6e48a29b5d22e4fdaf132d8ba8d3203ee9f06362d48f244346902a594ec3" dependencies = [ "libc", "pyo3-build-config", diff --git a/Cargo.toml b/Cargo.toml index e9c4bb1..7abb6d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ num-bigint = "0.4.4" num-traits = "0.2.16" ahash = "0.8.0" smallvec = "1.11.0" -pyo3 = { version = "0.21.0-beta.0", default-features=false, features = ["num-bigint"], optional = true } +pyo3 = { version = "0.21.0", default-features=false, features = ["num-bigint"], optional = true } lexical-parse-float = { version = "0.8.5", features = ["format"] } [features] @@ -26,7 +26,7 @@ bencher = "0.1.5" paste = "1.0.7" serde_json = {version = "1.0.87", features = ["preserve_order", "arbitrary_precision", "float_roundtrip"]} serde = "1.0.147" -pyo3 = { version = "0.21.0-beta.0", default-features=false, features = ["num-bigint", "auto-initialize"] } +pyo3 = { version = "0.21.0", default-features=false, features = ["num-bigint", "auto-initialize"] } codspeed-bencher-compat = "2.3.1" [profile.bench] diff --git a/src/python.rs b/src/python.rs index 99f6920..4cd7421 100644 --- a/src/python.rs +++ b/src/python.rs @@ -88,28 +88,20 @@ impl<'j> PythonParser<'j> { Ok(StringCache::get_value(py, s.as_str()).into_any()) } Peek::Array => { - let opt_peek_first = match self.parser.array_first() { - Ok(p) => p, - Err(e) => { - if self._allow_partial_err(&e) { - None - } else { - return Err(e); - } - } + let peek_first = match self.parser.array_first() { + Ok(Some(peek)) => peek, + Err(e) if !self._allow_partial_err(&e) => return Err(e), + Ok(None) | Err(_) => return Ok(PyList::empty_bound(py).into_any()), }; - let list = if let Some(peek_first) = opt_peek_first { - let mut vec: SmallVec<[Bound<'_, PyAny>; 8]> = SmallVec::with_capacity(8); - if let Err(e) = self._parse_array::(py, peek_first, &mut vec) { - if !self._allow_partial_err(&e) { - return Err(e); - } + + let mut vec: SmallVec<[Bound<'_, PyAny>; 8]> = SmallVec::with_capacity(8); + if let Err(e) = self._parse_array::(py, peek_first, &mut vec) { + if !self._allow_partial_err(&e) { + return Err(e); } - PyList::new_bound(py, vec) - } else { - PyList::empty_bound(py) - }; - Ok(list.into_any()) + } + + Ok(PyList::new_bound(py, vec).into_any()) } Peek::Object => { let dict = PyDict::new_bound(py);