# NordaBiz Python Project Configuration
# ======================================

[project]
name = "nordabiz"
version = "1.24.0"
description = "Norda Biznes Partner - Business catalog and networking platform"
requires-python = ">=3.9"

[tool.ruff]
line-length = 120
target-version = "py39"

[tool.ruff.lint]
select = [
    "E",   # pycodestyle errors
    "W",   # pycodestyle warnings
    "F",   # pyflakes
    "I",   # isort
    "B",   # flake8-bugbear
    "S",   # flake8-bandit (security)
]
ignore = [
    "E501",  # line too long (handled by formatter)
    "S101",  # assert used (OK in tests)
    "S105",  # hardcoded password (false positives)
    "S106",  # hardcoded password (false positives)
]

[tool.ruff.lint.per-file-ignores]
"tests/*" = ["S101", "S105", "S106"]

[tool.bandit]
exclude_dirs = ["tests", "venv", ".venv", "scripts"]
skips = ["B101", "B105", "B106"]  # assert, hardcoded passwords

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = "-v --tb=short"
markers = [
    "unit: Unit tests",
    "integration: Integration tests",
    "e2e: End-to-end tests",
    "smoke: Smoke tests",
    "security: Security tests",
]

[tool.coverage.run]
source = ["."]
omit = ["tests/*", "venv/*", ".venv/*", "scripts/*"]
branch = true

[tool.coverage.report]
fail_under = 10
show_missing = true
