]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
removals: all unicode encoding / decoding
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 7 Nov 2021 20:47:15 +0000 (15:47 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 10 Nov 2021 16:24:53 +0000 (11:24 -0500)
commitbd2a6e9b161251606b64d299faec583d55c2e802
treecb9e304b72be61c59709caa792920515afc26c32
parent0c6071513fea9d183dc67979a239dff746992571
removals: all unicode encoding / decoding

Removed here includes:

* convert_unicode parameters
* encoding create_engine() parameter
* description encoding support
* "non-unicode fallback" modes under Python 2
* String symbols regarding Python 2 non-unicode fallbacks
* any concept of DBAPIs that don't accept unicode
  statements, unicode bound parameters, or that return bytes
  for strings anywhere except an explicit Binary / BLOB
  type
* unicode processors in Python / C

Risk factors:

* Whether all DBAPIs do in fact return Unicode objects for
  all entries in cursor.description now
* There was logic for mysql-connector trying to determine
  description encoding.   A quick test shows Unicode coming
  back but it's not clear if there are still edge cases where
  they return bytes.  if so, these are bugs in that driver,
  and at most we would only work around it in the mysql-connector
  DBAPI itself (but we won't do that either).
* It seems like Oracle 8 was not expecting unicode bound parameters.
  I'm assuming this was all Python 2 stuff and does not apply
  for modern cx_Oracle under Python 3.
* third party dialects relying upon built in unicode encoding/decoding
  but it's hard to imagine any non-SQLAlchemy database driver not
  dealing exclusively in Python unicode strings in Python 3

Change-Id: I97d762ef6d4dd836487b714d57d8136d0310f28a
References: #7257
26 files changed:
doc/build/changelog/unreleased_20/7257.rst [new file with mode: 0644]
lib/sqlalchemy/cextension/processors.c
lib/sqlalchemy/connectors/pyodbc.py
lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/dialects/mysql/mysqlconnector.py
lib/sqlalchemy/dialects/mysql/pymysql.py
lib/sqlalchemy/dialects/oracle/base.py
lib/sqlalchemy/dialects/oracle/cx_oracle.py
lib/sqlalchemy/dialects/postgresql/asyncpg.py
lib/sqlalchemy/dialects/postgresql/psycopg2.py
lib/sqlalchemy/dialects/sqlite/base.py
lib/sqlalchemy/engine/create.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/processors.py
lib/sqlalchemy/sql/schema.py
lib/sqlalchemy/sql/sqltypes.py
lib/sqlalchemy/testing/profiling.py
test/aaa_profiling/test_memusage.py
test/dialect/mssql/test_reflection.py
test/dialect/oracle/test_dialect.py
test/dialect/oracle/test_types.py
test/dialect/postgresql/test_dialect.py
test/dialect/postgresql/test_types.py
test/sql/test_defaults.py
test/sql/test_deprecations.py
test/sql/test_types.py