fix: PRONOTE_ENT optionnel pour les connexions pronotepy directes #2

Merged
AntoineVe merged 1 commits from fix/pronotepy-ent-optional into main 2026-09-08 20:54:04 +02:00
Owner

Résumé

PRONOTE_ENT était incorrectement traité comme obligatoire pour les connexions pronotepy, bloquant le pipeline quand l'ENT n'est pas configuré. La spécification (GUIDE_DEV_PYTHON.md §3.1.2) indique pourtant : « PRONOTE_ENT reste optionnel pour une connexion directe ».

Bugs corrigés

  1. Mode pronotepy explicite sans PRONOTE_ENT : erreur « pronote_url, username, password et ent sont requis pour pronotepy » alors que les credentials sont présents.
  2. Mode auto sans iCal ni PRONOTE_ENT : erreur « ni la source iCal ni pronotepy n'est configurée » — le repli vers pronotepy était bloqué par le même prérequis incorrect sur ent.

Changements

Production

  • pronote_sync/sources/pronote/client.py (_connect()) : ent retiré des champs obligatoires, résolution ENT conditionnelle (_resolve_ent(ent) if ent is not None else None), ent=None transmis à pronotepy pour les connexions directes. Docstring mis à jour.
  • pronote_sync/sources/pronote/fallback.py (_is_pronotepy_configured()) : pronote.ent is not None retiré du prédicat. Docstring mis à jour.

Tests (10 tests de régression, RED→GREEN)

  • tests/unit/test_pronote_client.py : connexion sans ENT, credentials manquants (message sans ent), résolution ENT quand fourni, ENT inconnu rejeté.
  • tests/unit/test_fallback.py : _is_pronotepy_configured() sans ENT, auto sans iCal ni ENT (agenda + devoirs), repli iCal→pronotepy sans ENT (agenda + devoirs).

Validation

  • ruff check + ruff format --check : passés
  • mypy : passé (erreur interne préexistante sur ical.py:99, non liée)
  • bandit : 0 finding
  • pytest --cov : 646 passed, 95.67% de couverture
  • pre-commit : tous les hooks passent
  • Revue @reviewer : APPROVED
  • Validation en environnement réel en attente — pas de tag/release avant confirmation sur le serveur de prod.
## Résumé `PRONOTE_ENT` était incorrectement traité comme obligatoire pour les connexions `pronotepy`, bloquant le pipeline quand l'ENT n'est pas configuré. La spécification (GUIDE_DEV_PYTHON.md §3.1.2) indique pourtant : « `PRONOTE_ENT` reste optionnel pour une connexion directe ». ## Bugs corrigés 1. **Mode `pronotepy` explicite sans `PRONOTE_ENT`** : erreur `« pronote_url, username, password et ent sont requis pour pronotepy »` alors que les credentials sont présents. 2. **Mode `auto` sans iCal ni `PRONOTE_ENT`** : erreur `« ni la source iCal ni pronotepy n'est configurée »` — le repli vers `pronotepy` était bloqué par le même prérequis incorrect sur `ent`. ## Changements ### Production - **`pronote_sync/sources/pronote/client.py`** (`_connect()`) : `ent` retiré des champs obligatoires, résolution ENT conditionnelle (`_resolve_ent(ent) if ent is not None else None`), `ent=None` transmis à `pronotepy` pour les connexions directes. Docstring mis à jour. - **`pronote_sync/sources/pronote/fallback.py`** (`_is_pronotepy_configured()`) : `pronote.ent is not None` retiré du prédicat. Docstring mis à jour. ### Tests (10 tests de régression, RED→GREEN) - **`tests/unit/test_pronote_client.py`** : connexion sans ENT, credentials manquants (message sans `ent`), résolution ENT quand fourni, ENT inconnu rejeté. - **`tests/unit/test_fallback.py`** : `_is_pronotepy_configured()` sans ENT, `auto` sans iCal ni ENT (agenda + devoirs), repli iCal→pronotepy sans ENT (agenda + devoirs). ## Validation - ✅ `ruff check` + `ruff format --check` : passés - ✅ `mypy` : passé (erreur interne préexistante sur `ical.py:99`, non liée) - ✅ `bandit` : 0 finding - ✅ `pytest --cov` : 646 passed, 95.67% de couverture - ✅ `pre-commit` : tous les hooks passent - ✅ Revue @reviewer : APPROVED - ⏳ **Validation en environnement réel en attente** — pas de tag/release avant confirmation sur le serveur de prod.
AntoineVe added 1 commit 2026-09-08 20:53:59 +02:00
PRONOTE_ENT était incorrectement traité comme obligatoire, bloquant
le pipeline quand l'ENT n'est pas configuré. Permet désormais la
connexion directe à Pronote sans ENT (ent=None), conformément à la
spécification (GUIDE_DEV_PYTHON.md §3.1.2).

Corrige deux bugs :
- Mode pronotepy explicite sans PRONOTE_ENT : erreur « ent sont requis »
- Mode auto sans iCal ni PRONOTE_ENT : erreur « ni la source iCal ni
  pronotepy n'est configurée » alors que les credentials sont présents

Changements :
- client.py : _connect() n'exige plus ent, résolution conditionnelle
- fallback.py : _is_pronotepy_configured() sans vérifier ent
- tests : 10 tests de régression (RED→GREEN)

Co-authored-by: opencode/coder litellm/coder@agents.invalid
Co-authored-by: opencode/test-engineer litellm/test-engineer@agents.invalid
AntoineVe merged commit 82b9877aad into main 2026-09-08 20:54:04 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AntoineVe/college-infos#2