diff --git a/Cargo.lock b/Cargo.lock
index d82ddd3928b..70aab8897b1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1679,9 +1679,9 @@ dependencies = [
[[package]]
name = "pyo3"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "831e8e819a138c36e212f3af3fd9eeffed6bf1510a805af35b0edee5ffa59433"
+checksum = "7ebb0c0cc0de9678e53be9ccf8a2ab53045e6e3a8be03393ceccc5e7396ccb40"
dependencies = [
"cfg-if",
"indoc",
@@ -1698,9 +1698,9 @@ dependencies = [
[[package]]
name = "pyo3-build-config"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8"
+checksum = "80e3ce69c4ec34476534b490e412b871ba03a82e35604c3dfb95fcb6bfb60c09"
dependencies = [
"once_cell",
"target-lexicon",
@@ -1708,9 +1708,9 @@ dependencies = [
[[package]]
name = "pyo3-ffi"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e97e919d2df92eb88ca80a037969f44e5e70356559654962cbb3316d00300c6"
+checksum = "3b09f311c76b36dfd6dd6f7fa6f9f18e7e46a1c937110d283e80b12ba2468a75"
dependencies = [
"libc",
"pyo3-build-config",
@@ -1718,9 +1718,9 @@ dependencies = [
[[package]]
name = "pyo3-macros"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb57983022ad41f9e683a599f2fd13c3664d7063a3ac5714cae4b7bee7d3f206"
+checksum = "fd4f74086536d1e1deaff99ec0387481fb3325c82e4e48be0e75ab3d3fcb487a"
dependencies = [
"proc-macro2",
"pyo3-macros-backend",
@@ -1730,9 +1730,9 @@ dependencies = [
[[package]]
name = "pyo3-macros-backend"
-version = "0.22.2"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec480c0c51ddec81019531705acac51bcdbeae563557c982aa8263bb96880372"
+checksum = "9e77dfeb76b32bbf069144a5ea0a36176ab59c8db9ce28732d0f06f096bbfbc8"
dependencies = [
"heck",
"proc-macro2",
@@ -2461,9 +2461,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.39.3"
+version = "1.41.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5"
+checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"
dependencies = [
"backtrace",
"bytes",
diff --git a/Cargo.toml b/Cargo.toml
index 9ea22ec1dd9..d5bb17fc60d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,7 @@ members = [
resolver = "2"
[workspace.dependencies]
-pyo3 = { version = "0.22.2", features = ["extension-module", "serde"] }
+pyo3 = { version = "0.23.1", features = ["extension-module", "serde"] }
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "time", "sync", "net", "io-util"] }
tracing = "0.1.40"
tracing-subscriber = "0.3.18"
diff --git a/edb/edgeql-parser/edgeql-parser-python/src/errors.rs b/edb/edgeql-parser/edgeql-parser-python/src/errors.rs
index 268fdf1619d..a62e6b48bd2 100644
--- a/edb/edgeql-parser/edgeql-parser-python/src/errors.rs
+++ b/edb/edgeql-parser/edgeql-parser-python/src/errors.rs
@@ -29,16 +29,17 @@ impl ParserResult {
let mut buf = vec![0u8]; // type and version
bincode::serialize_into(&mut buf, &rv)
.map_err(|e| PyValueError::new_err(format!("Failed to pack: {e}")))?;
- Ok(PyBytes::new_bound(py, buf.as_slice()).into())
+ Ok(PyBytes::new(py, buf.as_slice()).into())
}
}
-pub fn parser_error_into_tuple(py: Python, error: Error) -> PyObject {
+pub fn parser_error_into_tuple(
+ error: &Error,
+) -> (&str, (u64, u64), Option<&String>, Option<&String>) {
(
- error.message,
+ &error.message,
(error.span.start, error.span.end),
- error.hint,
- error.details,
+ error.hint.as_ref(),
+ error.details.as_ref(),
)
- .into_py(py)
}
diff --git a/edb/edgeql-parser/edgeql-parser-python/src/hash.rs b/edb/edgeql-parser/edgeql-parser-python/src/hash.rs
index 9139c0d09f1..f52a2b69170 100644
--- a/edb/edgeql-parser/edgeql-parser-python/src/hash.rs
+++ b/edb/edgeql-parser/edgeql-parser-python/src/hash.rs
@@ -1,4 +1,4 @@
-use std::cell::RefCell;
+use std::sync::RwLock;
use edgeql_parser::hash;
use pyo3::{exceptions::PyRuntimeError, prelude::*, types::PyString};
@@ -7,7 +7,7 @@ use crate::errors::SyntaxError;
#[pyclass]
pub struct Hasher {
- _hasher: RefCell