From 2fd7246e97c8cc09b4e3f22933693f9d68f08163 Mon Sep 17 00:00:00 2001
From: Nikita Sobolev <mail@sobolevn.me>
Date: Wed, 7 Sep 2022 14:13:07 +0300
Subject: [PATCH] gh-96641: Do not expose `KeyWrapper` in `_functoolsmodule.c`
 (gh-96642)

---
 .../2022-09-07-13-38-37.gh-issue-96641.wky0Fc.rst            | 1 +
 Modules/_functoolsmodule.c                                   | 5 ++---
 2 files changed, 3 insertions(+), 3 deletions(-)
 create mode 100644 Misc/NEWS.d/next/Core and Builtins/2022-09-07-13-38-37.gh-issue-96641.wky0Fc.rst

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-09-07-13-38-37.gh-issue-96641.wky0Fc.rst b/Misc/NEWS.d/next/Core and Builtins/2022-09-07-13-38-37.gh-issue-96641.wky0Fc.rst
new file mode 100644
index 00000000000..51faca8716f
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-09-07-13-38-37.gh-issue-96641.wky0Fc.rst	
@@ -0,0 +1 @@
+Do not expose ``KeyWrapper`` in :mod:`_functools`.
diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c
index c6d6ca934e9..3abb7fd710a 100644
--- a/Modules/_functoolsmodule.c
+++ b/Modules/_functoolsmodule.c
@@ -1471,9 +1471,8 @@ _functools_exec(PyObject *module)
     if (state->keyobject_type == NULL) {
         return -1;
     }
-    if (PyModule_AddType(module, state->keyobject_type) < 0) {
-        return -1;
-    }
+    // keyobject_type is used only internally.
+    // So we don't expose it in module namespace.
 
     state->lru_list_elem_type = (PyTypeObject *)PyType_FromModuleAndSpec(
         module, &lru_list_elem_type_spec, NULL);
-- 
GitLab