ronnie
2022-10-14 1504bb53e29d3d46222c0b3ea994fc494b48e153
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
[VARIABLES]
 
# TODO(https://github.com/PyCQA/pylint/issues/1345): How does the inspection
# not include "unused_" and "ignored_" by default?
dummy-variables-rgx=^ignored_|^unused_
 
[DESIGN]
 
# NOTE(nathaniel): Not particularly attached to this value; it just seems to
# be what works for us at the moment (excepting the dead-code-walking Beta
# API).
max-args=6
 
[MISCELLANEOUS]
 
# NOTE(nathaniel): We are big fans of "TODO(<issue link>): " and
# "NOTE(<username or issue link>): ". We do not allow "TODO:",
# "TODO(<username>):", "FIXME:", or anything else.
notes=FIXME,XXX
 
[MESSAGES CONTROL]
 
extension-pkg-whitelist=grpc._cython.cygrpc
 
disable=
   # These suppressions are specific to tests:
   #
   # TODO(https://github.com/grpc/grpc/issues/261): investigate
   # each of the following one by one and consider eliminating
   # the suppression category.
   # Eventually, the hope is to eliminate the .pylintrc-tests
   # altogether and rely on .pylintrc for everything.
   pointless-statement,
   no-member,
   no-self-use,
   attribute-defined-outside-init,
   unused-argument,
   unused-variable,
   unused-import,
   redefined-builtin,
   too-many-public-methods,
   too-many-locals,
   redefined-variable-type,
   redefined-outer-name,
   ungrouped-imports,
   too-many-branches,
   too-many-arguments,
   too-many-format-args,
   too-many-return-statements,
   too-many-statements,
   line-too-long,
   wrong-import-position,
   wrong-import-order,
   # -- END OF TEST-SPECIFIC SUPPRESSIONS --
 
 
   # TODO(https://github.com/PyCQA/pylint/issues/59#issuecomment-283774279):
   # Enable cyclic-import after a 1.7-or-later pylint release that
   # recognizes our disable=cyclic-import suppressions.
   cyclic-import,
   # TODO(https://github.com/grpc/grpc/issues/8622): Enable this after the
   # Beta API is removed.
   duplicate-code,
   # TODO(https://github.com/grpc/grpc/issues/261): Doesn't seem to
   # understand enum and concurrent.futures; look into this later with the
   # latest pylint version.
   import-error,
   # TODO(https://github.com/grpc/grpc/issues/261): Enable this one.
   # Should take a little configuration but not much.
   invalid-name,
   # TODO(https://github.com/grpc/grpc/issues/261): This doesn't seem to
   # work for now? Try with a later pylint?
   locally-disabled,
   # NOTE(nathaniel): What even is this? *Enabling* an inspection results
   # in a warning? How does that encourage more analysis and coverage?
   locally-enabled,
   # NOTE(nathaniel): We don't write doc strings for most private code
   # elements.
   missing-docstring,
   # NOTE(nathaniel): In numeric comparisons it is better to have the
   # lesser (or lesser-or-equal-to) quantity on the left when the
   # expression is true than it is to worry about which is an identifier
   # and which a literal value.
   misplaced-comparison-constant,
   # NOTE(nathaniel): Our completely abstract interface classes don't have
   # constructors.
   no-init,
   # TODO(https://github.com/grpc/grpc/issues/261): Doesn't yet play
   # nicely with some of our code being implemented in Cython. Maybe in a
   # later version?
   no-name-in-module,
   # TODO(https://github.com/grpc/grpc/issues/261): Suppress these where
   # the odd shape of the authentication portion of the API forces them on
   # us and enable everywhere else.
   protected-access,
   # NOTE(nathaniel): Pylint and I will probably never agree on this.
   too-few-public-methods,
   # NOTE(nathaniel): Pylint and I wil probably never agree on this for
   # private classes. For public classes maybe?
   too-many-instance-attributes,
   # NOTE(nathaniel): Some of our modules have a lot of lines... of
   # specification and documentation. Maybe if this were
   # lines-of-code-based we would use it.
   too-many-lines,
   # TODO(https://github.com/grpc/grpc/issues/261): Maybe we could have
   # this one if we extracted just a few more helper functions...
   too-many-nested-blocks,
   # TODO(https://github.com/grpc/grpc/issues/261): Disable unnecessary
   # super-init requirement for abstract class implementations for now.
   super-init-not-called,
   # NOTE(nathaniel): A single statement that always returns program
   # control is better than two statements the first of which sometimes
   # returns program control and the second of which always returns
   # program control. Probably generally, but definitely in the cases of
   # if:/else: and for:/else:.
   useless-else-on-loop,
   no-else-return,