Finalize M13 test and coverage milestone:
tests/fixtures/pronote-6e.ics (new):
- Anonymized iCal fixture for Classe de 6e (3 VEVENTs: SVT lesson with
homework block, Histoire-Géo modified lesson, all-day school outing)
- Same structure as pronote-4e.ics, no secrets or real data
tests/conftest.py:
- Added sample_message fixture (Message with MessageType.INFORMATION)
- Integrated sample_message into pronote_data fixture (messages=[sample_message])
- Sphinx/reST docstring with :return: and :rtype:
.gitignore:
- Fixed typo: .worktress/ -> .worktrees/ (line 56)
pyproject.toml:
- Added ".worktrees" to ruff extend-exclude to prevent ruff format --check .
from scanning worktree files
TODO.md:
- Checked M13 items: tests/fixtures/ and tests/conftest.py
Validation: 627 tests pass, coverage 95.67% (threshold 90%), ruff/mypy/
bandit/pre-commit all green.
Co-authored-by: opencode/coder <coder@agents.invalid>
Implémentation complète de la source d'agenda théorique :
- model.py : modèles Pydantic de parsing JSON (TheoreticalLessonEntry,
TheoreticalAgendaFile) avec validation des formats d'heure et de l'ordre
début/fin.
- parity.py : WeekParityService déterministe calculant la parité d'une
semaine (paire/impaire) à partir d'une date de référence.
- holidays.py : SchoolHolidayCalendar lisant un fichier JSON de vacances
scolaires (zone A) avec bornes inclusives.
- provider.py : protocole TheoreticalAgendaProvider (get_lessons,
get_lessons_for_range).
- file.py : JsonTheoreticalAgendaProvider implémentant le protocole :
filtrage par parité et vacances, génération d'IDs déterministes
incluant le type de semaine, validation de l'unicité des IDs,
tri stable par identifiant.
- __init__.py : factory get_theoretical_provider câblant la
configuration (None si désactivé, erreur si config de parité partielle).
- Fixtures : theoretical.json (9 leçons all/even/odd) et
school_holidays.json (zone A, 4 périodes).
- 57 tests unitaires couvrant parsing, parité, vacances, provider,
factory, déduplication de range, collisions d'IDs.
- Guide : §8 et §12 alignés avec le format JSON.
Co-authored-by: opencode/coder <coder@agents.invalid>
Co-authored-by: opencode/test-engineer <test-engineer@agents.invalid>
- Guide de développement (GUIDE_DEV_PYTHON.md) : spécification complète
- TODO.md : 15 jalons de développement (M1-M15) avec étapes et critères d'acceptation
- AGENTS.md : guide de contribution pour agents et développeurs
- pyproject.toml : configuration projet (dépendances, ruff, mypy strict, pytest)
- .gitignore : exclusion venv, bytecode, .env, caches, state files
- .env.example : template des variables d'environnement (placeholders)
- Structure du package pronote_sync/ (14 sous-packages avec __init__.py)
- tests/ avec conftest.py et fixtures/
- Environnement virtuel .venv/ (Python 3.14)