feat(M1): échafaudage et outillage complétés
- .pre-commit-config.yaml : hooks ruff, mypy, bandit, detect-secrets, whitespace - .secrets.baseline : baseline detect-secrets (faux positif GUIDE_DEV_PYTHON.md) - pyproject.toml : migration clés ruff vers [tool.ruff.lint], exclusion guide du format - pip install -e ".[dev]" : dépendances installées dans le venv - pre-commit install : hook git installé - TODO.md : items M1 cochés Validations : - ruff check . : PASS - ruff format --check . : PASS - mypy . : PASS (17 fichiers) - pytest : PASS (0 test, infrastructure OK) - bandit -r pronote_sync/ : PASS - pre-commit run --all-files : 9 passed, 1 skipped, 0 failed - import pronote_sync : OK Co-authored-by: OpenCode/orchestrator <opencode-orchestrator@agents.invalid>
This commit is contained in:
16
TODO.md
16
TODO.md
@@ -10,14 +10,14 @@
|
||||
|
||||
Mettre en place le dépôt, l'environnement, l'arborescence du package et la chaîne d'outils (lint/type/test/pré-commit).
|
||||
|
||||
- [ ] Créer l'environnement virtuel Python (≥ 3.13.5) et l'activer (`python -m venv venv`).
|
||||
- [ ] Créer `pyproject.toml` d'après l'Annexe C (projet `pronote-sync`, `requires-python = ">=3.13.5"`, dépendances, extras `dev` et `ai-litellm`, script console `pronote-sync`).
|
||||
- [ ] Configurer ruff (`line-length = 100`, `target-version = "py313"`, règles E/W/F/I/B/C4/UP), mypy (`strict`), bandit et coverage (`fail_under = 90`) dans `pyproject.toml`.
|
||||
- [ ] Créer `.gitignore` (venv, `__pycache__`, `.env`, `.blog_rss_state.json`, `.coverage`, artefacts `.ics` temporaires).
|
||||
- [ ] Créer l'arborescence `pronote_sync/` avec `__init__.py` dans chaque package (`config`, `models`, `sources/pronote`, `sources/blog`, `sources/theoretical`, `sync`, `synthesis`, `channels`, `pipeline/steps`, `cli`, `utils`, `tests`).
|
||||
- [ ] Ajouter la configuration pre-commit (ruff, mypy, bandit, detect-secrets, `trailing-whitespace`, `end-of-file`).
|
||||
- [ ] Installer le projet en mode éditable : `pip install -e ".[dev]"`.
|
||||
- [ ] Créer le commit initial (scaffold + `.gitignore`, sans aucun secret).
|
||||
- [x] Créer l'environnement virtuel Python (≥ 3.13.5) et l'activer (`python -m venv venv`).
|
||||
- [x] Créer `pyproject.toml` d'après l'Annexe C (projet `pronote-sync`, `requires-python = ">=3.13.5"`, dépendances, extras `dev` et `ai-litellm`, script console `pronote-sync`).
|
||||
- [x] Configurer ruff (`line-length = 100`, `target-version = "py313"`, règles E/W/F/I/B/C4/UP), mypy (`strict`), bandit et coverage (`fail_under = 90`) dans `pyproject.toml`.
|
||||
- [x] Créer `.gitignore` (venv, `__pycache__`, `.env`, `.blog_rss_state.json`, `.coverage`, artefacts `.ics` temporaires).
|
||||
- [x] Créer l'arborescence `pronote_sync/` avec `__init__.py` dans chaque package (`config`, `models`, `sources/pronote`, `sources/blog`, `sources/theoretical`, `sync`, `synthesis`, `channels`, `pipeline/steps`, `cli`, `utils`, `tests`).
|
||||
- [x] Ajouter la configuration pre-commit (ruff, mypy, bandit, detect-secrets, `trailing-whitespace`, `end-of-file`).
|
||||
- [x] Installer le projet en mode éditable : `pip install -e ".[dev]"`.
|
||||
- [x] Créer le commit initial (scaffold + `.gitignore`, sans aucun secret).
|
||||
|
||||
### Critères d'acceptation
|
||||
- Le package `pronote_sync` est importable sans erreur.
|
||||
|
||||
Reference in New Issue
Block a user