[MASTER]

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=lxml,pydantic


[MESSAGES CONTROL]

# 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"
#
disable=
    bad-continuation,
    broad-except,
    duplicate-code,
    fixme,
    protected-access,
    logging-fstring-interpolation,
    missing-docstring,
    no-self-use,
    redefined-outer-name,
    ungrouped-imports,
    wrong-import-order,
    # handled by black
    format,
    # TODO: temporary workaround for python 3.9
    unsubscriptable-object,
    inherit-non-class,
    consider-using-f-string


[FORMAT]

# Maximum number of lines in a module
max-module-lines=2000


[BASIC]

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

# Regular expression matching correct names
variable-rgx=[a-zA-Z_][a-zA-Z0-9_]{0,30}$


[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 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
ignored-modules=pytest

# List of decorators that create context managers from functions, such as
# contextlib.contextmanager.
contextmanager-decorators=contextlib.contextmanager


[DESIGN]

# Maximum number of arguments for function / method
max-args=10
# Maximum number of locals for function / method body
max-locals=30
# Maximum number of attributes for a class (see R0902).
max-attributes=25
# Minimum number of public methods for a class (see R0903).
min-public-methods=0
# Maximum number of public methods for a class (see R0904).
max-public-methods=25
