Permet de distribuer l'application en executable Windows double-clic, sans Python/Node/terminal pour l'utilisateur final. - `desktop.py` : demarre le serveur sur un port libre dans un thread et ouvre une fenetre native (pywebview). `PLESNA_DEBUG=1` active les DevTools. Commande `plesna-gerance desktop` (import paresseux). - `paths.py` : resolution centralisee des chemins selon le contexte (dev, executable PyInstaller, surcharge par variables d'env). Les donnees vont dans un dossier utilisateur inscriptible (%APPDATA%), les ressources dans le bundle. connection.py/storage.py utilisent `get_data_dir()`, app.py `resource_path()`. - app.py : type MIME `.mjs` force (modules ES / worker PDF.js sous Windows). - Groupes de deps optionnels desktop / desktop-linux / build. - packaging/ : spec PyInstaller, build_windows.ps1, installeur Inno Setup. Workflow GitHub build-windows.yml (runner Windows). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
75 lines
1.8 KiB
TOML
75 lines
1.8 KiB
TOML
[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"]
|