summaryrefslogtreecommitdiff
path: root/tests/functional/c/consider/consider_iterating_dictionary.py
blob: 1498100420f186c5915a3ee028f5814914f9b7f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# pylint: disable=missing-docstring, expression-not-assigned, too-few-public-methods
# pylint: disable=no-member, import-error, line-too-long, useless-object-inheritance
# pylint: disable=unnecessary-comprehension, use-dict-literal, use-implicit-booleaness-not-comparison

from unknown import Unknown


class CustomClass(object):
    def keys(self):
        return []

for key in Unknown().keys():
    pass
for key in Unknown.keys():
    pass
for key in dict.keys():
    pass
for key in {}.values():
    pass
for key in {}.key():
    pass
for key in CustomClass().keys():
    pass

[key for key in {}.keys()] # [consider-iterating-dictionary]
(key for key in {}.keys()) # [consider-iterating-dictionary]
{key for key in {}.keys()} # [consider-iterating-dictionary]
{key: key for key in {}.keys()} # [consider-iterating-dictionary]
COMP1 = [key for key in {}.keys()] # [consider-iterating-dictionary]
COMP2 = (key for key in {}.keys()) # [consider-iterating-dictionary]
COMP3 = {key for key in {}.keys()} # [consider-iterating-dictionary]
COMP4 = {key: key for key in {}.keys()} # [consider-iterating-dictionary]
for key in {}.keys(): # [consider-iterating-dictionary]
    pass

# Issue #1247
DICT = {'a': 1, 'b': 2}
COMP1 = [k * 2 for k in DICT.keys()] + [k * 3 for k in DICT.keys()]  # [consider-iterating-dictionary,consider-iterating-dictionary]
COMP2, COMP3 = [k * 2 for k in DICT.keys()], [k * 3 for k in DICT.keys()]  # [consider-iterating-dictionary,consider-iterating-dictionary]
SOME_TUPLE = ([k * 2 for k in DICT.keys()], [k * 3 for k in DICT.keys()])  # [consider-iterating-dictionary,consider-iterating-dictionary]

# Checks for membership checks
if 1 in dict().keys(): # [consider-iterating-dictionary]
    pass
if 1 in {}.keys(): # [consider-iterating-dictionary]
    pass
if 1 in Unknown().keys():
    pass
if 1 in Unknown.keys():
    pass
if 1 in CustomClass().keys():
    pass
if 1 in dict():
    pass
if 1 in dict().values():
    pass
if (1, 1) in dict().items():
    pass
if [1] == {}.keys():
    pass
if [1] == {}:
    pass
if [1] == dict():
    pass
VAR = 1 in {}.keys() # [consider-iterating-dictionary]
VAR = 1 in {}
VAR = 1 in dict()
VAR = [1, 2] == {}.keys() in {False}

# Additional membership checks
# See: https://github.com/PyCQA/pylint/issues/5323
metadata = {}
if "a" not in list(metadata.keys()): # [consider-iterating-dictionary]
    print(1)
if "a" not in metadata.keys(): # [consider-iterating-dictionary]
    print(1)
if "a" in list(metadata.keys()): # [consider-iterating-dictionary]
    print(1)
if "a" in metadata.keys(): # [consider-iterating-dictionary]
    print(1)


class AClass:
    def a_function(self):
        class InnerClass:
            def another_function(self):
                def inner_function():
                    another_metadata = {}
                    print("a" not in list(another_metadata.keys())) # [consider-iterating-dictionary]
                    print("a" not in another_metadata.keys()) # [consider-iterating-dictionary]
                    print("a" in list(another_metadata.keys())) # [consider-iterating-dictionary]
                    print("a" in another_metadata.keys()) # [consider-iterating-dictionary]
                return  inner_function()
        return InnerClass().another_function()