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