summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/base.py
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2021-11-21 21:17:27 +0100
committerMike Bayer <mike_mp@zzzcomputing.com>2021-11-24 22:51:27 -0500
commit31acba8ff7c123a20ae308b7f4ab6df3df264b48 (patch)
treea4c39a2123e1b95edf17995ba85bb69ee619f6e4 /lib/sqlalchemy/sql/base.py
parentd3a4e96196cd47858de072ae589c6554088edc24 (diff)
downloadsqlalchemy-31acba8ff7c123a20ae308b7f4ab6df3df264b48.tar.gz
Clean up most py3k compat
Change-Id: I8172fdcc3103ff92aa049827728484c8779af6b7
Diffstat (limited to 'lib/sqlalchemy/sql/base.py')
-rw-r--r--lib/sqlalchemy/sql/base.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/sqlalchemy/sql/base.py b/lib/sqlalchemy/sql/base.py
index b57da3289..2c74dd523 100644
--- a/lib/sqlalchemy/sql/base.py
+++ b/lib/sqlalchemy/sql/base.py
@@ -10,7 +10,10 @@
"""
+import collections.abc as collections_abc
+from functools import reduce
import itertools
+from itertools import zip_longest
import operator
import re
@@ -27,7 +30,6 @@ from .. import util
from ..util import HasMemoized
from ..util import hybridmethod
-
coercions = None
elements = None
type_api = None
@@ -176,7 +178,7 @@ def _cloned_difference(a, b):
)
-class _DialectArgView(util.collections_abc.MutableMapping):
+class _DialectArgView(collections_abc.MutableMapping):
"""A dictionary view of dialect-level arguments in the form
<dialectname>_<argument_name>.
@@ -236,7 +238,7 @@ class _DialectArgView(util.collections_abc.MutableMapping):
)
-class _DialectArgDict(util.collections_abc.MutableMapping):
+class _DialectArgDict(collections_abc.MutableMapping):
"""A dictionary view of dialect-level arguments for a specific
dialect.
@@ -615,7 +617,7 @@ class _MetaOptions(type):
return o1
-class Options(util.with_metaclass(_MetaOptions)):
+class Options(metaclass=_MetaOptions):
"""A cacheable option dictionary with defaults."""
def __init__(self, **kw):
@@ -638,7 +640,7 @@ class Options(util.with_metaclass(_MetaOptions)):
def __eq__(self, other):
# TODO: very inefficient. This is used only in test suites
# right now.
- for a, b in util.zip_longest(self._cache_attrs, other._cache_attrs):
+ for a, b in zip_longest(self._cache_attrs, other._cache_attrs):
if getattr(self, a) != getattr(other, b):
return False
return True
@@ -1238,7 +1240,7 @@ class ColumnCollection:
try:
return self._index[key]
except KeyError as err:
- if isinstance(key, util.int_types):
+ if isinstance(key, int):
util.raise_(IndexError(key), replace_context=err)
else:
raise
@@ -1251,7 +1253,7 @@ class ColumnCollection:
def __contains__(self, key):
if key not in self._index:
- if not isinstance(key, util.string_types):
+ if not isinstance(key, str):
raise exc.ArgumentError(
"__contains__ requires a string argument"
)
@@ -1263,7 +1265,7 @@ class ColumnCollection:
"""Compare this :class:`_expression.ColumnCollection` to another
based on the names of the keys"""
- for l, r in util.zip_longest(self, other):
+ for l, r in zip_longest(self, other):
if l is not r:
return False
else:
@@ -1359,7 +1361,7 @@ class ColumnCollection:
def contains_column(self, col):
"""Checks if a column object exists in this collection"""
if col not in self._colset:
- if isinstance(col, util.string_types):
+ if isinstance(col, str):
raise exc.ArgumentError(
"contains_column cannot be used with string arguments. "
"Use ``col_name in table.c`` instead."
@@ -1451,7 +1453,7 @@ class ColumnCollection:
# columns that have no reference to the target
# column (also occurs with CompoundSelect)
- col_distance = util.reduce(
+ col_distance = reduce(
operator.add,
[
sc._annotations.get("weight", 1)
@@ -1459,7 +1461,7 @@ class ColumnCollection:
if sc.shares_lineage(column)
],
)
- c_distance = util.reduce(
+ c_distance = reduce(
operator.add,
[
sc._annotations.get("weight", 1)