https://github.com/python/cpython/commit/033dc43bcf299066e34cd4714933c56f3339953c
commit: 033dc43bcf299066e34cd4714933c56f3339953c
branch: main
author: Stan Ulbrych <[email protected]>
committer: StanFromIreland <[email protected]>
date: 2026-08-21T10:03:51+01:00
summary:

gh-155952: Fix `<unrepresentable>` Argument Clinic defaults in several 
signatures (#155954)

files:
A Misc/NEWS.d/next/Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst
M Lib/test/test_inspect/test_inspect.py
M Modules/_localemodule.c
M Modules/_sqlite/clinic/connection.c.h
M Modules/_sqlite/connection.c
M Modules/clinic/_localemodule.c.h
M Objects/clinic/typevarobject.c.h
M Objects/typevarobject.c
M Python/_warnings.c
M Python/clinic/_warnings.c.h

diff --git a/Lib/test/test_inspect/test_inspect.py 
b/Lib/test/test_inspect/test_inspect.py
index ff7475447e95a03..c68c643cb97fb45 100644
--- a/Lib/test/test_inspect/test_inspect.py
+++ b/Lib/test/test_inspect/test_inspect.py
@@ -6411,7 +6411,7 @@ def test_typing_module_has_signatures(self):
                 methods_unsupported_signature=methods_unsupported_signature)
 
     def test_warnings_module_has_signatures(self):
-        unsupported_signature = {'warn', 'warn_explicit'}
+        unsupported_signature = {'warn_explicit'}
         self._test_module_has_signatures(warnings, 
unsupported_signature=unsupported_signature)
 
     def test_weakref_module_has_signatures(self):
diff --git 
a/Misc/NEWS.d/next/Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst 
b/Misc/NEWS.d/next/Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst
new file mode 100644
index 000000000000000..92b4a55692ee50a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst
@@ -0,0 +1,3 @@
+Fix the signatures of :meth:`sqlite3.Connection.execute`, :func:`warnings.warn`
+and :func:`locale.setlocale` which rendered ``<unrepresentable>`` instead of 
the
+correct defaults for parameters.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 20783dc00f90d3c..ba8b421c25a47cc 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -126,7 +126,7 @@ check_locale_name_all(const char *locale)
 _locale.setlocale
 
     category: int
-    locale: str(accept={str, NoneType}) = NULL
+    locale: str(accept={str, NoneType}) = None
     /
 
 Activates/queries locale processing.
@@ -134,7 +134,7 @@ Activates/queries locale processing.
 
 static PyObject *
 _locale_setlocale_impl(PyObject *module, int category, const char *locale)
