[MASTER] ignore= src/python/grpcio/grpc/beta, src/python/grpcio/grpc/framework, src/python/grpcio/grpc/framework/common, src/python/grpcio/grpc/framework/foundation, src/python/grpcio/grpc/framework/interfaces, extension-pkg-whitelist=grpc._cython.cygrpc [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=14 max-parents=8 [MISCELLANEOUS] # NOTE(nathaniel): We are big fans of "TODO(): " and # "NOTE(): ". We do not allow "TODO:", # "TODO():", "FIXME:", or anything else. notes=FIXME,XXX [MESSAGES CONTROL] disable= # 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,