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