[MAIN] # Pickle collected data for later comparisons. persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= pylint_quotes, pylint.extensions.no_self_use # Configure quote preferences. string-quote = single-avoid-escape triple-quote = double docstring-quote = double [MESSAGES CONTROL] # Disable the message, report, category or checker with the given id(s). disable=duplicate-code, fixme, invalid-name, locally-disabled, locally-enabled, missing-docstring, too-few-public-methods, too-many-instance-attributes, # Pylint, or at least v1.5.6, does not properly handle adding comments between # lines of disable= entries, nor does it allow multiple disable= lines, so # we can't comment inline about why any of the above can't be removed. Thus, # that information is here. # duplicate-code # There is a bug in Pylint that prevents duplicate-code from being disabled for # blocks of code, see https://github.com/PyCQA/pylint/issues/214. Since # duplicate-code causes parts of the harness_script strings to be detected as # duplicates, and there isn't a good solution to actually fix that, we need to # keep this disabled until a fix is implemented and the Pylint version we use is # upgraded. # fixme # This complains about TODOs, which are perfectly valid to have. # invalid-name # The default regular expressions for name validation don't like the conventions # many Chromium Python files use, namely the use of upper camel case for method # names. The regular expressions could be updated to handle this properly, but # that would likely be part of a repo-wide linter update. # locally-disabled/locally-enabled # There are valid cases where we want to selectively enable/disable lint errors # in a particular file/scope, e.g. allowing protected access in unittests. # missing-docstring # Docstrings are important, and proper use of them should be enforced. However, # requiring a docstring on *every* method and class is overkill, as many are # self-documenting due to being short and well-named. # too-few-public-methods # This is supposedly to catch "functions disguised as classes", but we have # never had issues with that. We do, however, use a handful of struct-like # classes, which this complains about. # too-many-instance-attributes # Only ends up complaining about struct-like classes. So, like # too-few-public-methods, leave disabled instead of disabling on a per-class # basis. # Other notes # too-many-arguments # This one is borderline. There are legitimate cases of having too many # arguments, but it also tends to flag cases that can't be fixed more often # than fixable issues. There also doesn't appear to be an easy way to bump up # the limit, as 5 is pretty small. [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html output-format=text # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". files-output=no # Tells whether to display a full report or only the messages # CHANGED: reports=no # Activate the evaluation score. score=no # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) [VARIABLES] # A regular expression matching the beginning of the name of dummy variables # (i.e. not used). dummy-variables-rgx=_|dummy [TYPECHECK] # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). ignored-classes=SQLObject, twisted.internet.reactor, hashlib, google.appengine.api.memcache # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. Python regular # expressions are accepted. generated-members=REQUEST, acl_users, aq_parent, multiprocessing.managers.SyncManager [FORMAT] # Maximum number of characters on a single line. max-line-length=80 # Maximum number of lines in a module max-module-lines=1000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' [BASIC] # List of builtins function names that should not be used, separated by a comma bad-functions=map, filter, apply, input # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ # Regular expression which should only match correct module level names const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ # Regular expression which should only match correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ # Regular expression which should only match correct function names function-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct method names method-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct instance attribute names attr-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct argument names argument-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct variable names variable-rgx=[a-z_][a-z0-9_]{2,30}$ # Regular expression which should only match correct list comprehension / # generator expression variable names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_ # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # Regular expression which should only match functions or classes name which do # not require a docstring no-docstring-rgx=__.*__ [DESIGN] # Maximum number of arguments for function / method max-args=5 # Argument names that match this expression will be ignored. Default to name # with leading underscore ignored-argument-names=_.* # Maximum number of locals for function / method body max-locals=15 # Maximum number of return / yield for function / method body max-returns=6 # Maximum number of branch for function / method body max-branchs=12 # Maximum number of statements in function / method body max-statements=50 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=2 # Maximum number of public methods for a class (see R0904). max-public-methods=20 [CLASSES] # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub, string, TERMIOS, Bastion, rexec [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception" overgeneral-exceptions=Exception