summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2021-11-25 14:46:33 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2021-11-25 14:46:33 +0000
commit3619f084bfb5208ae45686a0993d620b2711adf2 (patch)
tree45a273205c06947c098b48971cdd3d0ab0052e9a /lib/sqlalchemy/testing
parente9c8b5307e6f107d03224453354ae0eaab7d42b1 (diff)
parent31acba8ff7c123a20ae308b7f4ab6df3df264b48 (diff)
downloadsqlalchemy-3619f084bfb5208ae45686a0993d620b2711adf2.tar.gz
Merge "Clean up most py3k compat" into main
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r--lib/sqlalchemy/testing/__init__.py2
-rw-r--r--lib/sqlalchemy/testing/assertions.py39
-rw-r--r--lib/sqlalchemy/testing/assertsql.py3
-rw-r--r--lib/sqlalchemy/testing/engines.py2
-rw-r--r--lib/sqlalchemy/testing/entities.py5
-rw-r--r--lib/sqlalchemy/testing/exclusions.py2
-rw-r--r--lib/sqlalchemy/testing/fixtures.py6
-rw-r--r--lib/sqlalchemy/testing/mock.py32
-rw-r--r--lib/sqlalchemy/testing/plugin/plugin_base.py26
-rw-r--r--lib/sqlalchemy/testing/plugin/pytestplugin.py3
-rw-r--r--lib/sqlalchemy/testing/profiling.py2
-rw-r--r--lib/sqlalchemy/testing/provision.py3
-rw-r--r--lib/sqlalchemy/testing/requirements.py23
-rw-r--r--lib/sqlalchemy/testing/suite/test_results.py3
-rw-r--r--lib/sqlalchemy/testing/suite/test_select.py5
-rw-r--r--lib/sqlalchemy/testing/suite/test_types.py45
-rw-r--r--lib/sqlalchemy/testing/suite/test_unicode_ddl.py120
-rw-r--r--lib/sqlalchemy/testing/warnings.py3
18 files changed, 103 insertions, 221 deletions
diff --git a/lib/sqlalchemy/testing/__init__.py b/lib/sqlalchemy/testing/__init__.py
index d78e24181..cf7494f57 100644
--- a/lib/sqlalchemy/testing/__init__.py
+++ b/lib/sqlalchemy/testing/__init__.py
@@ -5,9 +5,9 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php
+from unittest import mock
from . import config
-from . import mock
from .assertions import assert_raises
from .assertions import assert_raises_context_ok
from .assertions import assert_raises_message
diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py
index ed634befe..234ab4b93 100644
--- a/lib/sqlalchemy/testing/assertions.py
+++ b/lib/sqlalchemy/testing/assertions.py
@@ -5,9 +5,8 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php
-from __future__ import absolute_import
-
import contextlib
+from itertools import filterfalse
import re
import sys
import warnings
@@ -26,7 +25,6 @@ from .. import util
from ..engine import default
from ..engine import url
from ..sql.selectable import LABEL_STYLE_TABLENAME_PLUS_COL
-from ..util import compat
from ..util import decorator
@@ -58,7 +56,7 @@ def expect_warnings_on(db, *messages, **kw):
"""
spec = db_spec(db)
- if isinstance(db, util.string_types) and not spec(config._current):
+ if isinstance(db, str) and not spec(config._current):
yield
else:
with expect_warnings(*messages, **kw):
@@ -144,7 +142,6 @@ def _expect_warnings(
messages,
regex=True,
assert_=True,
- py2konly=False,
raise_on_any_unexpected=False,
):
@@ -210,7 +207,7 @@ def _expect_warnings(
finally:
_SEEN = _FILTERS = _EXC_CLS = None
- if assert_ and (not py2konly or not compat.py3k):
+ if assert_:
assert not seen, "Warnings were not seen: %s" % ", ".join(
"%r" % (s.pattern if regex else s) for s in seen
)
@@ -325,9 +322,6 @@ def _assert_proper_exception_context(exception):
"""
- if not util.py3k:
- return
-
if (
exception.__context__ is not exception.__cause__
and not exception.__suppress_context__
@@ -386,14 +380,14 @@ def _expect_raises(except_cls, msg=None, check_context=False):
if msg is not None:
# I'm often pdbing here, and "err" above isn't
# in scope, so assign the string explicitly
- error_as_string = util.text_type(err)
+ error_as_string = str(err)
assert re.search(msg, error_as_string, re.UNICODE), "%r !~ %s" % (
msg,
error_as_string,
)
if check_context and not are_we_already_in_a_traceback:
_assert_proper_exception_context(err)
- print(util.text_type(err).encode("utf-8"))
+ print(str(err).encode("utf-8"))
# it's generally a good idea to not carry traceback objects outside
# of the except: block, but in this case especially we seem to have
@@ -456,7 +450,7 @@ class AssertsCompiledSQL:
dialect.supports_default_metavalue = supports_default_metavalue
elif dialect == "default_enhanced":
dialect = default.StrCompileDialect()
- elif isinstance(dialect, util.string_types):
+ elif isinstance(dialect, str):
dialect = url.URL.create(dialect).get_dialect()()
if default_schema_name:
@@ -553,21 +547,10 @@ class AssertsCompiledSQL:
c = CheckCompilerAccess(clause).compile(dialect=dialect, **kw)
param_str = repr(getattr(c, "params", {}))
- if util.py3k:
- param_str = param_str.encode("utf-8").decode("ascii", "ignore")
- print(
- ("\nSQL String:\n" + util.text_type(c) + param_str).encode(
- "utf-8"
- )
- )
- else:
- print(
- "\nSQL String:\n"
- + util.text_type(c).encode("utf-8")
- + param_str
- )
+ param_str = param_str.encode("utf-8").decode("ascii", "ignore")
+ print(("\nSQL String:\n" + str(c) + param_str).encode("utf-8"))
- cc = re.sub(r"[\n\t]", "", util.text_type(c))
+ cc = re.sub(r"[\n\t]", "", str(c))
eq_(cc, result, "%r != %r on dialect %r" % (cc, result, dialect))
@@ -687,9 +670,7 @@ class AssertsExecutionResults:
found = util.IdentitySet(result)
expected = {immutabledict(e) for e in expected}
- for wrong in util.itertools_filterfalse(
- lambda o: isinstance(o, cls), found
- ):
+ for wrong in filterfalse(lambda o: isinstance(o, cls), found):
fail(
'Unexpected type "%s", expected "%s"'
% (type(wrong).__name__, cls.__name__)
diff --git a/lib/sqlalchemy/testing/assertsql.py b/lib/sqlalchemy/testing/assertsql.py
index 485a13f82..46fdf6b9b 100644
--- a/lib/sqlalchemy/testing/assertsql.py
+++ b/lib/sqlalchemy/testing/assertsql.py
@@ -10,7 +10,6 @@ import contextlib
import re
from .. import event
-from .. import util
from ..engine import url
from ..engine.default import DefaultDialect
from ..schema import _DDLCompiles
@@ -123,7 +122,7 @@ class CompiledSQL(SQLMatchRule):
for_executemany=context.compiled.for_executemany,
schema_translate_map=map_,
)
- _received_statement = re.sub(r"[\n\t]", "", util.text_type(compiled))
+ _received_statement = re.sub(r"[\n\t]", "", str(compiled))
parameters = execute_observed.parameters
if not parameters:
diff --git a/lib/sqlalchemy/testing/engines.py b/lib/sqlalchemy/testing/engines.py
index 98de5df5c..e17c09be7 100644
--- a/lib/sqlalchemy/testing/engines.py
+++ b/lib/sqlalchemy/testing/engines.py
@@ -5,8 +5,6 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php
-from __future__ import absolute_import
-
import collections
import re
import warnings
diff --git a/lib/sqlalchemy/testing/entities.py b/lib/sqlalchemy/testing/entities.py
index 15b6388fb..a87d853c3 100644
--- a/lib/sqlalchemy/testing/entities.py
+++ b/lib/sqlalchemy/testing/entities.py
@@ -7,7 +7,6 @@
import sqlalchemy as sa
from .. import exc as sa_exc
-from ..util import compat
_repr_stack = set()
@@ -87,9 +86,7 @@ class ComparableMixin:
except (AttributeError, sa_exc.UnboundExecutionError):
return False
- if hasattr(value, "__iter__") and not isinstance(
- value, compat.string_types
- ):
+ if hasattr(value, "__iter__") and not isinstance(value, str):
if hasattr(value, "__getitem__") and not hasattr(
value, "keys"
):
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py
index 7b2343128..c20cd920c 100644
--- a/lib/sqlalchemy/testing/exclusions.py
+++ b/lib/sqlalchemy/testing/exclusions.py
@@ -201,7 +201,7 @@ class Predicate:
)
elif isinstance(predicate, tuple):
return SpecPredicate(*predicate)
- elif isinstance(predicate, util.string_types):
+ elif isinstance(predicate, str):
tokens = re.match(
r"([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?", predicate
)
diff --git a/lib/sqlalchemy/testing/fixtures.py b/lib/sqlalchemy/testing/fixtures.py
index d5e8e376a..1d56d923e 100644
--- a/lib/sqlalchemy/testing/fixtures.py
+++ b/lib/sqlalchemy/testing/fixtures.py
@@ -429,7 +429,7 @@ class TablesTest(TestBase):
try:
conn.execute(table.delete())
except sa.exc.DBAPIError as ex:
- util.print_(
+ print(
("Error emptying table %s: %r" % (table, ex)),
file=sys.stderr,
)
@@ -483,7 +483,7 @@ class TablesTest(TestBase):
for table, data in cls.fixtures().items():
if len(data) < 2:
continue
- if isinstance(table, util.string_types):
+ if isinstance(table, str):
table = cls.tables[table]
headers[table] = data[0]
rows[table] = data[1:]
@@ -654,7 +654,7 @@ class MappedTest(TablesTest, assertions.AssertsExecutionResults):
cls_registry[classname] = cls
type.__init__(cls, classname, bases, dict_)
- class _Base(util.with_metaclass(FindFixture, object)):
+ class _Base(metaclass=FindFixture):
pass
class Basic(BasicEntity, _Base):
diff --git a/lib/sqlalchemy/testing/mock.py b/lib/sqlalchemy/testing/mock.py
deleted file mode 100644
index 8fe08a678..000000000
--- a/lib/sqlalchemy/testing/mock.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# testing/mock.py
-# Copyright (C) 2005-2021 the SQLAlchemy authors and contributors
-# <see AUTHORS file>
-#
-# This module is part of SQLAlchemy and is released under
-# the MIT License: https://www.opensource.org/licenses/mit-license.php
-
-"""Import stub for mock library.
-"""
-from __future__ import absolute_import
-
-from ..util import py3k
-
-
-if py3k:
- from unittest.mock import MagicMock
- from unittest.mock import Mock
- from unittest.mock import call
- from unittest.mock import patch
- from unittest.mock import ANY
-else:
- try:
- from mock import MagicMock # noqa
- from mock import Mock # noqa
- from mock import call # noqa
- from mock import patch # noqa
- from mock import ANY # noqa
- except ImportError:
- raise ImportError(
- "SQLAlchemy's test suite requires the "
- "'mock' library as of 0.8.2."
- )
diff --git a/lib/sqlalchemy/testing/plugin/plugin_base.py b/lib/sqlalchemy/testing/plugin/plugin_base.py
index b382e97f6..32ed2c315 100644
--- a/lib/sqlalchemy/testing/plugin/plugin_base.py
+++ b/lib/sqlalchemy/testing/plugin/plugin_base.py
@@ -13,35 +13,20 @@ created so that multiple test frameworks can be supported at once
is pytest.
"""
-
-from __future__ import absolute_import
-
import abc
+import configparser
import logging
import re
import sys
+from sqlalchemy.testing import asyncio
+
# flag which indicates we are in the SQLAlchemy testing suite,
# and not that of Alembic or a third party dialect.
bootstrapped_as_sqlalchemy = False
log = logging.getLogger("sqlalchemy.testing.plugin_base")
-
-py3k = sys.version_info >= (3, 0)
-
-if py3k:
- import configparser
-
- ABC = abc.ABC
-else:
- import ConfigParser as configparser
- import collections as collections_abc # noqa
-
- class ABC:
- __metaclass__ = abc.ABCMeta
-
-
# late imports
fixtures = None
engines = None
@@ -393,8 +378,7 @@ def _init_symbols(options, file_config):
@post
def _set_disable_asyncio(opt, file_config):
- if opt.disable_asyncio or not py3k:
- from sqlalchemy.testing import asyncio
+ if opt.disable_asyncio:
asyncio.ENABLE_ASYNCIO = False
@@ -756,7 +740,7 @@ def _setup_config(config_obj, ctx):
config._current.push(config_obj, testing)
-class FixtureFunctions(ABC):
+class FixtureFunctions(abc.ABC):
@abc.abstractmethod
def skip_test_exception(self, *arg, **kw):
raise NotImplementedError()
diff --git a/lib/sqlalchemy/testing/plugin/pytestplugin.py b/lib/sqlalchemy/testing/plugin/pytestplugin.py
index 36aaa5d2a..ba774b118 100644
--- a/lib/sqlalchemy/testing/plugin/pytestplugin.py
+++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py
@@ -344,7 +344,6 @@ _current_class = None
def pytest_runtest_setup(item):
from sqlalchemy.testing import asyncio
- from sqlalchemy.util import string_types
if not isinstance(item, pytest.Function):
return
@@ -382,7 +381,7 @@ def pytest_runtest_setup(item):
"__Original test failure__:\n"
+ _current_report.longreprtext,
)
- elif e.args[-1] and isinstance(e.args[-1], string_types):
+ elif e.args[-1] and isinstance(e.args[-1], str):
args = list(e.args)
args[-1] += (
"\n__Original test failure__:\n"
diff --git a/lib/sqlalchemy/testing/profiling.py b/lib/sqlalchemy/testing/profiling.py
index b6a6e75b1..2761d4987 100644
--- a/lib/sqlalchemy/testing/profiling.py
+++ b/lib/sqlalchemy/testing/profiling.py
@@ -279,7 +279,7 @@ def count_functions(variance=0.05):
# ended = time.time()
pr.disable()
- # s = compat.StringIO()
+ # s = StringIO()
stats = pstats.Stats(pr, stream=sys.stdout)
# timespent = ended - began
diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py
index 15613957c..e51eb172e 100644
--- a/lib/sqlalchemy/testing/provision.py
+++ b/lib/sqlalchemy/testing/provision.py
@@ -9,7 +9,6 @@ from .. import inspect
from ..engine import url as sa_url
from ..sql import ddl
from ..sql import schema
-from ..util import compat
log = logging.getLogger(__name__)
@@ -34,7 +33,7 @@ class register:
return decorate
def __call__(self, cfg, *arg):
- if isinstance(cfg, compat.string_types):
+ if isinstance(cfg, str):
url = sa_url.make_url(cfg)
elif isinstance(cfg, sa_url.URL):
url = cfg
diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py
index 325c0a9bb..8cb72d163 100644
--- a/lib/sqlalchemy/testing/requirements.py
+++ b/lib/sqlalchemy/testing/requirements.py
@@ -16,7 +16,6 @@ to provide specific inclusion/exclusions.
"""
import platform
-import sys
from . import exclusions
from . import only_on
@@ -1272,12 +1271,12 @@ class SuiteRequirements(Requirements):
@property
def threading_with_mock(self):
"""Mark tests that use threading and mock at the same time - stability
- issues have been observed with coverage + python 3.3
+ issues have been observed with coverage
"""
return exclusions.skip_if(
- lambda config: util.py3k and config.options.has_coverage,
- "Stability issues with coverage + py3k",
+ lambda config: config.options.has_coverage,
+ "Stability issues with coverage",
)
@property
@@ -1317,17 +1316,6 @@ class SuiteRequirements(Requirements):
return exclusions.only_if(check_lib, "patch library needed")
@property
- def non_broken_pickle(self):
- from sqlalchemy.util import pickle
-
- return exclusions.only_if(
- lambda: util.cpython
- and pickle.__name__ == "cPickle"
- or sys.version_info >= (3, 2),
- "Needs cPickle+cPython or newer Python 3 pickle",
- )
-
- @property
def predictable_gc(self):
"""target platform must remove all cycles unconditionally when
gc.collect() is called, as well as clean out unreferenced subclasses.
@@ -1505,8 +1493,3 @@ class SuiteRequirements(Requirements):
sequence. This should be false only for oracle.
"""
return exclusions.open()
-
- @property
- def generic_classes(self):
- "If X[Y] can be implemented with ``__class_getitem__``. py3.7+"
- return exclusions.only_if(lambda: util.py37)
diff --git a/lib/sqlalchemy/testing/suite/test_results.py b/lib/sqlalchemy/testing/suite/test_results.py
index f470432d2..5ad68034b 100644
--- a/lib/sqlalchemy/testing/suite/test_results.py
+++ b/lib/sqlalchemy/testing/suite/test_results.py
@@ -14,7 +14,6 @@ from ... import sql
from ... import String
from ... import testing
from ... import text
-from ... import util
class RowFetchTest(fixtures.TablesTest):
@@ -306,7 +305,7 @@ class ServerSideCursorsTest(
):
engine = self._fixture(engine_ss_arg)
with engine.begin() as conn:
- if isinstance(statement, util.string_types):
+ if isinstance(statement, str):
result = conn.exec_driver_sql(statement)
else:
result = conn.execute(statement)
diff --git a/lib/sqlalchemy/testing/suite/test_select.py b/lib/sqlalchemy/testing/suite/test_select.py
index b5a3dca3a..c1228f5df 100644
--- a/lib/sqlalchemy/testing/suite/test_select.py
+++ b/lib/sqlalchemy/testing/suite/test_select.py
@@ -1,3 +1,4 @@
+import collections.abc as collections_abc
import itertools
from .. import AssertsCompiledSQL
@@ -32,11 +33,9 @@ from ... import true
from ... import tuple_
from ... import TupleType
from ... import union
-from ... import util
from ... import values
from ...exc import DatabaseError
from ...exc import ProgrammingError
-from ...util import collections_abc
class CollateTest(fixtures.TablesTest):
@@ -131,7 +130,7 @@ class OrderByLabelTest(fixtures.TablesTest):
ly = (func.lower(table.c.q) + table.c.p).label("ly")
self._assert_result(
select(lx, ly).order_by(lx, ly.desc()),
- [(3, util.u("q1p3")), (5, util.u("q2p2")), (7, util.u("q3p1"))],
+ [(3, "q1p3"), (5, "q2p2"), (7, "q3p1")],
)
def test_plain_desc(self):
diff --git a/lib/sqlalchemy/testing/suite/test_types.py b/lib/sqlalchemy/testing/suite/test_types.py
index 4a5396ed8..7989b1e39 100644
--- a/lib/sqlalchemy/testing/suite/test_types.py
+++ b/lib/sqlalchemy/testing/suite/test_types.py
@@ -39,10 +39,8 @@ from ... import type_coerce
from ... import TypeDecorator
from ... import Unicode
from ... import UnicodeText
-from ... import util
from ...orm import declarative_base
from ...orm import Session
-from ...util import u
class _LiteralRoundTripFixture:
@@ -93,7 +91,7 @@ class _LiteralRoundTripFixture:
class _UnicodeFixture(_LiteralRoundTripFixture, fixtures.TestBase):
__requires__ = ("unicode_data",)
- data = u(
+ data = (
"Alors vous imaginez ma 🐍 surprise, au lever du jour, "
"quand une drĂŽle de petite 🐍 voix m’a rĂ©veillĂ©. Elle "
"disait: « S’il vous plaĂźt
 dessine-moi 🐍 un mouton! »"
@@ -124,7 +122,7 @@ class _UnicodeFixture(_LiteralRoundTripFixture, fixtures.TestBase):
row = connection.execute(select(unicode_table.c.unicode_data)).first()
eq_(row, (self.data,))
- assert isinstance(row[0], util.text_type)
+ assert isinstance(row[0], str)
def test_round_trip_executemany(self, connection):
unicode_table = self.tables.unicode_table
@@ -139,7 +137,7 @@ class _UnicodeFixture(_LiteralRoundTripFixture, fixtures.TestBase):
).fetchall()
eq_(rows, [(self.data,) for i in range(1, 4)])
for row in rows:
- assert isinstance(row[0], util.text_type)
+ assert isinstance(row[0], str)
def _test_null_strings(self, connection):
unicode_table = self.tables.unicode_table
@@ -154,18 +152,16 @@ class _UnicodeFixture(_LiteralRoundTripFixture, fixtures.TestBase):
unicode_table = self.tables.unicode_table
connection.execute(
- unicode_table.insert(), {"id": 1, "unicode_data": u("")}
+ unicode_table.insert(), {"id": 1, "unicode_data": ""}
)
row = connection.execute(select(unicode_table.c.unicode_data)).first()
- eq_(row, (u(""),))
+ eq_(row, ("",))
def test_literal(self, literal_round_trip):
literal_round_trip(self.datatype, [self.data], [self.data])
def test_literal_non_ascii(self, literal_round_trip):
- literal_round_trip(
- self.datatype, [util.u("rĂ©ve🐍 illĂ©")], [util.u("rĂ©ve🐍 illĂ©")]
- )
+ literal_round_trip(self.datatype, ["rĂ©ve🐍 illĂ©"], ["rĂ©ve🐍 illĂ©"])
class UnicodeVarcharTest(_UnicodeFixture, fixtures.TablesTest):
@@ -243,9 +239,7 @@ class TextTest(_LiteralRoundTripFixture, fixtures.TablesTest):
literal_round_trip(Text, ["some text"], ["some text"])
def test_literal_non_ascii(self, literal_round_trip):
- literal_round_trip(
- Text, [util.u("rĂ©ve🐍 illĂ©")], [util.u("rĂ©ve🐍 illĂ©")]
- )
+ literal_round_trip(Text, ["rĂ©ve🐍 illĂ©"], ["rĂ©ve🐍 illĂ©"])
def test_literal_quoting(self, literal_round_trip):
data = """some 'text' hey "hi there" that's text"""
@@ -277,9 +271,7 @@ class StringTest(_LiteralRoundTripFixture, fixtures.TestBase):
literal_round_trip(String(40), ["some text"], ["some text"])
def test_literal_non_ascii(self, literal_round_trip):
- literal_round_trip(
- String(40), [util.u("rĂ©ve🐍 illĂ©")], [util.u("rĂ©ve🐍 illĂ©")]
- )
+ literal_round_trip(String(40), ["rĂ©ve🐍 illĂ©"], ["rĂ©ve🐍 illĂ©"])
def test_literal_quoting(self, literal_round_trip):
data = """some 'text' hey "hi there" that's text"""
@@ -474,10 +466,7 @@ class IntegerTest(_LiteralRoundTripFixture, fixtures.TestBase):
eq_(row, (data,))
- if util.py3k:
- assert isinstance(row[0], int)
- else:
- assert isinstance(row[0], (long, int)) # noqa
+ assert isinstance(row[0], int)
return run
@@ -880,10 +869,10 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
("boolean", None),
("string", "some string"),
("string", None),
- ("string", util.u("réve illé")),
+ ("string", "réve illé"),
(
"string",
- util.u("rĂ©ve🐍 illĂ©"),
+ "rĂ©ve🐍 illĂ©",
testing.requires.json_index_supplementary_unicode_element,
),
("integer", 15),
@@ -1080,8 +1069,8 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
(-1.0,),
(15.052,),
("a string",),
- (util.u("réve illé"),),
- (util.u("rĂ©ve🐍 illĂ©"),),
+ ("réve illé",),
+ ("rĂ©ve🐍 illĂ©",),
)
def test_single_element_round_trip(self, element):
data_table = self.tables.data_table
@@ -1243,8 +1232,8 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
{
"name": "r1",
"data": {
- util.u("rĂ©ve🐍 illĂ©"): util.u("rĂ©ve🐍 illĂ©"),
- "data": {"k1": util.u("drîl🐍e")},
+ "rĂ©ve🐍 illĂ©": "rĂ©ve🐍 illĂ©",
+ "data": {"k1": "drîl🐍e"},
},
},
)
@@ -1252,8 +1241,8 @@ class JSONTest(_LiteralRoundTripFixture, fixtures.TablesTest):
eq_(
conn.scalar(select(self.tables.data_table.c.data)),
{
- util.u("rĂ©ve🐍 illĂ©"): util.u("rĂ©ve🐍 illĂ©"),
- "data": {"k1": util.u("drîl🐍e")},
+ "rĂ©ve🐍 illĂ©": "rĂ©ve🐍 illĂ©",
+ "data": {"k1": "drîl🐍e"},
},
)
diff --git a/lib/sqlalchemy/testing/suite/test_unicode_ddl.py b/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
index 1334eb8db..a0cd6734a 100644
--- a/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
+++ b/lib/sqlalchemy/testing/suite/test_unicode_ddl.py
@@ -10,8 +10,6 @@ from sqlalchemy.testing import eq_
from sqlalchemy.testing import fixtures
from sqlalchemy.testing.schema import Column
from sqlalchemy.testing.schema import Table
-from sqlalchemy.util import u
-from sqlalchemy.util import ue
class UnicodeSchemaTest(fixtures.TablesTest):
@@ -23,20 +21,20 @@ class UnicodeSchemaTest(fixtures.TablesTest):
global t1, t2, t3
t1 = Table(
- u("unitable1"),
+ "unitable1",
metadata,
- Column(u("méil"), Integer, primary_key=True),
- Column(ue("\u6e2c\u8a66"), Integer),
+ Column("méil", Integer, primary_key=True),
+ Column("\u6e2c\u8a66", Integer),
test_needs_fk=True,
)
t2 = Table(
- u("Unitéble2"),
+ "Unitéble2",
metadata,
- Column(u("méil"), Integer, primary_key=True, key="a"),
+ Column("méil", Integer, primary_key=True, key="a"),
Column(
- ue("\u6e2c\u8a66"),
+ "\u6e2c\u8a66",
Integer,
- ForeignKey(u("unitable1.méil")),
+ ForeignKey("unitable1.méil"),
key="b",
),
test_needs_fk=True,
@@ -45,55 +43,53 @@ class UnicodeSchemaTest(fixtures.TablesTest):
# Few DBs support Unicode foreign keys
if testing.against("sqlite"):
t3 = Table(
- ue("\u6e2c\u8a66"),
+ "\u6e2c\u8a66",
metadata,
Column(
- ue("\u6e2c\u8a66_id"),
+ "\u6e2c\u8a66_id",
Integer,
primary_key=True,
autoincrement=False,
),
Column(
- ue("unitable1_\u6e2c\u8a66"),
+ "unitable1_\u6e2c\u8a66",
Integer,
- ForeignKey(ue("unitable1.\u6e2c\u8a66")),
+ ForeignKey("unitable1.\u6e2c\u8a66"),
),
+ Column("Unitéble2_b", Integer, ForeignKey("Unitéble2.b")),
Column(
- u("Unitéble2_b"), Integer, ForeignKey(u("Unitéble2.b"))
- ),
- Column(
- ue("\u6e2c\u8a66_self"),
+ "\u6e2c\u8a66_self",
Integer,
- ForeignKey(ue("\u6e2c\u8a66.\u6e2c\u8a66_id")),
+ ForeignKey("\u6e2c\u8a66.\u6e2c\u8a66_id"),
),
test_needs_fk=True,
)
else:
t3 = Table(
- ue("\u6e2c\u8a66"),
+ "\u6e2c\u8a66",
metadata,
Column(
- ue("\u6e2c\u8a66_id"),
+ "\u6e2c\u8a66_id",
Integer,
primary_key=True,
autoincrement=False,
),
- Column(ue("unitable1_\u6e2c\u8a66"), Integer),
- Column(u("Unitéble2_b"), Integer),
- Column(ue("\u6e2c\u8a66_self"), Integer),
+ Column("unitable1_\u6e2c\u8a66", Integer),
+ Column("Unitéble2_b", Integer),
+ Column("\u6e2c\u8a66_self", Integer),
test_needs_fk=True,
)
def test_insert(self, connection):
- connection.execute(t1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
- connection.execute(t2.insert(), {u("a"): 1, u("b"): 1})
+ connection.execute(t1.insert(), {"méil": 1, "\u6e2c\u8a66": 5})
+ connection.execute(t2.insert(), {"a": 1, "b": 1})
connection.execute(
t3.insert(),
{
- ue("\u6e2c\u8a66_id"): 1,
- ue("unitable1_\u6e2c\u8a66"): 5,
- u("Unitéble2_b"): 1,
- ue("\u6e2c\u8a66_self"): 1,
+ "\u6e2c\u8a66_id": 1,
+ "unitable1_\u6e2c\u8a66": 5,
+ "Unitéble2_b": 1,
+ "\u6e2c\u8a66_self": 1,
},
)
@@ -102,42 +98,42 @@ class UnicodeSchemaTest(fixtures.TablesTest):
eq_(connection.execute(t3.select()).fetchall(), [(1, 5, 1, 1)])
def test_col_targeting(self, connection):
- connection.execute(t1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
- connection.execute(t2.insert(), {u("a"): 1, u("b"): 1})
+ connection.execute(t1.insert(), {"méil": 1, "\u6e2c\u8a66": 5})
+ connection.execute(t2.insert(), {"a": 1, "b": 1})
connection.execute(
t3.insert(),
{
- ue("\u6e2c\u8a66_id"): 1,
- ue("unitable1_\u6e2c\u8a66"): 5,
- u("Unitéble2_b"): 1,
- ue("\u6e2c\u8a66_self"): 1,
+ "\u6e2c\u8a66_id": 1,
+ "unitable1_\u6e2c\u8a66": 5,
+ "Unitéble2_b": 1,
+ "\u6e2c\u8a66_self": 1,
},
)
row = connection.execute(t1.select()).first()
- eq_(row._mapping[t1.c[u("méil")]], 1)
- eq_(row._mapping[t1.c[ue("\u6e2c\u8a66")]], 5)
+ eq_(row._mapping[t1.c["méil"]], 1)
+ eq_(row._mapping[t1.c["\u6e2c\u8a66"]], 5)
row = connection.execute(t2.select()).first()
- eq_(row._mapping[t2.c[u("a")]], 1)
- eq_(row._mapping[t2.c[u("b")]], 1)
+ eq_(row._mapping[t2.c["a"]], 1)
+ eq_(row._mapping[t2.c["b"]], 1)
row = connection.execute(t3.select()).first()
- eq_(row._mapping[t3.c[ue("\u6e2c\u8a66_id")]], 1)
- eq_(row._mapping[t3.c[ue("unitable1_\u6e2c\u8a66")]], 5)
- eq_(row._mapping[t3.c[u("Unitéble2_b")]], 1)
- eq_(row._mapping[t3.c[ue("\u6e2c\u8a66_self")]], 1)
+ eq_(row._mapping[t3.c["\u6e2c\u8a66_id"]], 1)
+ eq_(row._mapping[t3.c["unitable1_\u6e2c\u8a66"]], 5)
+ eq_(row._mapping[t3.c["Unitéble2_b"]], 1)
+ eq_(row._mapping[t3.c["\u6e2c\u8a66_self"]], 1)
def test_reflect(self, connection):
- connection.execute(t1.insert(), {u("méil"): 2, ue("\u6e2c\u8a66"): 7})
- connection.execute(t2.insert(), {u("a"): 2, u("b"): 2})
+ connection.execute(t1.insert(), {"méil": 2, "\u6e2c\u8a66": 7})
+ connection.execute(t2.insert(), {"a": 2, "b": 2})
connection.execute(
t3.insert(),
{
- ue("\u6e2c\u8a66_id"): 2,
- ue("unitable1_\u6e2c\u8a66"): 7,
- u("Unitéble2_b"): 2,
- ue("\u6e2c\u8a66_self"): 2,
+ "\u6e2c\u8a66_id": 2,
+ "unitable1_\u6e2c\u8a66": 7,
+ "Unitéble2_b": 2,
+ "\u6e2c\u8a66_self": 2,
},
)
@@ -146,42 +142,36 @@ class UnicodeSchemaTest(fixtures.TablesTest):
tt2 = Table(t2.name, meta, autoload_with=connection)
tt3 = Table(t3.name, meta, autoload_with=connection)
- connection.execute(tt1.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 5})
- connection.execute(tt2.insert(), {u("méil"): 1, ue("\u6e2c\u8a66"): 1})
+ connection.execute(tt1.insert(), {"méil": 1, "\u6e2c\u8a66": 5})
+ connection.execute(tt2.insert(), {"méil": 1, "\u6e2c\u8a66": 1})
connection.execute(
tt3.insert(),
{
- ue("\u6e2c\u8a66_id"): 1,
- ue("unitable1_\u6e2c\u8a66"): 5,
- u("Unitéble2_b"): 1,
- ue("\u6e2c\u8a66_self"): 1,
+ "\u6e2c\u8a66_id": 1,
+ "unitable1_\u6e2c\u8a66": 5,
+ "Unitéble2_b": 1,
+ "\u6e2c\u8a66_self": 1,
},
)
eq_(
- connection.execute(
- tt1.select().order_by(desc(u("méil")))
- ).fetchall(),
+ connection.execute(tt1.select().order_by(desc("méil"))).fetchall(),
[(2, 7), (1, 5)],
)
eq_(
- connection.execute(
- tt2.select().order_by(desc(u("méil")))
- ).fetchall(),
+ connection.execute(tt2.select().order_by(desc("méil"))).fetchall(),
[(2, 2), (1, 1)],
)
eq_(
connection.execute(
- tt3.select().order_by(desc(ue("\u6e2c\u8a66_id")))
+ tt3.select().order_by(desc("\u6e2c\u8a66_id"))
).fetchall(),
[(2, 7, 2, 2), (1, 5, 1, 1)],
)
def test_repr(self):
meta = MetaData()
- t = Table(
- ue("\u6e2c\u8a66"), meta, Column(ue("\u6e2c\u8a66_id"), Integer)
- )
+ t = Table("\u6e2c\u8a66", meta, Column("\u6e2c\u8a66_id", Integer))
eq_(
repr(t),
(
diff --git a/lib/sqlalchemy/testing/warnings.py b/lib/sqlalchemy/testing/warnings.py
index 2c41337e4..c8e481a90 100644
--- a/lib/sqlalchemy/testing/warnings.py
+++ b/lib/sqlalchemy/testing/warnings.py
@@ -4,9 +4,6 @@
#
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php
-
-from __future__ import absolute_import
-
import warnings
from . import assertions