summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine
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/engine
parente9c8b5307e6f107d03224453354ae0eaab7d42b1 (diff)
parent31acba8ff7c123a20ae308b7f4ab6df3df264b48 (diff)
downloadsqlalchemy-3619f084bfb5208ae45686a0993d620b2711adf2.tar.gz
Merge "Clean up most py3k compat" into main
Diffstat (limited to 'lib/sqlalchemy/engine')
-rw-r--r--lib/sqlalchemy/engine/base.py6
-rw-r--r--lib/sqlalchemy/engine/characteristics.py4
-rw-r--r--lib/sqlalchemy/engine/cursor.py2
-rw-r--r--lib/sqlalchemy/engine/default.py7
-rw-r--r--lib/sqlalchemy/engine/reflection.py2
-rw-r--r--lib/sqlalchemy/engine/result.py2
-rw-r--r--lib/sqlalchemy/engine/row.py2
-rw-r--r--lib/sqlalchemy/engine/url.py25
-rw-r--r--lib/sqlalchemy/engine/util.py3
9 files changed, 25 insertions, 28 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 389270e45..d2939c035 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -4,8 +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 with_statement
-
import contextlib
import sys
@@ -1464,7 +1462,7 @@ class Connection(Connectable):
raise
except BaseException as e:
self._handle_dbapi_exception(
- e, util.text_type(statement), parameters, None, None
+ e, str(statement), parameters, None, None
)
return # not reached
@@ -2518,7 +2516,7 @@ class Engine(ConnectionEventsTarget, log.Identified):
else:
yield connection
- @util.contextmanager
+ @contextlib.contextmanager
def begin(self):
"""Return a context manager delivering a :class:`_engine.Connection`
with a :class:`.Transaction` established.
diff --git a/lib/sqlalchemy/engine/characteristics.py b/lib/sqlalchemy/engine/characteristics.py
index 2543f591b..10455451f 100644
--- a/lib/sqlalchemy/engine/characteristics.py
+++ b/lib/sqlalchemy/engine/characteristics.py
@@ -1,9 +1,7 @@
import abc
-from ..util import ABC
-
-class ConnectionCharacteristic(ABC):
+class ConnectionCharacteristic(abc.ABC):
"""An abstract base for an object that can set, get and reset a
per-connection characteristic, typically one that gets reset when the
connection is returned to the connection pool.
diff --git a/lib/sqlalchemy/engine/cursor.py b/lib/sqlalchemy/engine/cursor.py
index 54db9f6c2..1f1a2fcf1 100644
--- a/lib/sqlalchemy/engine/cursor.py
+++ b/lib/sqlalchemy/engine/cursor.py
@@ -669,7 +669,7 @@ class CursorResultMetaData(ResultMetaData):
"_keymap": {
key: (rec[MD_INDEX], rec[MD_RESULT_MAP_INDEX], _UNPICKLED, key)
for key, rec in self._keymap.items()
- if isinstance(key, util.string_types + util.int_types)
+ if isinstance(key, (str, int))
},
"_keys": self._keys,
"_translated_indexes": self._translated_indexes,
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index 3af24d913..a47ed963d 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -16,6 +16,7 @@ as the base class for their own corresponding classes.
import functools
import random
import re
+from time import perf_counter
import weakref
from . import characteristics
@@ -780,7 +781,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext):
self.execution_options = execution_options
- self.unicode_statement = util.text_type(compiled)
+ self.unicode_statement = str(compiled)
if compiled.schema_translate_map:
schema_translate_map = self.execution_options.get(
"schema_translate_map", {}
@@ -1003,7 +1004,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext):
if self.compiled is None:
return "raw sql"
- now = util.perf_counter()
+ now = perf_counter()
ch = self.cache_hit
@@ -1515,7 +1516,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext):
for key in compiled_params
)
return self._execute_scalar(
- util.text_type(compiled), type_, parameters=parameters
+ str(compiled), type_, parameters=parameters
)
current_parameters = None
diff --git a/lib/sqlalchemy/engine/reflection.py b/lib/sqlalchemy/engine/reflection.py
index c918f15b3..7abc404f0 100644
--- a/lib/sqlalchemy/engine/reflection.py
+++ b/lib/sqlalchemy/engine/reflection.py
@@ -47,7 +47,7 @@ def cache(fn, self, con, *args, **kw):
return fn(self, con, *args, **kw)
key = (
fn.__name__,
- tuple(a for a in args if isinstance(a, util.string_types)),
+ tuple(a for a in args if isinstance(a, str)),
tuple((k, v) for k, v in kw.items() if k != "info_cache"),
)
ret = info_cache.get(key)
diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py
index 4187c6c13..e2f4033e0 100644
--- a/lib/sqlalchemy/engine/result.py
+++ b/lib/sqlalchemy/engine/result.py
@@ -8,6 +8,7 @@
"""Define generic result set constructs."""
+import collections.abc as collections_abc
import functools
import itertools
import operator
@@ -19,7 +20,6 @@ from .. import util
from ..sql.base import _generative
from ..sql.base import HasMemoized
from ..sql.base import InPlaceGenerative
-from ..util import collections_abc
if _baserow_usecext:
diff --git a/lib/sqlalchemy/engine/row.py b/lib/sqlalchemy/engine/row.py
index 782fc21b8..1a8c4e555 100644
--- a/lib/sqlalchemy/engine/row.py
+++ b/lib/sqlalchemy/engine/row.py
@@ -8,11 +8,11 @@
"""Define row constructs including :class:`.Row`."""
+import collections.abc as collections_abc
import operator
from .. import util
from ..sql import util as sql_util
-from ..util.compat import collections_abc
MD_INDEX = 0 # integer index in cursor.description
diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py
index 7f09b1eac..c83753bdc 100644
--- a/lib/sqlalchemy/engine/url.py
+++ b/lib/sqlalchemy/engine/url.py
@@ -14,15 +14,17 @@ argument; alternatively, the URL is a public-facing construct which can
be used directly and is also accepted directly by ``create_engine()``.
"""
+import collections.abc as collections_abc
import re
+from urllib.parse import parse_qsl
+from urllib.parse import quote_plus
+from urllib.parse import unquote
from .interfaces import Dialect
from .. import exc
from .. import util
from ..dialects import plugins
from ..dialects import registry
-from ..util import collections_abc
-from ..util import compat
class URL(
@@ -165,7 +167,7 @@ class URL(
@classmethod
def _assert_str(cls, v, paramname):
- if not isinstance(v, compat.string_types):
+ if not isinstance(v, str):
raise TypeError("%s must be a string" % paramname)
return v
@@ -193,7 +195,7 @@ class URL(
)
def _assert_str(v):
- if not isinstance(v, compat.string_types):
+ if not isinstance(v, str):
raise TypeError("Query dictionary keys must be strings")
return v
@@ -308,9 +310,7 @@ class URL(
:meth:`_engine.URL.update_query_dict`
""" # noqa: E501
- return self.update_query_pairs(
- util.parse_qsl(query_string), append=append
- )
+ return self.update_query_pairs(parse_qsl(query_string), append=append)
def update_query_pairs(self, key_value_pairs, append=False):
"""Return a new :class:`_engine.URL` object with the
@@ -548,7 +548,7 @@ class URL(
keys = list(self.query)
keys.sort()
s += "?" + "&".join(
- "%s=%s" % (util.quote_plus(k), util.quote_plus(element))
+ "%s=%s" % (quote_plus(k), quote_plus(element))
for k in keys
for element in util.to_list(self.query[k])
)
@@ -711,7 +711,7 @@ def make_url(name_or_url):
existing URL object is passed, just returns the object.
"""
- if isinstance(name_or_url, util.string_types):
+ if isinstance(name_or_url, str):
return _parse_rfc1738_args(name_or_url)
else:
return name_or_url
@@ -744,7 +744,7 @@ def _parse_rfc1738_args(name):
if components["query"] is not None:
query = {}
- for key, value in util.parse_qsl(components["query"]):
+ for key, value in parse_qsl(components["query"]):
if key in query:
query[key] = util.to_list(query[key])
query[key].append(value)
@@ -780,15 +780,14 @@ def _rfc_1738_quote(text):
return re.sub(r"[:@/]", lambda m: "%%%X" % ord(m.group(0)), text)
-def _rfc_1738_unquote(text):
- return util.unquote(text)
+_rfc_1738_unquote = unquote
def _parse_keyvalue_args(name):
m = re.match(r"(\w+)://(.*)", name)
if m is not None:
(name, args) = m.group(1, 2)
- opts = dict(util.parse_qsl(args))
+ opts = dict(parse_qsl(args))
return URL(name, *opts)
else:
return None
diff --git a/lib/sqlalchemy/engine/util.py b/lib/sqlalchemy/engine/util.py
index 4467bafd3..732ae7fa1 100644
--- a/lib/sqlalchemy/engine/util.py
+++ b/lib/sqlalchemy/engine/util.py
@@ -5,9 +5,10 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php
+import collections.abc as collections_abc
+
from .. import exc
from .. import util
-from ..util import collections_abc
from ..util import immutabledict