.. versionchanged:: 3.11
Set *threadsafety* dynamically instead of hard-coding it to ``1``.
-.. data:: version
-
- Version number of this module as a :class:`string <str>`.
- 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
- :mod:`!sqlite3`. Today, it carries no meaning or practical value.
-
-.. data:: version_info
-
- Version number of this module as a :class:`tuple` of :class:`integers <int>`.
- 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
- :mod:`!sqlite3`. Today, it carries no meaning or practical value.
-
.. _sqlite3-dbconfig-constants:
.. data:: SQLITE_DBCONFIG_DEFENSIVE
https://www.sqlite.org/c3ref/c_dbconfig_defensive.html
SQLite docs: Database Connection Configuration Options
+.. deprecated-removed:: 3.12 3.14
+ The :data:`!version` and :data:`!version_info` constants.
.. _sqlite3-connection-objects:
* :mod:`sqlite3`:
- * :data:`~sqlite3.version` and :data:`~sqlite3.version_info`.
+ * :data:`!version` and :data:`!version_info`.
* :meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany`
if :ref:`named placeholders <sqlite3-placeholders>` are used and
argparse
--------
-* The *type*, *choices*, and *metavar* parameters
- of :class:`!argparse.BooleanOptionalAction` are removed.
+* Remove the *type*, *choices*, and *metavar* parameters
+ of :class:`!argparse.BooleanOptionalAction`.
They were deprecated since 3.12.
+collections.abc
+---------------
+
+* Remove :class:`!collections.abc.ByteString`. It had previously raised a
+ :exc:`DeprecationWarning` since Python 3.12.
+
+
email
-----
-* The *isdst* parameter has been removed from :func:`email.utils.localtime`.
+* Remove the *isdst* parameter from :func:`email.utils.localtime`.
(Contributed by Hugo van Kemenade in :gh:`118798`.)
+itertools
+---------
+
+* Remove :mod:`itertools` support for copy, deepcopy, and pickle operations.
+ These had previously raised a :exc:`DeprecationWarning` since Python 3.12.
+ (Contributed by Raymond Hettinger in :gh:`101588`.)
+
pathlib
-------
:meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such
arguments are joined onto *other*.
+sqlite3
+-------
+
+* Remove :data:`!version` and :data:`!version_info` from :mod:`sqlite3`.
+ (Contributed by Hugo van Kemenade in :gh:`118924`.)
+
+typing
+------
+
+* Remove :class:`!typing.ByteString`. It had previously raised a
+ :exc:`DeprecationWarning` since Python 3.12.
+
Others
------
It had previously raised a :exc:`DeprecationWarning` since Python 3.9. (Contributed
by Jelle Zijlstra in :gh:`118767`.)
-* :class:`!typing.ByteString` and :class:`!collections.abc.ByteString`
- are removed. They had previously raised a :exc:`DeprecationWarning`
- since Python 3.12.
-
-* :mod:`itertools` support for copy, deepcopy, and pickle operations.
- These had previously raised a :exc:`DeprecationWarning` since Python 3.12.
- (Contributed by Raymond Hettinger in :gh:`101588`.)
-
Porting to Python 3.14
======================
"""
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])
-_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" %
.. nonce: tjfu9L
.. section: Library
-Deprecate :data:`sqlite3.version` and :data:`sqlite3.version_info`.
+Deprecate :data:`!version` and :data:`!version_info`.
..
--- /dev/null
+Remove :data:`!version` and :data:`!version_info` from :mod:`sqlite3`.
+Patch by Hugo van Kemenade.
goto error;
}
- if (PyModule_AddStringConstant(module, "_deprecated_version", PYSQLITE_VERSION) < 0) {
- goto error;
- }
-
if (PyModule_AddStringConstant(module, "sqlite_version", sqlite3_libversion())) {
goto error;
}