bpo-24464: Deprecate sqlite3.enable_shared_cache (GH-24008)

This commit is contained in:
Erlend Egeberg Aasland 2021-01-06 01:36:04 +01:00 committed by GitHub
parent f9949f82e1
commit ddb5e11683
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 0 deletions

View file

@ -486,6 +486,14 @@ Deprecated
scheduled for removal in Python 3.12. scheduled for removal in Python 3.12.
(Contributed by Erlend E. Aasland in :issue:`42264`.) (Contributed by Erlend E. Aasland in :issue:`42264`.)
* The undocumented built-in function ``sqlite3.enable_shared_cache`` is now
deprecated, scheduled for removal in Python 3.12. Its use is strongly
discouraged by the SQLite3 documentation. See `the SQLite3 docs
<https://sqlite.org/c3ref/enable_shared_cache.html/>`_ for more details.
If shared cache must be used, open the database in URI mode using the
``cache=shared`` query parameter.
(Contributed by Erlend E. Aasland in :issue:`24464`.)
Removed Removed
======= =======

View file

@ -84,6 +84,20 @@ def register_adapters_and_converters():
register_adapters_and_converters() register_adapters_and_converters()
# bpo-24464: enable_shared_cache was deprecated in Python 3.10. It's
# scheduled for removal in Python 3.12.
def enable_shared_cache(enable):
from _sqlite3 import enable_shared_cache as _old_enable_shared_cache
import warnings
msg = (
"enable_shared_cache is deprecated and will be removed in Python 3.12. "
"Shared cache is strongly discouraged by the SQLite 3 documentation. "
"If shared cache must be used, open the database in URI mode using"
"the cache=shared query parameter."
)
warnings.warn(msg, DeprecationWarning, stacklevel=2)
return _old_enable_shared_cache
# Clean up namespace # Clean up namespace
del(register_adapters_and_converters) del(register_adapters_and_converters)

View file

@ -83,6 +83,13 @@ class ModuleTests(unittest.TestCase):
sqlite.DatabaseError), sqlite.DatabaseError),
"NotSupportedError is not a subclass of DatabaseError") "NotSupportedError is not a subclass of DatabaseError")
def CheckSharedCacheDeprecated(self):
for enable in (True, False):
with self.assertWarns(DeprecationWarning) as cm:
sqlite.enable_shared_cache(enable)
self.assertIn("dbapi.py", cm.filename)
class ConnectionTests(unittest.TestCase): class ConnectionTests(unittest.TestCase):
def setUp(self): def setUp(self):

View file

@ -0,0 +1,3 @@
The undocumented built-in function ``sqlite3.enable_shared_cache`` is now
deprecated, scheduled for removal in Python 3.12. Its use is strongly
discouraged by the SQLite3 documentation. Patch by Erlend E. Aasland.