summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/sqlite3.rst10
-rw-r--r--Lib/sqlite3/__init__.py13
-rw-r--r--Lib/sqlite3/dbapi2.py14
-rw-r--r--Lib/test/test_sqlite3/test_dbapi.py11
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS.d/next/Library/2022-06-03-22-13-28.gh-issue-93370.tjfu9L.rst1
-rw-r--r--Modules/_sqlite/module.c2
7 files changed, 50 insertions, 2 deletions
diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 5c62047..140cd94 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -142,12 +142,22 @@ Module functions and constants
The version number of this module, as a string. This is not the version of
the SQLite library.
+ .. deprecated-removed:: 3.12 3.14
+ This constant used to reflect the version number of the ``pysqlite``
+ package, a third-party library which used to upstream changes to
+ ``sqlite3``. Today, it carries no meaning or practical value.
+
.. data:: version_info
The version number of this module, as a tuple of integers. This is not the
version of the SQLite library.
+ .. deprecated-removed:: 3.12 3.14
+ This constant used to reflect the version number of the ``pysqlite``
+ package, a third-party library which used to upstream changes to
+ ``sqlite3``. Today, it carries no meaning or practical value.
+
.. data:: sqlite_version
diff --git a/Lib/sqlite3/__init__.py b/Lib/sqlite3/__init__.py
index 34a9c04..927267c 100644
--- a/Lib/sqlite3/__init__.py
+++ b/Lib/sqlite3/__init__.py
@@ -55,3 +55,16 @@ The sqlite3 module is written by Gerhard Häring <gh@ghaering.de>.
"""
from sqlite3.dbapi2 import *
+from sqlite3.dbapi2 import (_deprecated_names,
+ _deprecated_version_info,
+ _deprecated_version)
+
+
+def __getattr__(name):
+ if name in _deprecated_names:
+ from warnings import warn
+
+ warn(f"{name} is deprecated and will be removed in Python 3.14",
+ DeprecationWarning, stacklevel=2)
+ return globals()[f"_deprecated_{name}"]
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py
index 36ce769..3b6d2f7 100644
--- a/Lib/sqlite3/dbapi2.py
+++ b/Lib/sqlite3/dbapi2.py
@@ -25,6 +25,9 @@ import time
import collections.abc
from _sqlite3 import *
+from _sqlite3 import _deprecated_version
+
+_deprecated_names = frozenset({"version", "version_info"})
paramstyle = "qmark"
@@ -45,7 +48,7 @@ def TimeFromTicks(ticks):
def TimestampFromTicks(ticks):
return Timestamp(*time.localtime(ticks)[:6])
-version_info = tuple([int(x) for x in version.split(".")])
+_deprecated_version_info = tuple(map(int, _deprecated_version.split(".")))
sqlite_version_info = tuple([int(x) for x in sqlite_version.split(".")])
Binary = memoryview
@@ -85,3 +88,12 @@ register_adapters_and_converters()
# Clean up namespace
del(register_adapters_and_converters)
+
+def __getattr__(name):
+ if name in _deprecated_names:
+ from warnings import warn
+
+ warn(f"{name} is deprecated and will be removed in Python 3.14",
+ DeprecationWarning, stacklevel=2)
+ return globals()[f"_deprecated_{name}"]
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py
index 1fa02db..b958bf1 100644
--- a/Lib/test/test_sqlite3/test_dbapi.py
+++ b/Lib/test/test_sqlite3/test_dbapi.py
@@ -57,6 +57,17 @@ class ModuleTests(unittest.TestCase):
self.assertEqual(sqlite.apilevel, "2.0",
"apilevel is %s, should be 2.0" % sqlite.apilevel)
+ def test_deprecated_version(self):
+ msg = "deprecated and will be removed in Python 3.14"
+ for attr in "version", "version_info":
+ with self.subTest(attr=attr):
+ with self.assertWarnsRegex(DeprecationWarning, msg) as cm:
+ getattr(sqlite, attr)
+ self.assertEqual(cm.filename, __file__)
+ with self.assertWarnsRegex(DeprecationWarning, msg) as cm:
+ getattr(sqlite.dbapi2, attr)
+ self.assertEqual(cm.filename, __file__)
+
def test_thread_safety(self):
self.assertIn(sqlite.threadsafety, {0, 1, 3},
"threadsafety is %d, should be 0, 1 or 3" %
diff --git a/Misc/ACKS b/Misc/ACKS
index 6b5ab49..c3a4f9b 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1456,6 +1456,7 @@ Edward K. Ream
Chris Rebert
Marc Recht
John Redford
+Kalyan Reddy
Terry J. Reedy
Gareth Rees
John Reese
diff --git a/Misc/NEWS.d/next/Library/2022-06-03-22-13-28.gh-issue-93370.tjfu9L.rst b/Misc/NEWS.d/next/Library/2022-06-03-22-13-28.gh-issue-93370.tjfu9L.rst
new file mode 100644
index 0000000..bd53150
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-06-03-22-13-28.gh-issue-93370.tjfu9L.rst
@@ -0,0 +1 @@
+Deprecate :data:`sqlite3.version` and :data:`sqlite3.version_info`.
diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c
index 9b0e921..995d094 100644
--- a/Modules/_sqlite/module.c
+++ b/Modules/_sqlite/module.c
@@ -707,7 +707,7 @@ module_exec(PyObject *module)
goto error;
}
- if (PyModule_AddStringConstant(module, "version", PYSQLITE_VERSION) < 0) {
+ if (PyModule_AddStringConstant(module, "_deprecated_version", PYSQLITE_VERSION) < 0) {
goto error;
}