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
"""
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}")
import collections.abc
from _sqlite3 import *
+from _sqlite3 import _deprecated_version
+
+_deprecated_names = frozenset({"version", "version_info"})
paramstyle = "qmark"
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
# 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}")
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" %
Chris Rebert
Marc Recht
John Redford
+Kalyan Reddy
Terry J. Reedy
Gareth Rees
John Reese
--- /dev/null
+Deprecate :data:`sqlite3.version` and :data:`sqlite3.version_info`.
goto error;
}
- if (PyModule_AddStringConstant(module, "version", PYSQLITE_VERSION) < 0) {
+ if (PyModule_AddStringConstant(module, "_deprecated_version", PYSQLITE_VERSION) < 0) {
goto error;
}