[project] name = "plesna-gerance" version = "0.1.0" description = "Extracteur de comptes rendus de gérance Oralia/ICS" requires-python = ">=3.10" dependencies = [ "click>=8.0", "fastapi>=0.100.0", "uvicorn[standard]>=0.20.0", "python-multipart>=0.0.6", "sqlalchemy>=2.0.0", "httpx>=0.24.0", "pdfplumber>=0.11.9", ] [project.scripts] plesna-gerance = "plesna_gerance.cli:main" [dependency-groups] dev = [ "pytest>=8.0", "ruff>=0.6", ] # Mode application de bureau (fenêtre native). Sous Windows, pywebview # s'appuie sur WebView2 (Edge Chromium), présent par défaut sur Windows 10/11. desktop = [ "pywebview>=5.0", ] # Backend de rendu pour tester le mode bureau SOUS LINUX (Qt, pip-installable). # Inutile sous Windows (WebView2) : ne pas inclure dans le build empaqueté. desktop-linux = [ "pywebview>=5.0", "qtpy>=2.4", "PyQt6>=6.6", "PyQt6-WebEngine>=6.6", ] # Outils pour produire l'exécutable autonome (à lancer sur Windows). build = [ "pyinstaller>=6.0", ] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] addopts = "-q" [tool.ruff] target-version = "py310" line-length = 88 src = ["src", "tests"] [tool.ruff.lint] # E/W: pycodestyle, F: pyflakes, I: isort, UP: pyupgrade, B: bugbear select = ["E", "W", "F", "I", "UP", "B"] ignore = [ "E501", # longueur de ligne gérée par le formateur, pas bloquante "B904", # raise sans `from` : on traduit volontairement les exceptions en HTTP ] [tool.ruff.lint.flake8-bugbear] # Appels idiomatiques FastAPI en argument par défaut (injection de dépendances) extend-immutable-calls = [ "fastapi.Depends", "fastapi.File", "fastapi.Form", "fastapi.Query", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/plesna_gerance"]