[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

# Allow longer methods than the default.
# [invalid-name]
method-rgx=[a-z_][a-z0-9_]{2,35}$

# 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=_.*
