summaryrefslogtreecommitdiff
path: root/pylint
diff options
context:
space:
mode:
Diffstat (limited to 'pylint')
-rw-r--r--pylint/checkers/python3.py3
-rw-r--r--pylint/test/unittest_checker_python3.py5
2 files changed, 7 insertions, 1 deletions
diff --git a/pylint/checkers/python3.py b/pylint/checkers/python3.py
index 63e756fb7..006f2d7b0 100644
--- a/pylint/checkers/python3.py
+++ b/pylint/checkers/python3.py
@@ -80,6 +80,7 @@ def _is_builtin(node):
_ACCEPTS_ITERATOR = {'iter', 'list', 'tuple', 'sorted', 'set', 'sum', 'any',
'all', 'enumerate', 'dict', 'filter', 'reversed',
'max', 'min', 'frozenset'}
+ATTRIBUTES_ACCEPTS_ITERATOR = {'join', 'from_iterable'}
_BUILTIN_METHOD_ACCEPTS_ITERATOR = {
'builtins.list.extend',
'builtins.dict.update',
@@ -112,7 +113,7 @@ def _in_iterating_context(node):
if _is_builtin(parent_scope) and parent.func.name in _ACCEPTS_ITERATOR:
return True
elif isinstance(parent.func, astroid.Attribute):
- if parent.func.attrname == 'join':
+ if parent.func.attrname in ATTRIBUTES_ACCEPTS_ITERATOR:
return True
try:
inferred = next(parent.func.infer())
diff --git a/pylint/test/unittest_checker_python3.py b/pylint/test/unittest_checker_python3.py
index ee0db32d2..59d1b2a22 100644
--- a/pylint/test/unittest_checker_python3.py
+++ b/pylint/test/unittest_checker_python3.py
@@ -211,6 +211,11 @@ class TestPython3Checker(testutils.CheckerTestCase):
'set().update({}())',
'[].extend({}())',
'{{}}.update({}())',
+ '''
+ from __future__ import absolute_import
+ from itertools import chain
+ chain.from_iterable({}())
+ ''',
]
non_iterating_code = [
'x = __({}())',