Coverage for src/henrri_connect/revenues/synchro.py: 100%
13 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 10:54 +0200
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 10:54 +0200
1"""
2Sous-client pour les endpoints /v1/revenues.
4Classes:
5- ``henrri_connect.revenues.synchro.SyncRevenuesClient``
6 Accès synchrone aux endpoints revenus.
8Notes:
9- Utiliser de préférence l'objet ``henrri_connect.SyncHenrriClient`` pour acceder aux endpoints.
10"""
12from __future__ import annotations
14from typing import TYPE_CHECKING
16from ..models import MonthlyRevenueStatistics, RevenueStatistics
18if TYPE_CHECKING:
19 from ..connect import SyncHenrriClient
21REVENUES_ENDPOINT = "/v1/revenues"
23class SyncRevenuesClient:
24 """
25 Accès synchrone aux statistiques de revenus.
27 Parameters:
28 - ``client`` (SyncHenrriClient) : Client HTTP.
30 Methods:
31 - ``get_annual(self, year: int)`` : Récupère les statistiques de revenus annuelles.
32 - ``get_monthly(self, year: int)`` : Récupère les statistiques de revenus mensuelles
33 pour une année.
34 """
36 def __init__(self, client: SyncHenrriClient) -> None:
37 self._c = client
39 def get_annual(self, year: int) -> RevenueStatistics:
40 """
41 Récupère les statistiques de revenus annuelles.
43 Arguments:
44 - ``year`` (int) : Année de recherche.
46 Returns:
47 - ``RevenueStatistics`` : Statistiques de revenus annuelles.
48 """
49 resp = self._c.request("GET", f"{REVENUES_ENDPOINT}/{year}")
50 return RevenueStatistics.model_validate(resp.json())
52 def get_monthly(self, year: int) -> list[MonthlyRevenueStatistics]:
53 """
54 Récupère les statistiques de revenus mensuelles pour une année.
56 Arguments:
57 - ``year`` (int) : Année de recherche.
59 Returns:
60 - ``list[MonthlyRevenueStatistics]`` : Statistiques de revenus mensuelles.
61 """
62 resp = self._c.request("GET", f"{REVENUES_ENDPOINT}/{year}/months")
63 return [MonthlyRevenueStatistics.model_validate(item) for item in resp.json()]