[flake8]
ignore =
    # E203 whitespace before ':'
    E203,
    # E221: multiple spaces before operator
    E221,
    # E241: multiple spaces after ':'
    E241,
    # E402: module level import not at top of file
    E402,
    # E501: line too long
    E501,
    # E704: multiple statements on one line (def)
    E704,
    # E741: ambiguous variable name
    E741,
    # W503: line break before binary operator
    W503,
    # flake8-requirements import checks
    I,
    # flake8-annotations self/cls type
    ANN101, ANN102,
    # flake8-annotations allow Any type
    ANN401,
per-file-ignores =
    core/mocks/generated/*:F4
    core/src/typing.py:ANN
    core/src/apps/monero/*:ANN
    core/site_scons/*:ANN
    core/tests/*:ANN
    ci/*:ANN
    common/*:ANN
    crypto/*:ANN
    legacy/*:ANN
    storage/*:ANN
    tests/*:ANN

[tool:pytest]
addopts = -rfE --strict-markers --random-order
testpaths = tests crypto storage python/tests
xfail_strict = true
junit_family = xunit2

[mypy]
mypy_path = src,mocks,mocks/generated
check_untyped_defs = True
disallow_subclassing_any = True
disallow_untyped_calls = True
disallow_untyped_decorators = True
disallow_untyped_defs = True
disallow_incomplete_defs = True
namespace_packages = True
no_implicit_optional = True
warn_redundant_casts = True
warn_return_any = True
warn_unused_configs = True
warn_unused_ignores = True
show_error_codes = True
# type union operator support, should be removed after 3.10 is the default
python_version = 3.10