mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-93057: Deprecate positional use of optional sqlite3.connect() params (#107948)
This commit is contained in:
parent
a482e5bf00
commit
13c36dc9ae
9 changed files with 92 additions and 5 deletions
10
Modules/_sqlite/clinic/_sqlite3.connect.c.h
generated
10
Modules/_sqlite/clinic/_sqlite3.connect.c.h
generated
|
@ -18,8 +18,14 @@ PyDoc_STRVAR(pysqlite_connect__doc__,
|
|||
"Open a connection to the SQLite database file \'database\'.\n"
|
||||
"\n"
|
||||
"You can use \":memory:\" to open a database connection to a database that\n"
|
||||
"resides in RAM instead of on disk.");
|
||||
"resides in RAM instead of on disk.\n"
|
||||
"\n"
|
||||
"Note: Passing more than 1 positional argument to _sqlite3.connect() is\n"
|
||||
"deprecated. Parameters \'timeout\', \'detect_types\', \'isolation_level\',\n"
|
||||
"\'check_same_thread\', \'factory\', \'cached_statements\' and \'uri\' will\n"
|
||||
"become keyword-only parameters in Python 3.15.\n"
|
||||
"");
|
||||
|
||||
#define PYSQLITE_CONNECT_METHODDEF \
|
||||
{"connect", _PyCFunction_CAST(pysqlite_connect), METH_FASTCALL|METH_KEYWORDS, pysqlite_connect__doc__},
|
||||
/*[clinic end generated code: output=6a8458c9edf8fb7f input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=8d49736db880f09a input=a9049054013a1b77]*/
|
||||
|
|
35
Modules/_sqlite/clinic/connection.c.h
generated
35
Modules/_sqlite/clinic/connection.c.h
generated
|
@ -59,6 +59,39 @@ pysqlite_connection_init(PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
int uri = 0;
|
||||
enum autocommit_mode autocommit = LEGACY_TRANSACTION_CONTROL;
|
||||
|
||||
// Emit compiler warnings when we get to Python 3.15.
|
||||
#if PY_VERSION_HEX >= 0x030f00C0
|
||||
# error \
|
||||
"In connection.c, update parameter(s) 'timeout', 'detect_types', " \
|
||||
"'isolation_level', 'check_same_thread', 'factory', " \
|
||||
"'cached_statements' and 'uri' in the clinic input of " \
|
||||
"'_sqlite3.Connection.__init__' to be keyword-only."
|
||||
#elif PY_VERSION_HEX >= 0x030f00A0
|
||||
# ifdef _MSC_VER
|
||||
# pragma message ( \
|
||||
"In connection.c, update parameter(s) 'timeout', 'detect_types', " \
|
||||
"'isolation_level', 'check_same_thread', 'factory', " \
|
||||
"'cached_statements' and 'uri' in the clinic input of " \
|
||||
"'_sqlite3.Connection.__init__' to be keyword-only.")
|
||||
# else
|
||||
# warning \
|
||||
"In connection.c, update parameter(s) 'timeout', 'detect_types', " \
|
||||
"'isolation_level', 'check_same_thread', 'factory', " \
|
||||
"'cached_statements' and 'uri' in the clinic input of " \
|
||||
"'_sqlite3.Connection.__init__' to be keyword-only."
|
||||
# endif
|
||||
#endif
|
||||
if (nargs > 1 && nargs <= 8) {
|
||||
if (PyErr_WarnEx(PyExc_DeprecationWarning,
|
||||
"Passing more than 1 positional argument to _sqlite3.Connection()"
|
||||
" is deprecated. Parameters 'timeout', 'detect_types', "
|
||||
"'isolation_level', 'check_same_thread', 'factory', "
|
||||
"'cached_statements' and 'uri' will become keyword-only "
|
||||
"parameters in Python 3.15.", 1))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 8, 0, argsbuf);
|
||||
if (!fastargs) {
|
||||
goto exit;
|
||||
|
@ -1659,4 +1692,4 @@ exit:
|
|||
#ifndef DESERIALIZE_METHODDEF
|
||||
#define DESERIALIZE_METHODDEF
|
||||
#endif /* !defined(DESERIALIZE_METHODDEF) */
|
||||
/*[clinic end generated code: output=d3c6cb9326736ea5 input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=5a05e5294ad9d2ce input=a9049054013a1b77]*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue