[Python-checkins] bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567)

pablogsal webhook-mailer at python.org
Sun Jun 20 15:24:36 EDT 2021


https://github.com/python/cpython/commit/7d0a47e1affd0a2f56600f3e9473f55f931595bd
commit: 7d0a47e1affd0a2f56600f3e9473f55f931595bd
branch: main
author: Erlend Egeberg Aasland <erlend.aasland at innova.no>
committer: pablogsal <Pablogsal at gmail.com>
date: 2021-06-20T20:24:32+01:00
summary:

bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567)

files:
M Lib/sqlite3/test/dbapi.py
M Modules/_sqlite/statement.c

diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py
index 2924231245460c..e8bd8c59947cdd 100644
--- a/Lib/sqlite3/test/dbapi.py
+++ b/Lib/sqlite3/test/dbapi.py
@@ -26,6 +26,7 @@
 import threading
 import unittest
 
+from test.support import check_disallow_instantiation
 from test.support.os_helper import TESTFN, unlink
 from test.support import threading_helper
 
@@ -105,6 +106,10 @@ def test_shared_cache_deprecated(self):
                 sqlite.enable_shared_cache(enable)
             self.assertIn("dbapi.py", cm.filename)
 
+    def test_disallow_instantiation(self):
+        cx = sqlite.connect(":memory:")
+        check_disallow_instantiation(self, type(cx("select 1")))
+
 
 class ConnectionTests(unittest.TestCase):
 
diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c
index 3960b21c859435..fcf13809763f3e 100644
--- a/Modules/_sqlite/statement.c
+++ b/Modules/_sqlite/statement.c
@@ -503,7 +503,7 @@ static PyType_Spec stmt_spec = {
     .name = MODULE_NAME ".Statement",
     .basicsize = sizeof(pysqlite_Statement),
     .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-              Py_TPFLAGS_IMMUTABLETYPE),
+              Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION),
     .slots = stmt_slots,
 };
 



More information about the Python-checkins mailing list