From 0377f5c9be55544052976719f597c039178b2940 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 16:20:28 +0000 Subject: [PATCH 1/3] build(deps): bump pyo3 from 0.29.3 to 0.30.1 Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.29.3 to 0.30.1. - [Release notes](https://github.com/pyo3/pyo3/releases) - [Changelog](https://github.com/PyO3/pyo3/blob/v0.30.1/CHANGELOG.md) - [Commits](https://github.com/pyo3/pyo3/compare/v0.29.3...v0.30.1) --- updated-dependencies: - dependency-name: pyo3 dependency-version: 0.30.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a73473e..bd382ab8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1401,9 +1401,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.29.3" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655" +checksum = "229ca13b8a15bb0d1487b81ab975bfcd97513416499a8312011b6036e42e0de4" dependencies = [ "indexmap", "inventory", @@ -1417,18 +1417,18 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.29.3" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb" +checksum = "70130e2b6dd1ee589a8788026a429561ca5c40fa7a2fa7914c2282eddae24700" dependencies = [ "target-lexicon", ] [[package]] name = "pyo3-ffi" -version = "0.29.3" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330" +checksum = "5e7ff73c555c286d212d4ce7e5fbda845a973c4f61bd5f160f5f2c3c2a04d1c4" dependencies = [ "libc", "pyo3-build-config", @@ -1436,26 +1436,26 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.29.3" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6" +checksum = "c46d2e5862c7bb8207e3b639f713dda3c499933444784154c11d013c5a691b60" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] name = "pyo3-macros-backend" -version = "0.29.3" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3" +checksum = "38b89f066f2ae72a2aef52d1537ca2fcd104440ebfadee06e97aa90738a25b9b" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index a7c5fe1c..ea83fda9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ derive-deftly = { version = "1.14.0", default-features = false, features = ["min pingora-runtime = "0.9.0" tokio = { version = "1.53.2", features = ["rt-multi-thread", "sync", "time", "net", "macros"] } tokio-util = { version = "0.7.18", features = ["rt"] } -pyo3 = { version = "0.29.3", features = [ +pyo3 = { version = "0.30.1", features = [ "indexmap", "multiple-pymethods", "extension-module", From 88a3cd9a906c878260f988a0f5bc61b0d0e0db64 Mon Sep 17 00:00:00 2001 From: 0x676e67 Date: Tue, 20 Oct 2026 12:50:35 +0800 Subject: [PATCH 2/3] fix(ci): install NASM without Chocolatey --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34589883..9f4e9cfc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -304,9 +304,10 @@ jobs: python-version: 3.x architecture: ${{ matrix.platform.python-architecture || 'x64' }} - name: Install NASM - run: | - choco install nasm -y - shell: cmd + uses: ilammy/setup-nasm@v1 + with: + version: "2.16.01" + from-source: "false" - name: Build wheels uses: PyO3/maturin-action@v1 with: From 30350308aa94c5c124cfbd93da7e809312224076 Mon Sep 17 00:00:00 2001 From: gngpp Date: Tue, 20 Oct 2026 13:11:25 +0800 Subject: [PATCH 3/3] fix(pyo3): remove deprecated skip_from_py_object --- src/buffer.rs | 2 +- src/client.rs | 6 +++--- src/client/resp/http.rs | 4 ++-- src/client/resp/stream.rs | 2 +- src/header.rs | 4 ++-- src/http.rs | 2 +- src/runtime.rs | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/buffer.rs b/src/buffer.rs index 481e6143..7b3d8231 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -25,7 +25,7 @@ use wreq::header::{HeaderCaseName, HeaderName, HeaderValue}; pub struct PyBuffer(BufferView); /// The exporter behind each memoryview; views keep it, and so its bytes, alive. -#[pyclass(frozen, skip_from_py_object)] +#[pyclass(frozen)] struct BufferView(Bytes); // ===== impl PyBuffer ===== diff --git a/src/client.rs b/src/client.rs index 0b9ce475..cc1e2c3e 100644 --- a/src/client.rs +++ b/src/client.rs @@ -41,7 +41,7 @@ use crate::{ /// An IP socket address. #[derive(Clone, Copy, PartialEq, Eq)] -#[pyclass(eq, str, frozen, skip_from_py_object)] +#[pyclass(eq, str, frozen)] pub struct SocketAddr(pub std::net::SocketAddr); #[pymethods] @@ -210,7 +210,7 @@ struct Builder { /// A client for making HTTP requests. /// Unknown keyword arguments raise `TypeError` at call time. #[derive(Clone)] -#[pyclass(subclass, frozen, skip_from_py_object)] +#[pyclass(subclass, frozen)] pub struct Client { inner: wreq::Client, /// Runs this client's requests and response reads, keeping the runtime alive. @@ -228,7 +228,7 @@ pub struct Client { /// A blocking client for making HTTP requests. /// Unknown keyword arguments raise `TypeError` when the function is called. #[derive(Default)] -#[pyclass(name = "Client", subclass, frozen, skip_from_py_object)] +#[pyclass(name = "Client", subclass, frozen)] pub struct BlockingClient(Client); // ===== impl Client ===== diff --git a/src/client/resp/http.rs b/src/client/resp/http.rs index 7b5e1cd5..1796f8e5 100644 --- a/src/client/resp/http.rs +++ b/src/client/resp/http.rs @@ -32,7 +32,7 @@ use crate::{ /// Reads take the body with [`Response::take_bytes`]: a buffered body of known length up to /// the read's limit finishes on the caller, the event loop or a blocking thread, and any other /// body is collected on the runtime by [`Response::collect_later`]. -#[pyclass(subclass, frozen, str, skip_from_py_object)] +#[pyclass(subclass, frozen, str)] pub struct Response { uri: Uri, /// Response head; rebuilt responses share its extensions, including the connection's @@ -70,7 +70,7 @@ enum BodyRead { } /// A blocking response from a request. -#[pyclass(name = "Response", subclass, frozen, str, skip_from_py_object)] +#[pyclass(name = "Response", subclass, frozen, str)] pub struct BlockingResponse(Response); /// Forbids connection reuse on drop unless disarmed by taking the parts. Held by diff --git a/src/client/resp/stream.rs b/src/client/resp/stream.rs index a0d1e75b..1b1ca12d 100644 --- a/src/client/resp/stream.rs +++ b/src/client/resp/stream.rs @@ -42,7 +42,7 @@ pub enum Frame { /// /// Sync and async iteration share [`Streamer::next`]; [`Iteration`] picks the ready frames /// the caller reads and the error that ends iteration. -#[pyclass(subclass, frozen, skip_from_py_object)] +#[pyclass(subclass, frozen)] pub struct Streamer { reader: Arc, runtime: Runtime, diff --git a/src/header.rs b/src/header.rs index aecbbf63..efd1db38 100644 --- a/src/header.rs +++ b/src/header.rs @@ -13,12 +13,12 @@ use crate::{ /// An HTTP header map whose names and values are exposed as read-only memoryviews. #[derive(Clone)] -#[pyclass(subclass, str, skip_from_py_object)] +#[pyclass(subclass, str)] pub struct HeaderMap(pub header::HeaderMap); /// An HTTP original header map whose iterator exposes read-only memoryviews. #[derive(Clone)] -#[pyclass(subclass, str, skip_from_py_object)] +#[pyclass(subclass, str)] pub struct OrigHeaderMap(pub header::OrigHeaderMap); // ===== impl HeaderMap ===== diff --git a/src/http.rs b/src/http.rs index af1d09db..572aa113 100644 --- a/src/http.rs +++ b/src/http.rs @@ -28,7 +28,7 @@ define_enum!( /// HTTP status code. #[derive(Clone, Copy)] -#[pyclass(subclass, frozen, str, skip_from_py_object)] +#[pyclass(subclass, frozen, str)] pub struct StatusCode(pub wreq::StatusCode); impl<'a, 'py> FromPyObject<'a, 'py> for StatusCode { diff --git a/src/runtime.rs b/src/runtime.rs index 96d95994..a23a44d9 100644 --- a/src/runtime.rs +++ b/src/runtime.rs @@ -49,7 +49,7 @@ pub enum Scheduler { /// Shared Tokio runtime, released after its clients and active work are dropped. #[derive(Clone)] -#[pyclass(frozen, skip_from_py_object)] +#[pyclass(frozen)] pub struct Runtime { /// Shared owner; `None` only once `Drop` has taken it to shut the runtime down. inner: Option>,