diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index f3b04285b0d1d7c..fa929d9ce676738 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -6283,7 +6283,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 ```` instead of the +correct defaults for parameters. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index b1d9e74db623cb8..4e624724151b9e6 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 25129b63b256a07..3b0f49004bfe6e2 100644 --- a/Modules/_sqlite/clinic/connection.c.h +++ b/Modules/_sqlite/clinic/connection.c.h @@ -1132,7 +1132,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."); @@ -1924,4 +1924,4 @@ getconfig(PyObject *self, PyObject *arg) #ifndef DESERIALIZE_METHODDEF #define DESERIALIZE_METHODDEF #endif /* !defined(DESERIALIZE_METHODDEF) */ -/*[clinic end generated code: output=072e199b0fc4a271 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=b4a36c348ca2112e input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index c5935dcf80d51a9..96e66c0e89f375b 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1929,7 +1929,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. @@ -1938,7 +1938,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=, /)\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 9ae2f51f758403f..2ed8a35ad39516a 100644 --- a/Objects/clinic/typevarobject.c.h +++ b/Objects/clinic/typevarobject.c.h @@ -688,7 +688,7 @@ typealias_reduce(PyObject *self, PyObject *Py_UNUSED(ignored)) } PyDoc_STRVAR(typealias_new__doc__, -"typealias(name, value, *, type_params=)\n" +"typealias(name, value, *, type_params=())\n" "--\n" "\n" "Create a TypeAliasType."); @@ -757,4 +757,4 @@ typealias_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=9dad71445e079303 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ce509903afdb343e input=a9049054013a1b77]*/ diff --git a/Objects/typevarobject.c b/Objects/typevarobject.c index 66a14cc30fecb87..3cbc471f465f543 100644 --- a/Objects/typevarobject.c +++ b/Objects/typevarobject.c @@ -2084,7 +2084,7 @@ typealias.__new__ as typealias_new name: object(subclass_of="&PyUnicode_Type") value: object * - type_params: object = NULL + type_params: object(c_default="NULL") = () Create a TypeAliasType. [clinic start generated code]*/ @@ -2092,7 +2092,7 @@ Create a TypeAliasType. static PyObject * typealias_new_impl(PyTypeObject *type, PyObject *name, PyObject *value, PyObject *type_params) -/*[clinic end generated code: output=8920ce6bdff86f00 input=df163c34e17e1a35]*/ +/*[clinic end generated code: output=8920ce6bdff86f00 input=8838986b41cae743]*/ { 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 d9e60eb773a88d1..93710abeac724af 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -1192,7 +1192,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. @@ -1203,7 +1203,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=)\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]*/