• fix: A42 terminé — client httpx partagé par boucle (v7.28.0)
    FlowDeck CI / lint (push) Canceled after 0s
    FlowDeck CI / test (push) Canceled after 0s
    FlowDeck CI / docker (push) Canceled after 0s

    bruno released this 2026-10-01 23:09:45 -04:00 | 92 commits to main since this release

    • app/services/http_client.py : async with shared_client(timeout=15) as client: remplace les 49 créations async with httpx.AsyncClient(
      de 14 fichiers (gitea ×21, providers oidc/oauth ×11, calendar ×4,
      automations ×3…) — le pool de connexions est réutilisé au lieu d'être
      recréé à chaque appel. aexit no-op (le client partagé ne se ferme
      pas à la sortie).
    • Cache par (boucle d'event, kwargs) en WeakKeyDictionary : un
      AsyncClient n'est JAMAIS partagé entre deux loops (piège des tests
      « Event loop is closed ») — une boucle par test = client propre
      collecté avec la boucle. Clé = kwargs triés, repr() pour les valeurs
      non hashables (headers= dict → TypeError rattrapé par la suite).
    • Laissés délibérément : github_adapter (transport MockTransport
      injecté), webhook_outbound (client « own_client » fermé par la
      fonction).
    • Tests : test_http_client_shared_and_loop_scoped (réutilisation mêmes
      kwargs / cloisonné kwargs / cloisonné loop) ; le stub des webhooks
      patche aussi la fabrique http_client.httpx + purge du cache (avant :
      webhook_outbound.httpx patché mais la fabrique partagée créait un vrai
      client → réseau réel dans les tests).

    suite 1091/1091 · ruff OK · docs à jour

    Downloads