# Copyright 2021 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # This file is copied Chromium OS platform2, as seen in the following link: # https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pylintrc # Please keep in sync. # NB: This is a fork of chromite/pylintrc with indent set to 4. # Everything else is kept the same. [MASTER] # Add files or directories matching the regex patterns to the ignore list. # The regex matches against base names, not paths. ignore-patterns= .*_pb2\.py$, .*third_party\/.*.py$ # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= chromite.cli.cros.lint, pylint.extensions.bad_builtin, pylint.extensions.docstyle, pylint.extensions.redefined_variable_type, pylint.extensions.overlapping_exceptions, # Configure quote preferences. string-quote = single-avoid-escape triple-quote = double docstring-quote = double [MESSAGES CONTROL] # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple times. # eq-without-hash: We omit this as we don't require all objects be hashable. # We'll wait for unittest coverage to detect missing __hash__ on objects. # no-absolute-import: We don't seem to rely on this behavior, so don't enforce # using this future import everywhere. # round-builtin: We omit this as all our usage of round() is OK with either # Python 2 or 3 behavior (and probably leans towards 3 anyways). enable= apply-builtin, backtick, bad-python3-import, basestring-builtin, buffer-builtin, cmp-builtin, cmp-method, coerce-builtin, coerce-method, delslice-method, deprecated-itertools-function, deprecated-str-translate-call, deprecated-string-function, deprecated-types-field, dict-items-not-iterating, dict-iter-method, dict-keys-not-iterating, dict-values-not-iterating, dict-view-method, div-method, exception-message-attribute, execfile-builtin, file-builtin, filter-builtin-not-iterating, getslice-method, hex-method, idiv-method, import-star-module-level, indexing-exception, intern-builtin, invalid-str-codec, long-builtin, long-suffix, map-builtin-not-iterating, metaclass-assignment, next-method-called, next-method-defined, nonzero-method, oct-method, old-ne-operator, old-octal-literal, old-raise-syntax, parameter-unpacking, print-statement, raising-string, range-builtin-not-iterating, raw_input-builtin, rdiv-method, reduce-builtin, reload-builtin, setslice-method, standarderror-builtin, sys-max-int, unichr-builtin, unicode-builtin, unpacking-in-except, using-cmp-argument, xrange-builtin, zip-builtin-not-iterating, # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once). You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use "--disable=all --enable=classes # --disable=W". # We leave many of the style warnings to judgement/peer review. # TODO: We need to re-enable broad-except, but requires cleaning up our code. # TODO: Re-enable redefined-variable-type. # TODO: Re-enable inconsistent-return-statements. # TODO: Re-enable keyword-arg-before-vararg once we're on Python 3-only. # TODO: Re-enable useless-object-inheritance once we're on Python 3-only and # we update the style guide. # TODO: Re-enable import-outside-toplevel. # TODO: Re-enable unnecessary-comprehension. # TODO: Re-enable consider-using-dict-comprehension. # TODO: Re-enable consider-using-set-comprehension. # TODO: Re-enable consider-using-in. # TODO: Re-enable try-except-raise. # TODO: Re-enable chained-comparison. disable= broad-except, chained-comparison, consider-iterating-dictionary, consider-using-dict-comprehension, consider-using-in, consider-using-set-comprehension, fixme, file-ignored, keyword-arg-before-vararg, import-outside-toplevel, inconsistent-return-statements, invalid-name, locally-disabled, locally-enabled, missing-docstring, no-member, no-else-break, no-else-continue, no-else-raise, no-else-return, no-self-use, raise-missing-from, redefined-variable-type, relative-import, super-with-arguments, too-few-public-methods, too-many-arguments, too-many-boolean-expressions, too-many-branches, too-many-instance-attributes, too-many-lines, too-many-locals, too-many-nested-blocks, too-many-public-methods, too-many-return-statements, too-many-statements, try-except-raise, unnecessary-comprehension, useless-object-inheritance, [REPORTS] # Tells whether to display a full report or only the messages # CHANGE: No report. reports=no # Activate the evaluation score. score=no [FORMAT] # Maximum number of characters on a single line. max-line-length=80 # Disable line length enforcement for import statements or comment lines # containing URLs. ignore-long-lines=(^(import|from))|(^\s*(# )??$) # 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=' ' [TYPECHECK] # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). ignored-classes=hashlib,numpy # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. # CHANGE: Added tempdir for @osutils.TempDirDecorator. generated-members=REQUEST,acl_users,aq_parent,tempdir # List of modules for which member attributes should not be checked. # Modules listed here will not trigger import errors even if the linter can't # import them. # # pytest: Made available by our testing virtualenv and can be assumed exists. ignored-modules=pytest [BASIC] # List of builtins function names that should not be used, separated by a comma. # exit & quit are for the interactive interpreter shell only. # https://docs.python.org/3/library/constants.html#constants-added-by-the-site-module bad-functions= apply, exit, filter, map, quit, reduce, # Regular expression which should only match correct function names # # CHANGE: The ChromiumOS standard is different than PEP-8, so we need to # redefine this. # # Common exceptions to ChromiumOS standard: # - main: Standard for main function function-rgx=([A-Z_][a-zA-Z0-9]{2,30}|main)$ # Regular expression which should only match correct method names # # CHANGE: The ChromiumOS standard is different than PEP-8, so we need to # redefine this. Here's what we allow: # - CamelCaps, starting with a capital letter. No underscores in function # names. Can also have a "_" prefix (private method) or a "test" prefix # (unit test). # - Methods that look like __xyz__, which are used to do things like # __init__, __del__, etc. # - setUp, tearDown: For unit tests. method-rgx=((_|test)?[A-Z][a-zA-Z0-9]{2,30}|__[a-z]+__|setUp|tearDown)$ [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=20 [VARIABLES] # A regular expression matching the beginning of the name of dummy variables # (i.e. not used). dummy-variables-rgx=_|unused_ [DESIGN] # Maximum number of parents for a class (see R0901). max-parents=10 [IMPORTS] # Deprecated modules which should not be used, separated by a comma. # __builtin__: Use the 'six.moves.builtins' module instead # (or 'builtins' in Python 3). # apiclient: Use the 'googleapiclient' module instead. # Bastion: Dropped in Python 3. # ConfigParser: Use the 'six.moves.configparser' module instead # (or 'configparser' in Python 3). # cookielib: Use the 'six.moves.http_cookiejar' module instead # (or 'http.cookiejar' in Python 3). # cPickle: Use the 'pickle' module instead. # cStringIO: Use 'io.StringIO' or 'io.BytesIO' instead. # exceptions: Dropped in Python 3. # HTMLParser: Use the 'six.moves.html_parser' module instead # (or 'html.parser' in Python 3). # httplib: Use the 'six.moves.http_client' module instead # (or 'http.client' in Python 3). # md5: Use the 'hashlib' module instead. # mox: Use the 'mock' module instead. # optparse: Use the 'argparse' module instead. # Queue: Use the 'six.moves.queue' module instead (or 'queue' in Python 3). # regsub: Use the 're' module instead. # rexec: Dropped in Python 3. # StringIO: Use 'io.StringIO' or 'io.BytesIO' instead. # TERMIOS: Use the 'termios' module instead. # urllib2: Use the 'six.moves.urllib' module instead # (or 'urllib.request' in Python 3). # urlparse: Use the 'six.moves.urllib' module instead # (or 'urllib.parse' in Python 3). deprecated-modules= __builtin__, apiclient, Bastion, ConfigParser, cookielib, cPickle, cStringIO, exceptions, HTMLParser, httplib, md5, mock, mox, optparse, Queue, regsub, rexec, StringIO, TERMIOS, urllib2, urlparse, # Force import order to recognize a module as part of the standard # compatibility libraries. known-standard-library= # Force import order to recognize a module as part of a third party library. known-third-party= _emerge, apiclient, elftools, gcloud, google, googleapiclient, httplib2, jinja2, jsonschema, lddtree, magic, mock, oauth2client, portage, pylint, pytest, requests, six, sqlalchemy, yaml, [LOGGING] # Apply logging string format checks to calls on these modules. logging-modules= logging,