[MASTER]
jobs=1

load-plugins=efrotools.pylintplugins

persistent=no

__EFRO_PYLINT_INIT__

[REPORTS]

# Don't want a score; aiming for perfection.
score=no

[VARIABLES]
# By default pylint ignores unused imports in __init__.py, but
# when flycheck checks it as flycheck___init__.py that doesn't apply.
# Turning this off to keep things consistent.
init-import=yes

[FORMAT]
# PEP-8 specifies 79 chars (that's right, not 80)
max-line-length=79

# We're using yapf to handle formatting and pylint doesn't always agree with it.
disable=bad-continuation

[MESSAGES CONTROL]
# broad-except:
#   I tend to catch Exception (*not* BaseException) as a broad safety net.
#   This is not disallowed in PEP-8 and I feel its
#   not a bad practice as long as they are not silently ignored.
# too-few-public-methods:
#   Yes I often use little classes just to carry around one or two named attrs
#   or as simple messages to send to each other.
#   Can look into Data Classes perhaps once 3.7 is well distributed,
#   but for now I'm gonna say this is ok.
# no-self-use
#   I find a lot of things still make sense organizationally as methods
#   even if they do not technically use self at the current time
# too-many-instance-attributes
#   Honestly just don't feel this is bad. If anything, the limit encourages
#   me to stuff things in dicts or whatnot which loses the bit of
#   type safety that pylint provides with attrs
# too-many-arguments
#   This one is more understandable, but I still don't see the problem
#   with having a bunch of optional args in some cases.
# similarities
#   Not gonna touch this for now; maybe later. Bigger fish to fry.
# not-callable
#   Seeming to get a number of false positives for this, and mypy covers
#   this case well.
disable=broad-except,
        too-few-public-methods,
        no-self-use,
        too-many-instance-attributes,
        too-many-arguments,
        similarities,
        not-callable

# We want to know whenever we can get rid of suppression statements.
enable=useless-suppression

[BASIC]
# I use x, y, h, and v for graphical purposes often, where I feel like they are
# meaningful, so adding them to the allowed list.
# Also t, r, s for translate/rotate/scale
# (i found myself just changing them to xval and yval which doesnt help)

good-names=i,
           j,
           k,
           x,
           y,
           h,
           v,
           s,
           h2,
           v2,
           ex,
           Run,
           id,
           T,
           S,
           U,
           _

[TYPECHECK]
# Mypy does most all the type checking we need, and in some cases
# Pylint has conflicting views about what types it thinks things are,
# so let's just flip stuff off here.
disable=no-member

[MISCELLANEOUS]
# We've got various TODO and FIXME notes in scripts, but don't want
# lint to trigger over that fact.
notes=

[DESIGN]
# We're going a bit over the recommended max of 7 ancestors when
# in some bafoundation mixin classes; I don't feel like that's
# unreasonable.
max-parents=10

[SIMILARITIES]

[IMPORTS]
# We do quite a bit of this. Perhaps can reconsider if its a good idea later.
disable=import-outside-toplevel

[STRING]
# PEP-8 says to be consistent with quotes; let's remind ourself...
check-quote-consistency=yes
