# PyLint config for apitools code.
#
# NOTES:
#
# - Rules for test / demo code are generated into 'pylintrc_reduced'
#   as deltas from this configuration by the 'run_pylint.py' script.
#
# - 'RATIONALE:  API mapping' as a defense for non-default settings is
#   based on the fact that this library maps APIs which are outside our
#   control, and adhering to the out-of-the-box defaults would induce
#   breakage / complexity in those mappings
#
[MASTER]

# Specify a configuration file.
# DEFAULT:  rcfile=

# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
# DEFAULT: init-hook=

# Profiled execution.
# DEFAULT:  profile=no

# Add files or directories to the blacklist. They should be base names, not
# paths.
# DEFAULT:  ignore=CVS
# NOTE: This path must be relative due to the use of
#       os.walk in astroid.modutils.get_module_files.

# Pickle collected data for later comparisons.
# DEFAULT:  persistent=yes

# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
# DEFAULT:  load-plugins=

# DEPRECATED
# DEFAULT:  include-ids=no

# DEPRECATED
# DEFAULT:  symbols=no


[MESSAGES CONTROL]

# TODO: remove cyclic-import.
disable =
    cyclic-import,
    fixme,
    import-error,
    locally-disabled,
    locally-enabled,
    no-member,
    no-name-in-module,
    no-self-use,
    super-on-old-class,
    too-many-arguments,
    too-many-function-args,


[REPORTS]

# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
# DEFAULT:  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]".
# DEFAULT:  files-output=no

# Tells whether to display a full report or only the messages
# DEFAULT:  reports=yes
# RATIONALE:  run from Travis / tox, and don't need / want to parse output.
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).
# DEFAULT:  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).
# DEFAULT:  comment=no

# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=


[SIMILARITIES]

# Minimum lines number of a similarity.
# DEFAULT:  min-similarity-lines=4
min-similarity-lines=15

# Ignore comments when computing similarities.
# DEFAULT:  ignore-comments=yes

# Ignore docstrings when computing similarities.
# DEFAULT:  ignore-docstrings=yes

# Ignore imports when computing similarities.
# DEFAULT:  ignore-imports=no
ignore-imports=yes


[VARIABLES]

# Tells whether we should check for unused import in __init__ files.
# DEFAULT:  init-import=no

# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_)


# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
# DEFAULT:  additional-builtins=


[LOGGING]

# Logging modules to check that the string format arguments are in logging
# function parameter format
# DEFAULT:  logging-modules=logging


[FORMAT]

# Maximum number of characters on a single line.
# DEFAULT:  max-line-length=80

# Regexp for a line that is allowed to be longer than the limit.
# DEFAULT:  ignore-long-lines=^\s*(# )?<?https?://\S+>?$

# Allow the body of an if to be on the same line as the test if there is no
# else.
# DEFAULT:  single-line-if-stmt=no

# List of optional constructs for which whitespace checking is disabled
# DEFAULT:  no-space-check=trailing-comma,dict-separator
# RATIONALE: pylint ignores whitespace checks around the
#            constructs "dict-separator" (cases like {1:2}) and
#            "trailing-comma" (cases like {1: 2, }).
#            By setting "no-space-check" to empty whitespace checks will be
#            enforced around both constructs.
no-space-check =

# Maximum number of lines in a module
# DEFAULT:  max-module-lines=1000
max-module-lines=1500

# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
# DEFAULT:  indent-string='    '

# Number of spaces of indent required inside a hanging or continued line.
# DEFAULT:  indent-after-paren=4


