[MAIN]
# Python code to execute, usually for sys.path manipulation
init-hook='import sys; sys.path.append(".")'

# Files or directories to be skipped
ignore=CVS,.git,__pycache__,.pytest_cache,build,dist

# Use multiple processes to speed up Pylint
jobs=1

[MESSAGES CONTROL]
# Enable the message, report, category or checker with the given id(s)
enable=
    duplicate-code,
    similarities

# Disable specific messages that are too strict for this project
disable=
    missing-module-docstring,
    missing-class-docstring,
    missing-function-docstring,
    too-few-public-methods,
    too-many-arguments,
    too-many-locals,
    too-many-instance-attributes,
    invalid-name

[REPORTS]
# Set the output format
output-format=text

# Tells whether to display a full report or only the messages
reports=yes

# Activate the evaluation score
score=yes

[SIMILARITIES]
# Minimum lines number of a similarity (duplicate code detection)
min-similarity-lines=4

# Ignore comments when computing similarities
ignore-comments=yes

# Ignore docstrings when computing similarities
ignore-docstrings=yes

# Ignore imports when computing similarities
ignore-imports=yes

# Signatures are removed from the similarity computation
ignore-signatures=yes

[FORMAT]
# Maximum number of characters on a single line
max-line-length=120

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

[DESIGN]
# Maximum number of arguments for function / method
max-args=10

# Maximum number of attributes for a class
max-attributes=15

# Maximum number of boolean expressions in an if statement
max-bool-expr=5

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

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

# Maximum number of parents for a class
max-parents=7

# Maximum number of public methods for a class
max-public-methods=20

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

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

[TYPECHECK]
# List of class names for which member attributes should not be checked
ignored-classes=
    optparse.Values,
    thread._local,
    _thread._local

[BASIC]
# Good variable names which should always be accepted
good-names=i,j,k,ex,Run,_,x,y,z,id,fd

# Regular expression matching correct constant names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$

# Regular expression matching correct method names
method-rgx=[a-z_][a-z0-9_]{2,50}$

# Regular expression matching correct function names
function-rgx=[a-z_][a-z0-9_]{2,50}$

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

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

# Regular expression matching correct argument names
argument-rgx=[a-z_][a-z0-9_]{0,30}$
