[MASTER]
init-hook='import sys; sys.path.append("scripts")'

[BASIC]
# We're ok with short funtion argument names.
# [invalid-name]
argument-rgx=[a-z_][a-z0-9_]*$

# Allow filter and map.
# [bad-builtin]
bad-functions=input

# We prefer docstrings, but we don't require them on all functions.
# Require them only on long functions (for some value of long).
# [missing-docstring]
docstring-min-length=10

# No upper limit on method names. Pylint <2.1.0 has an upper limit of 30.
# [invalid-name]
method-rgx=[a-z_][a-z0-9_]{2,}$

# Allow module names containing a dash (but no underscore or uppercase letter).
# They are whole programs, not meant to be included by another module.
# [invalid-name]
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+)|[a-z][-0-9a-z]+)$

# Some functions don't need docstrings.
# [missing-docstring]
no-docstring-rgx=(run_)?main$

# We're ok with short local or global variable names.
# [invalid-name]
variable-rgx=[a-z_][a-z0-9_]*$

[DESIGN]
# Allow more than the default 7 attributes.
# [too-many-instance-attributes]
max-attributes=15

[FORMAT]
# Allow longer modules than the default recommended maximum.
# [too-many-lines]
max-module-lines=2000

[MESSAGES CONTROL]
# * locally-disabled, locally-enabled: If we disable or enable a message
#   locally, it's by design. There's no need to clutter the Pylint output
#   with this information.
# * logging-format-interpolation: Pylint warns about things like
#   ``log.info('...'.format(...))``. It insists on ``log.info('...', ...)``.
#   This is of minor utility (mainly a performance gain when there are
#   many messages that use formatting and are below the log level).
#   Some versions of Pylint (including 1.8, which is the version on
#   Ubuntu 18.04) only recognize old-style format strings using '%',
#   and complain about something like ``log.info('{}', foo)`` with
#   logging-too-many-args (Pylint supports new-style formatting if
#   declared globally with logging_format_style under [LOGGING] but
#   this requires Pylint >=2.2).
# * no-else-return: Allow the perfectly reasonable idiom
#    if condition1:
#        return value1
#    else:
#        return value2
# * unnecessary-pass: If we take the trouble of adding a line with "pass",
#   it's because we think the code is clearer that way.
disable=locally-disabled,locally-enabled,logging-format-interpolation,no-else-return,unnecessary-pass

[REPORTS]
# Don't diplay statistics. Just the facts.
reports=no

[VARIABLES]
# Allow unused variables if their name starts with an underscore.
# [unused-argument]
dummy-variables-rgx=_.*
