From 05f7f74248300a928e5fd2b82427bd252a77900c Mon Sep 17 00:00:00 2001 From: Jeaeun Kim <109906379+kyokuping@users.noreply.github.com> Date: Sat, 1 Aug 2026 11:28:00 +0900 Subject: [PATCH] fix(ssl): make Certificate immutable and non-instantiable (#8417) Assisted-by: Codex:gpt-5.6-sol --- Lib/test/test_ssl.py | 1 - crates/stdlib/src/openssl/cert.rs | 5 ++++- crates/stdlib/src/ssl.rs | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 4808da82f..aa1fdb8fb 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -415,7 +415,6 @@ class BasicSocketTests(unittest.TestCase): value = getattr(ssl, name) self.assertGreaterEqual(value, 0, f"ssl.{name}") - @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: TypeError not raised by Certificate def test_ssl_types(self): ssl_types = [ _ssl._SSLContext, diff --git a/crates/stdlib/src/openssl/cert.rs b/crates/stdlib/src/openssl/cert.rs index 7704e51f0..4e42c50f6 100644 --- a/crates/stdlib/src/openssl/cert.rs +++ b/crates/stdlib/src/openssl/cert.rs @@ -67,7 +67,10 @@ pub(crate) mod ssl_cert { } } - #[pyclass(with(Comparable, Hashable, Representable))] + #[pyclass( + flags(IMMUTABLETYPE, DISALLOW_INSTANTIATION), + with(Comparable, Hashable, Representable) + )] impl PySSLCertificate { #[pymethod] fn public_bytes( diff --git a/crates/stdlib/src/ssl.rs b/crates/stdlib/src/ssl.rs index 7e2b4c124..9387df945 100644 --- a/crates/stdlib/src/ssl.rs +++ b/crates/stdlib/src/ssl.rs @@ -5040,7 +5040,10 @@ mod _ssl { } } - #[pyclass(with(Comparable, Hashable, Representable))] + #[pyclass( + flags(IMMUTABLETYPE, DISALLOW_INSTANTIATION), + with(Comparable, Hashable, Representable) + )] impl PySSLCertificate { #[pymethod] fn public_bytes(