mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	bpo-42264: Deprecate sqlite3.OptimizedUnicode (GH-23163)
This commit is contained in:
		
							parent
							
								
									296a796951
								
							
						
					
					
						commit
						a1f401a58b
					
				
					 5 changed files with 26 additions and 12 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue