aboutsummaryrefslogtreecommitdiff
path: root/.pylintrc-tests
blob: fffb08783a0fbe624c1b46cd5cf1cb70d80561bf (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[MASTER]
ignore=
	src/python/grpcio_tests/tests/unit/beta,
	src/python/grpcio_tests/tests/unit/framework,
	src/python/grpcio_tests/tests/unit/framework/common,
	src/python/grpcio_tests/tests/unit/framework/foundation,

[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,
	# NOTE(lidiz): Python 3 make object inheritance default, but not PY2
	useless-object-inheritance,
	# NOTE(lidiz): the import order will be enforced by isort instead
	wrong-import-order,
	# TODO(https://github.com/PyCQA/pylint/issues/3882): Upgrade Pylint
	unsubscriptable-object,
  # NOTE(sergiitk): yapf compatibility, ref #25071
  bad-continuation,