[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
# DEFAULT:  notes=FIXME,XXX,TODO


[BASIC]

# Regular expression which should only match function or class names that do
# not require a docstring.
# DEFAULT:  no-docstring-rgx=__.*__
no-docstring-rgx=(__.*__|main)

# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
# DEFAULT:  docstring-min-length=-1
docstring-min-length=10

# Regular expression which should only match correct module names. The
# leading underscore is sanctioned for private modules by Google's style
# guide.
module-rgx=^(_?[a-z][a-z0-9_]*)|__init__$

# Regular expression matching correct constant names
# DEFAULT:  const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$

# Regular expression matching correct class attribute names
# DEFAULT:  class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$

# Regular expression matching correct class names
# DEFAULT:  class-rgx=[A-Z_][a-zA-Z0-9]+$
class-rgx=^_?[A-Z][a-zA-Z0-9]*$

# Regular expression which should only match correct function names.
# 'camel_case' and 'snake_case' group names are used for consistency of naming
# styles across functions and methods.
function-rgx=^(?:(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$

# Regular expression which should only match correct method names.
# 'camel_case' and 'snake_case' group names are used for consistency of naming
# styles across functions and methods. 'exempt' indicates a name which is
# consistent with all naming styles.
method-rgx=^(?:(?P<exempt>__[a-z0-9_]+__|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$

# Regular expression matching correct attribute names
# DEFAULT:  attr-rgx=[a-z_][a-z0-9_]{2,30}$
attr-rgx=^_{0,2}[a-z][a-z0-9_]*$

# Regular expression matching correct argument names
# DEFAULT:  argument-rgx=[a-z_][a-z0-9_]{2,30}$
argument-rgx=^[a-z][a-z0-9_]*$

# Regular expression matching correct variable names
# DEFAULT:  variable-rgx=[a-z_][a-z0-9_]{2,30}$
variable-rgx=^[a-z][a-z0-9_]*$

# Regular expression matching correct inline iteration names
# DEFAULT:  inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
inlinevar-rgx=^[a-z][a-z0-9_]*$

# Good variable names which should always be accepted, separated by a comma
# DEFAULT:  good-names=i,j,k,ex,Run,_
good-names=main,_

# Bad variable names which should always be refused, separated by a comma
# DEFAULT:  bad-names=foo,bar,baz,toto,tutu,tata
bad-names=

# List of builtins function names that should not be used, separated by a comma
# <http://go/python-style#Deprecated_Language_Features>
bad-functions=input,apply,reduce


[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).
# DEFAULT:  ignore-mixin-members=yes

# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis
# DEFAULT:  ignored-modules=

# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set).
# DEFAULT:  ignored-classes=SQLObject

# When zope mode is activated, add a predefined set of Zope acquired attributes
# to generated-members.
# DEFAULT:  zope=no

# 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.
# DEFAULT:  generated-members=REQUEST,acl_users,aq_parent


[IMPORTS]

# Deprecated modules which should not be used, separated by a comma
# DEFAULT:  deprecated-modules=regsub,TERMIOS,Bastion,rexec

# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
# DEFAULT:  import-graph=

# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
# DEFAULT:  ext-import-graph=

# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
# DEFAULT:  int-import-graph=


[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.
# DEFAULT:  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.
# DEFAULT:  defining-attr-methods=__init__,__new__,setUp

# List of valid names for the first argument in a class method.
# DEFAULT:  valid-classmethod-first-arg=cls

# List of valid names for the first argument in a metaclass class method.
# DEFAULT:  valid-metaclass-classmethod-first-arg=mcs


[DESIGN]

# Maximum number of arguments for function / method
# DEFAULT:  max-args=5
# RATIONALE:  API-mapping
max-args = 14

# Argument names that match this expression will be ignored. Default to name
# with leading underscore
# DEFAULT:  ignored-argument-names=_.*

# Maximum number of locals for function / method body
# DEFAULT:  max-locals=15
max-locals=24

# Maximum number of return / yield for function / method body
# DEFAULT:  max-returns=6
max-returns=9

# Maximum number of branch for function / method body
# DEFAULT:  max-branches=12
max-branches=21

# Maximum number of statements in function / method body
# DEFAULT:  max-statements=50

# Maximum number of parents for a class (see R0901).
# DEFAULT:  max-parents=7

# Maximum number of attributes for a class (see R0902).
# DEFAULT:  max-attributes=7
# RATIONALE:  API mapping
max-attributes=19

# Minimum number of public methods for a class (see R0903).
# DEFAULT:  min-public-methods=2
# RATIONALE:  context mgrs may have *no* public methods
min-public-methods=0

# Maximum number of public methods for a class (see R0904).
# DEFAULT:  max-public-methods=20
# RATIONALE:  API mapping
max-public-methods=40

[ELIF]
max-nested-blocks=6

[EXCEPTIONS]

# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
# DEFAULT:  overgeneral-exceptions=Exception
