From d71c73728a77a0235bf19457e1ba90ef74b10c72 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Tue, 30 Apr 2024 15:18:32 +0200 Subject: [PATCH 1/2] gh-118406: Add signature for sqlite3.Connection objects --- Lib/test/test_sqlite3/test_dbapi.py | 5 +++++ .../Library/2024-04-30-15-18-19.gh-issue-118406.y-GnMo.rst | 1 + Modules/_sqlite/connection.c | 7 +++++++ 3 files changed, 13 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2024-04-30-15-18-19.gh-issue-118406.y-GnMo.rst diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index 6d8744ca5f7969..51ce095df41fc1 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -590,6 +590,11 @@ def test_connection_resource_warning(self): del cx gc_collect() + def test_connection_signature(self): + from inspect import signature + sig = signature(self.cx) + self.assertEqual(str(sig), "(sql, /)") + class UninitialisedConnectionTests(unittest.TestCase): def setUp(self): diff --git a/Misc/NEWS.d/next/Library/2024-04-30-15-18-19.gh-issue-118406.y-GnMo.rst b/Misc/NEWS.d/next/Library/2024-04-30-15-18-19.gh-issue-118406.y-GnMo.rst new file mode 100644 index 00000000000000..c60ddf9e00498e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-04-30-15-18-19.gh-issue-118406.y-GnMo.rst @@ -0,0 +1 @@ +Add signature for :class:`sqlite3.Connection` objects. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 74984ca5365743..84c507cb531a96 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -2561,6 +2561,12 @@ set_autocommit(pysqlite_Connection *self, PyObject *val, void *Py_UNUSED(ctx)) return 0; } +static PyObject * +get_sig(pysqlite_Connection *self, void *Py_UNUSED(ctx)) +{ + return PyUnicode_FromString("(sql, /)"); +} + static const char connection_doc[] = PyDoc_STR("SQLite database connection object."); @@ -2570,6 +2576,7 @@ static PyGetSetDef connection_getset[] = { {"total_changes", (getter)pysqlite_connection_get_total_changes, (setter)0}, {"in_transaction", (getter)pysqlite_connection_get_in_transaction, (setter)0}, {"autocommit", (getter)get_autocommit, (setter)set_autocommit}, + {"__text_signature__", (getter)get_sig, (setter)0}, {NULL} }; From 3e75ac6c06f054fc16dfb13c71f5816ebe07d538 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Tue, 30 Apr 2024 21:30:44 +0200 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Serhiy Storchaka --- Modules/_sqlite/connection.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 84c507cb531a96..fc03e4a085c179 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -2562,7 +2562,7 @@ set_autocommit(pysqlite_Connection *self, PyObject *val, void *Py_UNUSED(ctx)) } static PyObject * -get_sig(pysqlite_Connection *self, void *Py_UNUSED(ctx)) +get_sig(PyObject *self, void *Py_UNUSED(ctx)) { return PyUnicode_FromString("(sql, /)"); } @@ -2576,7 +2576,7 @@ static PyGetSetDef connection_getset[] = { {"total_changes", (getter)pysqlite_connection_get_total_changes, (setter)0}, {"in_transaction", (getter)pysqlite_connection_get_in_transaction, (setter)0}, {"autocommit", (getter)get_autocommit, (setter)set_autocommit}, - {"__text_signature__", (getter)get_sig, (setter)0}, + {"__text_signature__", get_sig, (setter)0}, {NULL} };