gh-118924: Remove `sqlite3.version` and `sqlite3.version_info` (#118925)

This commit is contained in:
Hugo van Kemenade 2024-05-10 23:42:34 +03:00 committed by GitHub
parent b309c8ebff
commit a019347947
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 36 additions and 74 deletions

View File

@ -545,26 +545,6 @@ Module constants
.. versionchanged:: 3.11 .. versionchanged:: 3.11
Set *threadsafety* dynamically instead of hard-coding it to ``1``. 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: .. _sqlite3-dbconfig-constants:
.. data:: SQLITE_DBCONFIG_DEFENSIVE .. data:: SQLITE_DBCONFIG_DEFENSIVE
@ -597,6 +577,8 @@ Module constants
https://www.sqlite.org/c3ref/c_dbconfig_defensive.html https://www.sqlite.org/c3ref/c_dbconfig_defensive.html
SQLite docs: Database Connection Configuration Options SQLite docs: Database Connection Configuration Options
.. deprecated-removed:: 3.12 3.14
The :data:`!version` and :data:`!version_info` constants.
.. _sqlite3-connection-objects: .. _sqlite3-connection-objects:

View File

@ -1636,7 +1636,7 @@ Pending Removal in Python 3.14
* :mod:`sqlite3`: * :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` * :meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany`
if :ref:`named placeholders <sqlite3-placeholders>` are used and if :ref:`named placeholders <sqlite3-placeholders>` are used and

View File

@ -104,16 +104,30 @@ Removed
argparse argparse
-------- --------
* The *type*, *choices*, and *metavar* parameters * Remove the *type*, *choices*, and *metavar* parameters
of :class:`!argparse.BooleanOptionalAction` are removed. of :class:`!argparse.BooleanOptionalAction`.
They were deprecated since 3.12. 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 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`.) (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 pathlib
------- -------
@ -122,6 +136,18 @@ pathlib
:meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such :meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such
arguments are joined onto *other*. 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 Others
------ ------
@ -129,14 +155,6 @@ Others
It had previously raised a :exc:`DeprecationWarning` since Python 3.9. (Contributed It had previously raised a :exc:`DeprecationWarning` since Python 3.9. (Contributed
by Jelle Zijlstra in :gh:`118767`.) 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 Porting to Python 3.14
====================== ======================

View File

@ -55,16 +55,3 @@ The sqlite3 module is written by Gerhard Häring <gh@ghaering.de>.
""" """
from sqlite3.dbapi2 import * 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}")

View File

@ -25,9 +25,6 @@ import time
import collections.abc import collections.abc
from _sqlite3 import * from _sqlite3 import *
from _sqlite3 import _deprecated_version
_deprecated_names = frozenset({"version", "version_info"})
paramstyle = "qmark" paramstyle = "qmark"
@ -48,7 +45,7 @@ def TimeFromTicks(ticks):
def TimestampFromTicks(ticks): def TimestampFromTicks(ticks):
return Timestamp(*time.localtime(ticks)[:6]) 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(".")]) sqlite_version_info = tuple([int(x) for x in sqlite_version.split(".")])
Binary = memoryview Binary = memoryview
@ -97,12 +94,3 @@ register_adapters_and_converters()
# Clean up namespace # Clean up namespace
del(register_adapters_and_converters) 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}")

View File

@ -48,17 +48,6 @@ class ModuleTests(unittest.TestCase):
self.assertEqual(sqlite.apilevel, "2.0", self.assertEqual(sqlite.apilevel, "2.0",
"apilevel is %s, should be 2.0" % sqlite.apilevel) "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): def test_thread_safety(self):
self.assertIn(sqlite.threadsafety, {0, 1, 3}, self.assertIn(sqlite.threadsafety, {0, 1, 3},
"threadsafety is %d, should be 0, 1 or 3" % "threadsafety is %d, should be 0, 1 or 3" %

View File

@ -3498,7 +3498,7 @@ Illia Volochii.
.. nonce: tjfu9L .. nonce: tjfu9L
.. section: Library .. section: Library
Deprecate :data:`sqlite3.version` and :data:`sqlite3.version_info`. Deprecate :data:`!version` and :data:`!version_info`.
.. ..

View File

@ -0,0 +1,2 @@
Remove :data:`!version` and :data:`!version_info` from :mod:`sqlite3`.
Patch by Hugo van Kemenade.

View File

@ -714,10 +714,6 @@ module_exec(PyObject *module)
goto error; goto error;
} }
if (PyModule_AddStringConstant(module, "_deprecated_version", PYSQLITE_VERSION) < 0) {
goto error;
}
if (PyModule_AddStringConstant(module, "sqlite_version", sqlite3_libversion())) { if (PyModule_AddStringConstant(module, "sqlite_version", sqlite3_libversion())) {
goto error; goto error;
} }