1[MASTER]
2ignore=
3	src/python/grpcio/grpc/beta,
4	src/python/grpcio/grpc/framework,
5	src/python/grpcio/grpc/framework/common,
6	src/python/grpcio/grpc/framework/foundation,
7	src/python/grpcio/grpc/framework/interfaces,
8
9[VARIABLES]
10
11# TODO(https://github.com/PyCQA/pylint/issues/1345): How does the inspection
12# not include "unused_" and "ignored_" by default?
13dummy-variables-rgx=^ignored_|^unused_
14
15[DESIGN]
16
17# NOTE(nathaniel): Not particularly attached to this value; it just seems to
18# be what works for us at the moment (excepting the dead-code-walking Beta
19# API).
20max-args=6
21
22[MISCELLANEOUS]
23
24# NOTE(nathaniel): We are big fans of "TODO(<issue link>): " and
25# "NOTE(<username or issue link>): ". We do not allow "TODO:",
26# "TODO(<username>):", "FIXME:", or anything else.
27notes=FIXME,XXX
28
29[MESSAGES CONTROL]
30
31disable=
32	# -- START OF EXAMPLE-SPECIFIC SUPPRESSIONS --
33	no-self-use,
34	unused-argument,
35	unused-variable,
36	# -- END OF EXAMPLE-SPECIFIC SUPPRESSIONS --
37
38	# TODO(https://github.com/PyCQA/pylint/issues/59#issuecomment-283774279):
39	# Enable cyclic-import after a 1.7-or-later pylint release that
40	# recognizes our disable=cyclic-import suppressions.
41	cyclic-import,
42	# TODO(https://github.com/grpc/grpc/issues/8622): Enable this after the
43	# Beta API is removed.
44	duplicate-code,
45	# TODO(https://github.com/grpc/grpc/issues/261): Doesn't seem to
46	# understand enum and concurrent.futures; look into this later with the
47	# latest pylint version.
48	import-error,
49	# TODO(https://github.com/grpc/grpc/issues/261): Enable this one.
50	# Should take a little configuration but not much.
51	invalid-name,
52	# TODO(https://github.com/grpc/grpc/issues/261): This doesn't seem to
53	# work for now? Try with a later pylint?
54	locally-disabled,
55	# NOTE(nathaniel): What even is this? *Enabling* an inspection results
56	# in a warning? How does that encourage more analysis and coverage?
57	locally-enabled,
58	# NOTE(nathaniel): We don't write doc strings for most private code
59	# elements.
60	missing-docstring,
61	# NOTE(nathaniel): In numeric comparisons it is better to have the
62	# lesser (or lesser-or-equal-to) quantity on the left when the
63	# expression is true than it is to worry about which is an identifier
64	# and which a literal value.
65	misplaced-comparison-constant,
66	# NOTE(nathaniel): Our completely abstract interface classes don't have
67	# constructors.
68	no-init,
69	# TODO(https://github.com/grpc/grpc/issues/261): Doesn't yet play
70	# nicely with some of our code being implemented in Cython. Maybe in a
71	# later version?
72	no-name-in-module,
73	# TODO(https://github.com/grpc/grpc/issues/261): Suppress these where
74	# the odd shape of the authentication portion of the API forces them on
75	# us and enable everywhere else.
76	protected-access,
77	# NOTE(nathaniel): Pylint and I will probably never agree on this.
78	too-few-public-methods,
79	# NOTE(nathaniel): Pylint and I wil probably never agree on this for
80	# private classes. For public classes maybe?
81	too-many-instance-attributes,
82	# NOTE(nathaniel): Some of our modules have a lot of lines... of
83	# specification and documentation. Maybe if this were
84	# lines-of-code-based we would use it.
85	too-many-lines,
86	# TODO(https://github.com/grpc/grpc/issues/261): Maybe we could have
87	# this one if we extracted just a few more helper functions...
88	too-many-nested-blocks,
89	# TODO(https://github.com/grpc/grpc/issues/261): Disable unnecessary
90	# super-init requirement for abstract class implementations for now.
91	super-init-not-called,
92	# NOTE(nathaniel): A single statement that always returns program
93	# control is better than two statements the first of which sometimes
94	# returns program control and the second of which always returns
95	# program control. Probably generally, but definitely in the cases of
96	# if:/else: and for:/else:.
97	useless-else-on-loop,
98	no-else-return,
99	# NOTE(lidiz): Python 3 make object inheritance default, but not PY2
100	useless-object-inheritance,
101