###############################################################################
# pytest
###############################################################################
[tool.ruff]
src = ["src"]
target-version = "py311"

[tool.ruff.lint]
select = ["ALL"]
unfixable = ["T20", "RUF001", "RUF002", "RUF003"]

ignore = [
    "ANN",  # flake8-annotations
    "BLE",  # flake8-blind-except
    "TCH",  # flake8-type-checking / TODO: revisit later ?

    "E501",  # long lines
    "D1",  # missing docstring
    "TRY003",  # Avoid specifying long messages outside the exception class
    "RUF012",  # Mutable class attributes should be annotated with `typing.ClassVar`
]

[tool.ruff.lint.per-file-ignores]
"**/tests/*" = [
    "S101",  # Use of assert detected.
    "S106",  # Possible hardcoded password.
    "B011",  # Do not call assert False since python -O removes these calls.
    "ARG001",  # Unused function argument (mostly fixtures)
    "PLR2004",  # Magic value used in comparison, consider replacing {value} with a constant variable
    "S311",  # Standard pseudo-random generators are not suitable for cryptographic purposes.
]
# File {name} is part of an implicit namespace package. Add an `__init__.py`.
"tasks.py" = ["INP001"]
"src/conftest.py" = ["INP001"]
"src/manage.py" = ["INP001"]

"src/character/management/commands/*" = [
    "RUF001", # String contains ambiguous unicode character
]

[tool.ruff.lint.pydocstyle]
convention = "pep257"

[tool.ruff.lint.mccabe]
max-complexity = 10

[tool.pytest.ini_options]
addopts = """
--html=test_reports/pytest_result/pytest.html --color=yes --durations 20
--no-cov-on-fail --strict-markers --reuse-db
--driver=Firefox
-W error
-W "ignore:capabilities and desired_capabilities have been deprecated:DeprecationWarning:pytest_selenium.pytest_selenium"
-W "ignore:service_log_path has been deprecated:DeprecationWarning:pytest_selenium.pytest_selenium"
"""
markers = []
minversion = "6.0"
DJANGO_SETTINGS_MODULE = "charasheet.settings"
junit_family = "xunit1"
norecursedirs = [
    ".*",
    "docker",
    "documentation",
    "static",
    "public",
]
testpaths = [
    "src",
]
python_files = [
    "test_*.py",
    "tests.py",
]

###############################################################################
# ruff
###############################################################################
