Files
alfred/pyproject.toml
2025-12-07 05:59:53 +01:00

118 lines
3.0 KiB
TOML

[tool.poetry]
name = "agent-media"
version = "0.1.0"
description = "AI agent for managing a local media library"
authors = ["Francwa <francois.hodiaumont@gmail.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.12"
python-dotenv = "^1.0.0"
requests = "^2.32.5"
fastapi = "^0.121.1"
pydantic = "^2.12.4"
uvicorn = "^0.38.0"
pytest-xdist = "^3.8.0"
[tool.poetry.group.dev.dependencies]
pytest = "^8.0.0"
pytest-cov = "^4.1.0"
pytest-asyncio = "^0.23.0"
httpx = "^0.27.0"
ruff = "^0.14.7"
black = "^25.11.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.pytest.ini_options]
# Chemins où pytest cherche les tests
testpaths = ["tests"]
# Patterns de fichiers/classes/fonctions à considérer comme tests
python_files = ["test_*.py"] # Fichiers commençant par "test_"
python_classes = ["Test*"] # Classes commençant par "Test"
python_functions = ["test_*"] # Fonctions commençant par "test_"
# Options ajoutées automatiquement à chaque exécution de pytest
addopts = [
"-v", # --verbose : affiche chaque test individuellement
"--tb=short", # --traceback=short : tracebacks courts et lisibles
"--cov=.", # --coverage : mesure le coverage de tout le projet (.)
"--cov-report=term-missing", # Affiche les lignes manquantes dans le terminal
"--cov-report=html", # Génère un rapport HTML dans htmlcov/
"--cov-report=xml", # Génère un rapport XML (pour CI/CD)
"--cov-fail-under=80", # Échoue si coverage < 80%
"-n=auto", # --numprocesses=auto : parallélise les tests (pytest-xdist)
"--strict-markers", # Erreur si un marker non déclaré est utilisé
"--disable-warnings", # Désactive l'affichage des warnings (sauf erreurs)
]
# Mode asyncio automatique pour pytest-asyncio
asyncio_mode = "auto"
# Déclaration des markers personnalisés
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"integration: marks tests as integration tests",
"unit: marks tests as unit tests",
]
# Filtrage des warnings
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::PendingDeprecationWarning",
]
[tool.coverage.run]
source = ["agent", "application", "domain", "infrastructure"]
omit = ["tests/*", "*/__pycache__/*"]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise NotImplementedError",
"if __name__ == .__main__.:",
]
[tool.black]
line-length = 88
target-version = ['py312']
include = '\.pyi?$'
exclude = '''
/(
__pycache__
| \.git
| \.qodo
| \.vscode
| \.ruff_cache
)/
'''
[tool.ruff]
line-length = 88
exclude = [
"__pycache__",
".git",
".ruff_cache",
".qodo",
".vscode",
]
lint.select = [
"E", "W",
"F",
"I",
"B",
"C4",
"TID",
"PL",
"UP",
]
lint.ignore = ["PLR0913", "PLR2004", "TID252", "E501"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["PLC0415"]
"conftest.py" = ["PLC0415"]