summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/unreleased_12/4339.rst8
-rw-r--r--lib/sqlalchemy/dialects/postgresql/json.py5
-rw-r--r--lib/sqlalchemy/engine/result.py3
-rw-r--r--lib/sqlalchemy/sql/base.py5
-rw-r--r--lib/sqlalchemy/sql/sqltypes.py2
-rw-r--r--test/sql/test_resultset.py4
6 files changed, 16 insertions, 11 deletions
diff --git a/doc/build/changelog/unreleased_12/4339.rst b/doc/build/changelog/unreleased_12/4339.rst
new file mode 100644
index 000000000..6c963a66a
--- /dev/null
+++ b/doc/build/changelog/unreleased_12/4339.rst
@@ -0,0 +1,8 @@
+.. change::
+ :tags: bug, misc, py3k
+ :tickets: 4339
+
+ Fixed additional warnings generated by Python 3.7 due to changes in the
+ organization of the Python ``collections`` and ``collections.abc`` packages.
+ Previous ``collections`` warnings were fixed in version 1.2.11. Pull request
+ courtesy xtreak.
diff --git a/lib/sqlalchemy/dialects/postgresql/json.py b/lib/sqlalchemy/dialects/postgresql/json.py
index 740118030..1a1367f1b 100644
--- a/lib/sqlalchemy/dialects/postgresql/json.py
+++ b/lib/sqlalchemy/dialects/postgresql/json.py
@@ -7,7 +7,6 @@
from __future__ import absolute_import
import json
-import collections
from .base import ischema_names, colspecs
from ... import types as sqltypes
@@ -61,7 +60,7 @@ class JSONPathType(sqltypes.JSON.JSONPathType):
super_proc = self.string_bind_processor(dialect)
def process(value):
- assert isinstance(value, collections.Sequence)
+ assert isinstance(value, util.collections_abc.Sequence)
tokens = [util.text_type(elem)for elem in value]
value = "{%s}" % (", ".join(tokens))
if super_proc:
@@ -74,7 +73,7 @@ class JSONPathType(sqltypes.JSON.JSONPathType):
super_proc = self.string_literal_processor(dialect)
def process(value):
- assert isinstance(value, collections.Sequence)
+ assert isinstance(value, util.collections_abc.Sequence)
tokens = [util.text_type(elem)for elem in value]
value = "{%s}" % (", ".join(tokens))
if super_proc:
diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py
index ed6c0251d..d4c862375 100644
--- a/lib/sqlalchemy/engine/result.py
+++ b/lib/sqlalchemy/engine/result.py
@@ -179,8 +179,7 @@ class RowProxy(BaseRowProxy):
try:
# Register RowProxy with Sequence,
# so sequence protocol is implemented
- from collections import Sequence
- Sequence.register(RowProxy)
+ util.collections_abc.Sequence.register(RowProxy)
except ImportError:
pass
diff --git a/lib/sqlalchemy/sql/base.py b/lib/sqlalchemy/sql/base.py
index 9c79ccf7a..5c884e1a0 100644
--- a/lib/sqlalchemy/sql/base.py
+++ b/lib/sqlalchemy/sql/base.py
@@ -14,7 +14,6 @@ from .. import util, exc
import itertools
from .visitors import ClauseVisitor
import re
-import collections
PARSE_AUTOCOMMIT = util.symbol('PARSE_AUTOCOMMIT')
NO_ARG = util.symbol('NO_ARG')
@@ -46,7 +45,7 @@ def _generative(fn, *args, **kw):
return self
-class _DialectArgView(collections.MutableMapping):
+class _DialectArgView(util.collections_abc.MutableMapping):
"""A dictionary view of dialect-level arguments in the form
<dialectname>_<argument_name>.
@@ -99,7 +98,7 @@ class _DialectArgView(collections.MutableMapping):
)
-class _DialectArgDict(collections.MutableMapping):
+class _DialectArgDict(util.collections_abc.MutableMapping):
"""A dictionary view of dialect-level arguments for a specific
dialect.
diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py
index 08af78606..ef0de2a92 100644
--- a/lib/sqlalchemy/sql/sqltypes.py
+++ b/lib/sqlalchemy/sql/sqltypes.py
@@ -2098,7 +2098,7 @@ class JSON(Indexable, TypeEngine):
@util.dependencies('sqlalchemy.sql.default_comparator')
def _setup_getitem(self, default_comparator, index):
if not isinstance(index, util.string_types) and \
- isinstance(index, collections.Sequence):
+ isinstance(index, compat.collections_abc.Sequence):
index = default_comparator._check_literal(
self.expr, operators.json_path_getitem_op,
index, bindparam_type=JSON.JSONPathType
diff --git a/test/sql/test_resultset.py b/test/sql/test_resultset.py
index 5c7108ca0..8e6279708 100644
--- a/test/sql/test_resultset.py
+++ b/test/sql/test_resultset.py
@@ -1062,13 +1062,13 @@ class ResultProxyTest(fixtures.TablesTest):
eq_(len(mock_rowcount.__get__.mock_calls), 2)
def test_rowproxy_is_sequence(self):
- import collections
+ from sqlalchemy.util import collections_abc
from sqlalchemy.engine import RowProxy
row = RowProxy(
object(), ['value'], [None],
{'key': (None, None, 0), 0: (None, None, 0)})
- assert isinstance(row, collections.Sequence)
+ assert isinstance(row, collections_abc.Sequence)
@testing.provide_metadata
def test_rowproxy_getitem_indexes_compiled(self):