-/*[clinic end generated code: output=a0e777ae5d2ff117 input=dbe18f1d66c57a6a]*/
+/*[clinic end generated code: output=a0e777ae5d2ff117 input=b53449b63407179b]*/
 {
     char *result;
     PyObject *result_object;
diff --git a/Modules/_sqlite/clinic/connection.c.h 
b/Modules/_sqlite/clinic/connection.c.h
index b645bf3464bcea1..2feea0ec97bbcae 100644
--- a/Modules/_sqlite/clinic/connection.c.h
+++ b/Modules/_sqlite/clinic/connection.c.h
@@ -933,7 +933,7 @@ pysqlite_connection_load_extension(PyObject *self, PyObject 
*const *args, Py_ssi
 #endif /* defined(PY_SQLITE_ENABLE_LOAD_EXTENSION) */
 
 PyDoc_STRVAR(pysqlite_connection_execute__doc__,
-"execute($self, sql, parameters=<unrepresentable>, /)\n"
+"execute($self, sql, parameters=(), /)\n"
 "--\n"
 "\n"
 "Executes an SQL statement.");
@@ -1725,4 +1725,4 @@ getconfig(PyObject *self, PyObject *arg)
 #ifndef DESERIALIZE_METHODDEF
     #define DESERIALIZE_METHODDEF
 #endif /* !defined(DESERIALIZE_METHODDEF) */
-/*[clinic end generated code: output=1418b72751ef68fc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=11ccc746e9223121 input=a9049054013a1b77]*/
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index ec47471873f7822..ede996b0598ee77 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -1877,7 +1877,7 @@ pysqlite_connection_call(PyObject *op, PyObject *args, 
PyObject *kwargs)
 _sqlite3.Connection.execute as pysqlite_connection_execute
 
     sql: unicode
-    parameters: object = NULL
+    parameters: object(c_default = 'NULL') = ()
     /
 
 Executes an SQL statement.
@@ -1886,7 +1886,7 @@ Executes an SQL statement.
 static PyObject *
 pysqlite_connection_execute_impl(pysqlite_Connection *self, PyObject *sql,
                                  PyObject *parameters)
-/*[clinic end generated code: output=5be05ae01ee17ee4 input=27aa7792681ddba2]*/
+/*[clinic end generated code: output=5be05ae01ee17ee4 input=847390a17de45cc7]*/
 {
     PyObject* result = 0;
 
diff --git a/Modules/clinic/_localemodule.c.h b/Modules/clinic/_localemodule.c.h
index 5e0880b0d0bb4c0..118946b81474ea1 100644
--- a/Modules/clinic/_localemodule.c.h
+++ b/Modules/clinic/_localemodule.c.h
@@ -5,7 +5,7 @@ preserve
 #include "pycore_modsupport.h"    // _PyArg_CheckPositional()
 
 PyDoc_STRVAR(_locale_setlocale__doc__,
-"setlocale($module, category, locale=<unrepresentable>, /)\n"
+"setlocale($module, category, locale=None, /)\n"
 "--\n"
 "\n"
 "Activates/queries locale processing.");
@@ -595,4 +595,4 @@ _locale_getencoding(PyObject *module, PyObject 
*Py_UNUSED(ignored))
 #ifndef _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
     #define _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
 #endif /* !defined(_LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF) */
-/*[clinic end generated code: output=034a3c219466d207 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=bb987603f9de8824 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/typevarobject.c.h b/Objects/clinic/typevarobject.c.h
index d2f350a3487f08b..95f09faceba0b59 100644
--- a/Objects/clinic/typevarobject.c.h
+++ b/Objects/clinic/typevarobject.c.h
@@ -727,7 +727,7 @@ typealias_reduce(PyObject *self, PyObject 
*Py_UNUSED(ignored))
 }
 
 PyDoc_STRVAR(typealias_new__doc__,
-"typealias(name, value, *, type_params=<unrepresentable>, qualname=None)\n"
+"typealias(name, value, *, type_params=(), qualname=None)\n"
 "--\n"
 "\n"
 "Create a TypeAliasType.");
@@ -803,4 +803,4 @@ typealias_new(PyTypeObject *type, PyObject *args, PyObject 
*kwargs)
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=2e7dd170924d92e5 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=310ab79d0f3a4b5c input=a9049054013a1b77]*/
diff --git a/Objects/typevarobject.c b/Objects/typevarobject.c
index b2c3c79c93ff195..53c350838969616 100644
--- a/Objects/typevarobject.c
+++ b/Objects/typevarobject.c
@@ -2145,7 +2145,7 @@ typealias.__new__ as typealias_new
     name: object(subclass_of="&PyUnicode_Type")
     value: object
     *
-    type_params: object = NULL
+    type_params: object(c_default="NULL") = ()
     qualname: object(c_default="NULL") = None
 
 Create a TypeAliasType.
@@ -2154,7 +2154,7 @@ Create a TypeAliasType.
 static PyObject *
 typealias_new_impl(PyTypeObject *type, PyObject *name, PyObject *value,
                    PyObject *type_params, PyObject *qualname)
-/*[clinic end generated code: output=b7f6d9f1c577cd9c input=cbec290f8c4886ef]*/
+/*[clinic end generated code: output=b7f6d9f1c577cd9c input=6516623275f87b5e]*/
 {
     if (type_params != NULL && !PyTuple_Check(type_params)) {
         PyErr_SetString(PyExc_TypeError, "type_params must be a tuple");
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 33385e86c049ce4..586cec195fac680 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -1156,7 +1156,7 @@ warn as warnings_warn
     source: object = None
       If supplied, the destroyed object which emitted a ResourceWarning
     *
-    skip_file_prefixes: object(type='PyTupleObject *', 
subclass_of='&PyTuple_Type') = NULL
+    skip_file_prefixes: object(type='PyTupleObject *', 
subclass_of='&PyTuple_Type', c_default='NULL') = ()
       An optional tuple of module filename prefixes indicating frames to skip
       during stacklevel computations for stack frame attribution.
 
@@ -1167,7 +1167,7 @@ static PyObject *
 warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
                    Py_ssize_t stacklevel, PyObject *source,
                    PyTupleObject *skip_file_prefixes)
-/*[clinic end generated code: output=a68e0f6906c65f80 input=eb37c6a18bec4ea1]*/
+/*[clinic end generated code: output=a68e0f6906c65f80 input=2b52e8b20f508f51]*/
 {
     category = get_category(message, category);
     if (category == NULL)
diff --git a/Python/clinic/_warnings.c.h b/Python/clinic/_warnings.c.h
index 8bda830ccb924eb..a64418be0a830ba 100644
--- a/Python/clinic/_warnings.c.h
+++ b/Python/clinic/_warnings.c.h
@@ -45,7 +45,7 @@ warnings_release_lock(PyObject *module, PyObject 
*Py_UNUSED(ignored))
 
 PyDoc_STRVAR(warnings_warn__doc__,
 "warn($module, /, message, category=None, stacklevel=1, source=None, *,\n"
-"     skip_file_prefixes=<unrepresentable>)\n"
+"     skip_file_prefixes=())\n"
 "--\n"
 "\n"
 "Issue a warning, or maybe ignore it or raise an exception.\n"
@@ -284,4 +284,4 @@ warnings_filters_mutated_lock_held(PyObject *module, 
PyObject *Py_UNUSED(ignored
 {
     return warnings_filters_mutated_lock_held_impl(module);
 }
-/*[clinic end generated code: output=610ed5764bf40bb5 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=fc026d6a21e12170 input=a9049054013a1b77]*/

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to