summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2018-08-01 17:39:58 -0400
committerGerrit Code Review <gerrit@ci.zzzcomputing.com>2018-08-01 17:39:58 -0400
commit0fc34a113989cfd284837363a7a55dc2c8aadeab (patch)
tree164d3412350d460d956528efb1fdf1b14497cfe8 /lib/sqlalchemy/util
parent85dd7668530612e2cf7de7f575d68fc7c683a988 (diff)
parenta51b0528d3dca59e655e4d19b50bb271015f8196 (diff)
downloadsqlalchemy-0fc34a113989cfd284837363a7a55dc2c8aadeab.tar.gz
Merge "Fix collections ABC access before Python 3.8"
Diffstat (limited to 'lib/sqlalchemy/util')
-rw-r--r--lib/sqlalchemy/util/__init__.py2
-rw-r--r--lib/sqlalchemy/util/_collections.py6
-rw-r--r--lib/sqlalchemy/util/compat.py9
3 files changed, 13 insertions, 4 deletions
diff --git a/lib/sqlalchemy/util/__init__.py b/lib/sqlalchemy/util/__init__.py
index 2a2d5cfc6..031376d78 100644
--- a/lib/sqlalchemy/util/__init__.py
+++ b/lib/sqlalchemy/util/__init__.py
@@ -21,7 +21,7 @@ from ._collections import KeyedTuple, ImmutableContainer, immutabledict, \
UniqueAppender, PopulateDict, EMPTY_SET, to_list, to_set, \
to_column_set, update_copy, flatten_iterator, has_intersection, \
LRUCache, ScopedRegistry, ThreadLocalRegistry, WeakSequence, \
- coerce_generator_arg, lightweight_named_tuple
+ coerce_generator_arg, lightweight_named_tuple, collections_abc
from .langhelpers import iterate_attributes, class_hierarchy, \
portable_instancemethod, unbound_method_to_callable, \
diff --git a/lib/sqlalchemy/util/_collections.py b/lib/sqlalchemy/util/_collections.py
index 1d9383bc6..3152458bf 100644
--- a/lib/sqlalchemy/util/_collections.py
+++ b/lib/sqlalchemy/util/_collections.py
@@ -11,10 +11,10 @@ from __future__ import absolute_import
import weakref
import operator
from .compat import threading, itertools_filterfalse, string_types, \
- binary_types
+ binary_types, collections_abc
from . import py2k
import types
-import collections
+
EMPTY_SET = frozenset()
@@ -798,7 +798,7 @@ def coerce_generator_arg(arg):
def to_list(x, default=None):
if x is None:
return default
- if not isinstance(x, collections.Iterable) or \
+ if not isinstance(x, collections_abc.Iterable) or \
isinstance(x, string_types + binary_types):
return [x]
elif isinstance(x, list):
diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py
index bc0c3e6e0..02be2b3b9 100644
--- a/lib/sqlalchemy/util/compat.py
+++ b/lib/sqlalchemy/util/compat.py
@@ -327,3 +327,12 @@ def nested(*managers):
exc = sys.exc_info()
if exc != (None, None, None):
reraise(exc[0], exc[1], exc[2])
+
+
+# Fix deprecation of accessing ABCs straight from collections module
+# (which will stop working in 3.8).
+if py33:
+ import collections.abc as collections_abc
+else:
+ import collections as collections_abc
+