blob: e68755c674ee998db88020dcdc5faa32100ebb10 [file] [log] [blame]
Mehrdad Afsharib9424d02018-04-18 12:30:28 -07001[VARIABLES]
2
3# TODO(https://github.com/PyCQA/pylint/issues/1345): How does the inspection
4# not include "unused_" and "ignored_" by default?
5dummy-variables-rgx=^ignored_|^unused_
6
7[DESIGN]
8
9# NOTE(nathaniel): Not particularly attached to this value; it just seems to
10# be what works for us at the moment (excepting the dead-code-walking Beta
11# API).
12max-args=6
13
14[MISCELLANEOUS]
15
16# NOTE(nathaniel): We are big fans of "TODO(<issue link>): " and
17# "NOTE(<username or issue link>): ". We do not allow "TODO:",
18# "TODO(<username>):", "FIXME:", or anything else.
19notes=FIXME,XXX
20
21[MESSAGES CONTROL]
22
Eric Gribkofff8cf7ee2018-06-25 10:25:28 -070023extension-pkg-whitelist=grpc._cython.cygrpc
24
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070025disable=
26 # These suppressions are specific to tests:
27 #
28 # TODO(https://github.com/grpc/grpc/issues/261): investigate
29 # each of the following one by one and consider eliminating
30 # the suppression category.
31 # Eventually, the hope is to eliminate the .pylintrc-tests
32 # altogether and rely on .pylintrc for everything.
33 pointless-statement,
34 no-member,
35 no-self-use,
36 attribute-defined-outside-init,
37 unused-argument,
38 unused-variable,
39 unused-import,
40 redefined-builtin,
41 too-many-public-methods,
42 too-many-locals,
43 redefined-variable-type,
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070044 redefined-outer-name,
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070045 ungrouped-imports,
46 too-many-branches,
47 too-many-arguments,
48 too-many-format-args,
49 too-many-return-statements,
50 too-many-statements,
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070051 line-too-long,
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070052 wrong-import-position,
53 wrong-import-order,
Mehrdad Afsharib9424d02018-04-18 12:30:28 -070054 # -- END OF TEST-SPECIFIC SUPPRESSIONS --
55
56
57 # TODO(https://github.com/PyCQA/pylint/issues/59#issuecomment-283774279):
58 # Enable cyclic-import after a 1.7-or-later pylint release that
59 # recognizes our disable=cyclic-import suppressions.
60 cyclic-import,
61 # TODO(https://github.com/grpc/grpc/issues/8622): Enable this after the
62 # Beta API is removed.
63 duplicate-code,
64 # TODO(https://github.com/grpc/grpc/issues/261): Doesn't seem to
65 # understand enum and concurrent.futures; look into this later with the
66 # latest pylint version.
67 import-error,
68 # TODO(https://github.com/grpc/grpc/issues/261): Enable this one.
69 # Should take a little configuration but not much.
70 invalid-name,
71 # TODO(https://github.com/grpc/grpc/issues/261): This doesn't seem to
72 # work for now? Try with a later pylint?
73 locally-disabled,
74 # NOTE(nathaniel): What even is this? *Enabling* an inspection results
75 # in a warning? How does that encourage more analysis and coverage?
76 locally-enabled,
77 # NOTE(nathaniel): We don't write doc strings for most private code
78 # elements.
79 missing-docstring,
80 # NOTE(nathaniel): In numeric comparisons it is better to have the
81 # lesser (or lesser-or-equal-to) quantity on the left when the
82 # expression is true than it is to worry about which is an identifier
83 # and which a literal value.
84 misplaced-comparison-constant,
85 # NOTE(nathaniel): Our completely abstract interface classes don't have
86 # constructors.
87 no-init,
88 # TODO(https://github.com/grpc/grpc/issues/261): Doesn't yet play
89 # nicely with some of our code being implemented in Cython. Maybe in a
90 # later version?
91 no-name-in-module,
92 # TODO(https://github.com/grpc/grpc/issues/261): Suppress these where
93 # the odd shape of the authentication portion of the API forces them on
94 # us and enable everywhere else.
95 protected-access,
96 # NOTE(nathaniel): Pylint and I will probably never agree on this.
97 too-few-public-methods,
98 # NOTE(nathaniel): Pylint and I wil probably never agree on this for
99 # private classes. For public classes maybe?
100 too-many-instance-attributes,
101 # NOTE(nathaniel): Some of our modules have a lot of lines... of
102 # specification and documentation. Maybe if this were
103 # lines-of-code-based we would use it.
104 too-many-lines,
105 # TODO(https://github.com/grpc/grpc/issues/261): Maybe we could have
106 # this one if we extracted just a few more helper functions...
107 too-many-nested-blocks,
Mehrdad Afshari7cd4ee72018-06-08 08:16:31 -0700108 # TODO(https://github.com/grpc/grpc/issues/261): Disable unnecessary
109 # super-init requirement for abstract class implementations for now.
Mehrdad Afshariadedd432018-06-07 23:40:03 -0700110 super-init-not-called,
Mehrdad Afshari7cd4ee72018-06-08 08:16:31 -0700111 # NOTE(nathaniel): A single statement that always returns program
112 # control is better than two statements the first of which sometimes
113 # returns program control and the second of which always returns
114 # program control. Probably generally, but definitely in the cases of
115 # if:/else: and for:/else:.
116 useless-else-on-loop,
117 no-else-return,