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