[flake8]
# Match Black and Ruff line length
max-line-length = 120

# Ignore rules that conflict with Black formatting or are handled by other tools
ignore =
    # E203: whitespace before ':' - Black intentionally does this
    E203,
    # E501: line too long - handled by Black/Ruff
    E501,
    # W503: line break before binary operator - conflicts with Black
    W503,
    # E226: missing whitespace around arithmetic operator - Black style
    E226,
    # W391: blank line at end of file - not critical
    W391,
    # C901: function is too complex - these are intentional for complex business logic
    C901,
    # F401: imported but unused - star imports for choice registration are intentional
    F401

# Exclude common directories
exclude =
    .git,
    __pycache__,
    migrations,
    .venv,
    venv,
    build,
    dist,
    *.egg-info,
    node_modules,
    htmlcov,
    .pytest_cache

# Complexity threshold - set high since we have intentional complex functions
max-complexity = 50
