From 76ec852a4652c8022fef08a8a1f630b2679424f8 Mon Sep 17 00:00:00 2001 From: kyokuping Date: Sat, 1 Aug 2026 04:03:51 +0900 Subject: [PATCH] fix(socket): use object repr in deallocation warnings Assisted-by: Codex:gpt-5.6-sol --- Lib/test/test_ssl.py | 1 - crates/stdlib/src/socket.rs | 22 +++++----------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 4808da82f20..a325fb67e90 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -756,7 +756,6 @@ def test_tls_unique_channel_binding(self): with test_wrap_socket(s, server_side=True, certfile=CERTFILE) as ss: self.assertIsNone(ss.get_channel_binding("tls-unique")) - @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: "" not found in "unclosed " def test_dealloc_warn(self): ss = test_wrap_socket(socket.socket(socket.AF_INET)) r = repr(ss) diff --git a/crates/stdlib/src/socket.rs b/crates/stdlib/src/socket.rs index 968399ca782..4f85374b181 100644 --- a/crates/stdlib/src/socket.rs +++ b/crates/stdlib/src/socket.rs @@ -1378,23 +1378,11 @@ mod _socket { fn del(zelf: &Py, vm: &VirtualMachine) -> PyResult<()> { // Emit ResourceWarning if socket is still open if zelf.sock.read().is_some() { - let laddr = if let Ok(sock) = zelf.sock() - && let Ok(addr) = sock.local_addr() - && let Ok(repr) = get_addr_tuple(&addr, vm).repr(vm) - { - format!(", laddr={}", repr.as_wtf8()) - } else { - String::new() - }; - - let msg = format!( - "unclosed ", - zelf.fileno(), - zelf.family.load(), - zelf.kind.load(), - zelf.proto.load(), - laddr - ); + let repr = zelf + .as_object() + .repr(vm) + .unwrap_or_else(|_| vm.ctx.new_str("")); + let msg = format!("unclosed {}", repr.as_wtf8()); let _ = crate::vm::warn::warn( vm.ctx.new_str(msg).into(), Some(vm.ctx.exceptions.resource_warning.to_owned()),