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