bpo-42264: Deprecate sqlite3.OptimizedUnicode (GH-23163)
This commit is contained in:
parent
296a796951
commit
a1f401a58b
|
@ -360,6 +360,11 @@ Deprecated
|
||||||
as appropriate to help identify code which needs updating during
|
as appropriate to help identify code which needs updating during
|
||||||
this transition.
|
this transition.
|
||||||
|
|
||||||
|
* ``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python
|
||||||
|
3.3, when it was made an alias to :class:`str`. It is now deprecated,
|
||||||
|
scheduled for removal in Python 3.12.
|
||||||
|
(Contributed by Erlend E. Aasland in :issue:`42264`.)
|
||||||
|
|
||||||
|
|
||||||
Removed
|
Removed
|
||||||
=======
|
=======
|
||||||
|
|
|
@ -21,3 +21,17 @@
|
||||||
# 3. This notice may not be removed or altered from any source distribution.
|
# 3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|
||||||
from sqlite3.dbapi2 import *
|
from sqlite3.dbapi2 import *
|
||||||
|
|
||||||
|
|
||||||
|
# bpo-42264: OptimizedUnicode was deprecated in Python 3.10. It's scheduled
|
||||||
|
# for removal in Python 3.12.
|
||||||
|
def __getattr__(name):
|
||||||
|
if name == "OptimizedUnicode":
|
||||||
|
import warnings
|
||||||
|
msg = ("""
|
||||||
|
OptimizedUnicode is deprecated and will be removed in Python 3.12.
|
||||||
|
Since Python 3.3 it has simply been an alias for 'str'.
|
||||||
|
""")
|
||||||
|
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||||||
|
return str
|
||||||
|
raise AttributeError(f"module 'sqlite3' has no attribute '{name}'")
|
||||||
|
|
|
@ -254,9 +254,10 @@ class TextFactoryTests(unittest.TestCase):
|
||||||
self.assertTrue(row[0].endswith("reich"), "column must contain original data")
|
self.assertTrue(row[0].endswith("reich"), "column must contain original data")
|
||||||
|
|
||||||
def CheckOptimizedUnicode(self):
|
def CheckOptimizedUnicode(self):
|
||||||
# In py3k, str objects are always returned when text_factory
|
# OptimizedUnicode is deprecated as of Python 3.10
|
||||||
# is OptimizedUnicode
|
with self.assertWarns(DeprecationWarning) as cm:
|
||||||
self.con.text_factory = sqlite.OptimizedUnicode
|
self.con.text_factory = sqlite.OptimizedUnicode
|
||||||
|
self.assertIn("factory.py", cm.filename)
|
||||||
austria = "Österreich"
|
austria = "Österreich"
|
||||||
germany = "Deutchland"
|
germany = "Deutchland"
|
||||||
a_row = self.con.execute("select ?", (austria,)).fetchone()
|
a_row = self.con.execute("select ?", (austria,)).fetchone()
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python
|
||||||
|
3.3, when it was made an alias to :class:`str`. It is now deprecated,
|
||||||
|
scheduled for removal in Python 3.12.
|
|
@ -412,15 +412,6 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
|
||||||
ADD_EXCEPTION(module, "DataError", pysqlite_DataError, pysqlite_DatabaseError);
|
ADD_EXCEPTION(module, "DataError", pysqlite_DataError, pysqlite_DatabaseError);
|
||||||
ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError, pysqlite_DatabaseError);
|
ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError, pysqlite_DatabaseError);
|
||||||
|
|
||||||
/* In Python 2.x, setting Connection.text_factory to
|
|
||||||
OptimizedUnicode caused Unicode objects to be returned for
|
|
||||||
non-ASCII data and bytestrings to be returned for ASCII data.
|
|
||||||
Now OptimizedUnicode is an alias for str, so it has no
|
|
||||||
effect. */
|
|
||||||
if (PyModule_AddObjectRef(module, "OptimizedUnicode", (PyObject*)&PyUnicode_Type) < 0) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set integer constants */
|
/* Set integer constants */
|
||||||
if (add_integer_constants(module) < 0) {
|
if (add_integer_constants(module) < 0) {
|
||||||
goto error;
|
goto error;
|
||||||
|
|
Loading…
Reference in New Issue