From 5a7fd421386d18b769e7a9f0c3a15b9f3690bff0 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Mon, 17 Aug 2026 11:28:53 +0100 Subject: [PATCH] Fix `` Argument Clinic defaults in several signatures --- Lib/test/test_inspect/test_inspect.py | 2 +- .../Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst | 3 +++ Modules/_localemodule.c | 4 ++-- Modules/_sqlite/clinic/connection.c.h | 4 ++-- Modules/_sqlite/connection.c | 4 ++-- Modules/clinic/_localemodule.c.h | 4 ++-- Objects/clinic/typevarobject.c.h | 4 ++-- Objects/typevarobject.c | 4 ++-- Python/_warnings.c | 4 ++-- Python/clinic/_warnings.c.h | 4 ++-- 10 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-08-17-12-40-00.gh-issue-155952.Vq3Lm8.rst diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index ff7475447e95a0..c68c643cb97fb4 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 00000000000000..92b4a55692ee50 --- /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 ```` instead of the +correct defaults for parameters. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 20783dc00f90d3..ba8b421c25a47c 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 b645bf3464bcea..2feea0ec97bbca 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=, /)\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 892740b05e55c9..3a628929cac738 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1872,7 +1872,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. @@ -1881,7 +1881,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 5e0880b0d0bb4c..118946b81474ea 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=, /)\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 d2f350a3487f08..95f09faceba0b5 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=, 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 b2c3c79c93ff19..53c35083896961 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 992c3e50f2a9f6..49cd22032fa3fa 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 8bda830ccb924e..a64418be0a830b 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=)\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]*/