From 9104884a1903606831b15476b01ef9f87a89b29b Mon Sep 17 00:00:00 2001 From: Nathaniel Manista Date: Sat, 24 Jun 2017 21:16:53 +0000 Subject: [PATCH] Clean up and opinionate .pylintrc --- .pylintrc | 68 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/.pylintrc b/.pylintrc index 188b7d7058e..8447821b4e5 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,15 +1,18 @@ [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=6 [MISCELLANEOUS] + # NOTE(nathaniel): We are big fans of "TODO(): " and # "NOTE(): ". We do not allow "TODO:", # "TODO():", "FIXME:", or anything else. @@ -17,21 +20,50 @@ notes=FIXME,XXX [MESSAGES CONTROL] -#TODO: Enable missing-docstring -#TODO: Enable too-few-public-methods -#TODO: Enable no-init -#TODO: Enable duplicate-code -#TODO: Enable invalid-name -#TODO: Enable locally-disabled -#TODO: Enable protected-access -#TODO: Enable no-name-in-module -# 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. -#TODO: Enable too-many-instance-attributes -#TODO: Enable too-many-lines -#TODO: Enable import-error -#TODO: Enable useless-else-on-loop -#TODO: Enable too-many-nested-blocks - -disable=missing-docstring,too-few-public-methods,no-init,duplicate-code,invalid-name,locally-disabled,protected-access,no-name-in-module,cyclic-import,too-many-instance-attributes,too-many-lines,import-error,useless-else-on-loop,too-many-nested-blocks +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): We don't write doc strings for most private code + # elements. + missing-docstring, + # 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, + # NOTE(nathaniel): I have disputed the premise of this inspection from + # the beginning and will continue to do so until it goes away for good. + useless-else-on-loop,