From: xtreak Date: Mon, 24 Sep 2018 16:23:54 +0000 (-0400) Subject: Import from collections.abc X-Git-Tag: rel_1_3_0b1~62^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d2fa49130249f757f6f1100dad879e1071ad385;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Import from collections.abc 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. See I2d1c0ef97c8ecac7af152cc56263422a40faa6bb for the original collections.abc fixes. Fixes: #4339 Change-Id: Ia92d2461f20309fb33ea6c6f592f7d4e7e32ae7a Pull-request: https://github.com/zzzeek/sqlalchemy/pull/475 --- diff --git a/doc/build/changelog/unreleased_12/4339.rst b/doc/build/changelog/unreleased_12/4339.rst new file mode 100644 index 0000000000..6c963a66a8 --- /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 7401180300..1a1367f1b3 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 ed6c0251d7..d4c8623757 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 9c79ccf7a1..5c884e1a0f 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 _. @@ -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 08af78606a..ef0de2a92c 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 5c7108ca09..8e6279708e 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):