fix: PRONOTE_URL ignoré à cause du double préfixe env_prefix

Le champ pronote_url dans PronoteSettings avec env_prefix=PRONOTE_ produisait PRONOTE_PRONOTE_URL au lieu de PRONOTE_URL. Renomme le champ en url pour que le mécanisme standard produise PRONOTE_URL. Toutes les références mises à jour dans le code de production et les tests. Décision d'architecture : renommage préféré à un contournement par alias (mypy + dette technique).

Co-authored-by: Antoine Van Elstraete <antoine@van-elstraete.net>
Co-committed-by: Antoine Van Elstraete <antoine@van-elstraete.net>
This commit was merged in pull request #4.
This commit is contained in:
2026-09-08 21:24:10 +02:00
committed by Antoine Van Elstraete
parent bf4038814a
commit 3b38253575
6 changed files with 47 additions and 34 deletions

View File

@@ -37,7 +37,7 @@ class PronoteSettings(BaseSettings):
username: str | None = None
password: SecretStr | None = None
ent: str | None = None
pronote_url: str | None = None
url: str | None = None
account_type: Literal["student", "parent"] = "parent"
agenda_source: Literal["auto", "ical", "pronotepy"] = "auto"
homework_source: Literal["auto", "ical", "pronotepy"] = "auto"

View File

@@ -164,17 +164,17 @@ class PronoteClient:
:return: Le client ``pronotepy`` connecté.
:rtype: pronotepy.Client
:raises ValueError: Si ``pronote_url``, ``username`` ou ``password``
:raises ValueError: Si ``url``, ``username`` ou ``password``
est manquant, ou si l'ENT fourni est inconnu.
:raises pronotepy.PronoteAPIError: Si la connexion à Pronote échoue.
"""
if self._client is None:
pronote_url = self._settings.pronote_url
url = self._settings.url
username = self._settings.username
password = self._settings.password
ent = self._settings.ent
if pronote_url is None or username is None or password is None:
raise ValueError("pronote_url, username et password sont requis pour pronotepy")
if url is None or username is None or password is None:
raise ValueError("url, username et password sont requis pour pronotepy")
resolver = _resolve_ent(ent) if ent is not None else None
client_class: type[pronotepy.Client] = (
pronotepy.ParentClient
@@ -182,7 +182,7 @@ class PronoteClient:
else pronotepy.Client
)
self._client = client_class(
pronote_url=pronote_url,
pronote_url=url,
username=username,
password=password.get_secret_value(),
ent=resolver,

View File

@@ -149,13 +149,13 @@ class PronoteFetcher:
def _is_pronotepy_configured(self) -> bool:
"""Vérifie que la source pronotepy est entièrement configurée.
:return: ``True`` si ``pronote_url``, ``username`` et ``password``
:return: ``True`` si ``url``, ``username`` et ``password``
sont tous définis, ``False`` sinon.
:rtype: bool
"""
pronote = self._settings.pronote
return (
pronote.pronote_url is not None
pronote.url is not None
and pronote.username is not None
and pronote.password is not None
)