blob: 4865b0769773ff863a2dd198e10efaaf3a94a6fd [file] [log] [blame] [edit]
# Copyright 2011 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
[MASTER]
# Specify a configuration file.
#rcfile=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Profiled execution.
#profile=no
# Do not lint files or directories matching the regex patterns.
# It matches against base names, not paths.
ignore-patterns=
.*_pb2\.py$,
.*third_party\/.*.py$
# 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=
chromite.cli.cros.lint,
pylint.extensions.bad_builtin,
pylint.extensions.docstyle,
pylint.extensions.redefined_variable_type,
pylint.extensions.overlapping_exceptions,
[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 import-outside-toplevel.
# TODO: Re-enable try-except-raise.
# TODO(b/236161656): Re-enable consider-using-f-string.
# ungrouped-imports: We let isort handle this.
# wrong-import-order: We let isort handle this.
disable=
broad-except,
consider-using-f-string,
consider-iterating-dictionary,
fixme,
file-ignored,
keyword-arg-before-vararg,
import-outside-toplevel,
inconsistent-return-statements,
invalid-name,
locally-disabled,
locally-enabled,
missing-function-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,
ungrouped-imports,
wrong-import-order,
[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
# CHANGE: No report.
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)
# Add a comment according to your evaluation note. This is used by the global
# evaluation report (RP0004).
#comment=no
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
#notes=FIXME,XXX,TODO
[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*(# )?<?https?://\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).
# CHANGE: Use " " instead.
indent-string=" "
[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=hashlib,numpy
# When zope mode is activated, add a predefined set of Zope acquired attributes
# to generated-members.
#zope=no
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E0201 when accessed.
# CHANGE: Added 'AndRaise', 'AndReturn', 'InAnyOrder' and 'MultipleTimes' for pymox.
# CHANGE: Added tempdir for @osutils.TempDirDecorator.
generated-members=REQUEST,acl_users,aq_parent,AndRaise,AndReturn,InAnyOrder,MultipleTimes,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=
libcst,
psutil,
pytest,
opentelemetry,
[BASIC]
# Required attributes for module, separated by a comma
#required-attributes=
# 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 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
#
# 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)$
# 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=__.*__
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=20
# Ignore comments when computing similarities.
#ignore-comments=yes
# Ignore docstrings when computing similarities.
#ignore-docstrings=yes
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
#init-import=no
# A regular expression matching the beginning of the name of dummy variables
# (i.e. not used).
dummy-variables-rgx=_|unused_
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
#additional-builtins=
[CLASSES]
# List of interface methods to ignore, separated by a comma. This is used for
# instance to not check methods defines in Zope's Interface base class.
#ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
# List of method names used to declare (i.e. assign) instance attributes.
#defining-attr-methods=__init__,__new__,setUp
[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=10
# 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
[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,
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
#import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
#ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
#int-import-graph=
# 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,
libcst,
magic,
mock,
oauth2client,
opentelemetry,
portage,
psutil,
pylint,
pytest,
requests,
six,
sqlalchemy,
yaml,
[LOGGING]
# Apply logging string format checks to calls on these modules.
logging-modules=
logging,