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]