]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Disable "check unicode returns" under Python 3
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 7 May 2020 14:53:15 +0000 (10:53 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 19 May 2020 17:53:39 +0000 (13:53 -0400)
commitaf0e59ff16a2a02ec5dc1195212236e63fd941a7
tree56f7034af983dec3415fd29b398dd7b0a5218f88
parent53af60b3536221f2503af29c1e90cf9db1295faf
Disable "check unicode returns" under Python 3

Disabled the "unicode returns" check that runs on dialect startup when
running under Python 3, which for many years has occurred in order to test
the current DBAPI's behavior for whether or not it returns Python Unicode
or Py2K strings for the VARCHAR and NVARCHAR datatypes.  The check still
occurs by default under Python 2, however the mechanism to test the
behavior will be removed in SQLAlchemy 2.0 when Python 2 support is also
removed.

This logic was very effective when it was needed, however now that Python 3
is standard, all DBAPIs are expected to return Python 3 strings for
character datatypes.  In the unlikely case that a third party DBAPI does
not support this, the conversion logic within :class:`.String` is still
available and the third party dialect may specify this in its upfront
dialect flags by setting the dialect level flag ``returns_unicode_strings``
to one of :attr:`.String.RETURNS_CONDITIONAL` or
:attr:`.String.RETURNS_BYTES`, both of which will enable Unicode conversion
even under Python 3.

As part of this change, disabling testing of the doctest tutorials under
Python 2.

Fixes: #5315
Change-Id: I1260e894611409d3b7fe1a92bd90c52043bbcf19
doc/build/changelog/unreleased_14/5315.rst [new file with mode: 0644]
doc/build/core/tutorial.rst
doc/build/orm/tutorial.rst
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/sql/sqltypes.py
test/base/test_tutorials.py
test/engine/test_execute.py
test/engine/test_reconnect.py
test/sql/test_types.py