summaryrefslogtreecommitdiff
path: root/tests/functional/n/no/no_member_if_statements.py
blob: 220d0215a227b17b4899b15d68c48382ac3c5ff4 (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
# pylint: disable=invalid-name,missing-docstring,pointless-statement
from datetime import datetime
from typing import Union

value = "Hello World"
value.isoformat()  # [no-member]


if isinstance(value, datetime):
    value.isoformat()
else:
    value.isoformat()  # [no-member]


def func():
    if hasattr(value, "load"):
        value.load()

    if getattr(value, "load", None):
        value.load


if value.none_existent():  # [no-member]
    pass

res = value.isoformat() if isinstance(value, datetime) else value


class Base:
    _attr_state: Union[str, datetime] = "Unknown"

    @property
    def state(self) -> Union[str, datetime]:
        return self._attr_state

    def some_function(self) -> str:
        state = self.state
        if isinstance(state, datetime):
            return state.isoformat()
        return str(state)


# https://github.com/pylint-dev/pylint/issues/1990
# Attribute access after 'isinstance' should not cause 'no-member' error
import subprocess  # pylint: disable=wrong-import-position  # noqa: E402

try:
    subprocess.check_call(['ls', '-'])  # Deliberately made error in this line
except Exception as err:
    if isinstance(err, subprocess.CalledProcessError):
        print(f'Subprocess error occurred. Return code: {err.returncode}')
    else:
        print(f'An error occurred: {str(err)}')
    raise


# https://github.com/pylint-dev/pylint/issues/4168
# 'encode' for 'arg' should not cause 'no-member' error
mixed_tuple = (b"a", b"b", b"c", b"d")
byte_tuple = [arg.encode('utf8') if isinstance(arg, str) else arg for arg in mixed_tuple]

for arg in mixed_tuple:
    if isinstance(arg, str):
        print(arg.encode('utf8'))
    else:
        print(arg)


# https://github.com/pylint-dev/pylint/issues/1162
# Attribute access after 'isinstance' should not cause 'no-member' error
class FoobarException(Exception):
    foobar = None

try:  # noqa: E305
    pass
except Exception as ex:
    if isinstance(ex, FoobarException):
        ex.foobar
    raise