# Copyright (c) 2011 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.

[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

# Add <file or directory> to the black list. It should be a base name, not a
# path. You may set this option multiple times.
#ignore=CVS

# 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.cros.commands.lint


[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.
#enable=

# Disable 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 (only on the command line, not in the configuration file where
# it should appear only once).
# C0103: Invalid name "LOADERS" (should match [a-z_][a-z0-9_]{2,30}$)
# C0111: Missing docstring
# C0302: Too many lines in module (N)
# E1103: Instance has no '*' member (but some types could not be inferred)
# I0011: Locally disabling warning.
# R0201: Method could be a function
# R0902: Too many instance attributes (N/7)
# R0903: Too few public methods (N/2)
# R0911: Too many return statements (N/6)
# R0912: Too many branches (N/12)
# R0913: Too many arguments (N/5)
# R0914: Too many local variables (N/15)
# R0915: Too many statements (N/50)
# W0122: Use of the exec statement
# W0141: Used builtin function ''
# W0142: Used * or ** magic
# W0403: Relative import 'constants', should be 'chromite.buildbot.constants'
# W0511: Used when a warning note as FIXME or XXX is detected.
# W0703: Catching too general exception Exception.
# R0904: Too many public methods
# R0921: Abstract class not referenced.
# R0922: Abstract class is only referenced N times.
disable=C0103,C0111,C0302,E1103,I0011,R0201,R0902,R0903,R0911,R0912,R0913,R0914,R0915,W0122,W0141,W0142,W0403,W0511,W0703,R0904,R0921,R0922


[REPORTS]

# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html
#output-format=text

# Include message's id in output
# CHANGE: Include message ids in output.
include-ids=yes

# 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

# 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

# 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=SQLObject

# 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


[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
#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
#
# 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=_|dummy

# 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
#deprecated-modules=regsub,string,TERMIOS,Bastion,rexec

# 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=
