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

1""" 

2Sous-client pour les endpoints /v1/revenues. 

3 

4Classes: 

5- ``henrri_connect.revenues.synchro.SyncRevenuesClient`` 

6 Accès synchrone aux endpoints revenus. 

7 

8Notes: 

9- Utiliser de préférence l'objet ``henrri_connect.SyncHenrriClient`` pour acceder aux endpoints. 

10""" 

11 

12from __future__ import annotations 

13 

14from typing import TYPE_CHECKING 

15 

16from ..models import MonthlyRevenueStatistics, RevenueStatistics 

17 

18if TYPE_CHECKING: 

19 from ..connect import SyncHenrriClient 

20 

21REVENUES_ENDPOINT = "/v1/revenues" 

22 

23class SyncRevenuesClient: 

24 """ 

25 Accès synchrone aux statistiques de revenus. 

26 

27 Parameters: 

28 - ``client`` (SyncHenrriClient) : Client HTTP. 

29 

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 """ 

35 

36 def __init__(self, client: SyncHenrriClient) -> None: 

37 self._c = client 

38 

39 def get_annual(self, year: int) -> RevenueStatistics: 

40 """ 

41 Récupère les statistiques de revenus annuelles. 

42 

43 Arguments: 

44 - ``year`` (int) : Année de recherche. 

45 

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()) 

51 

52 def get_monthly(self, year: int) -> list[MonthlyRevenueStatistics]: 

53 """ 

54 Récupère les statistiques de revenus mensuelles pour une année. 

55 

56 Arguments: 

57 - ``year`` (int) : Année de recherche. 

58 

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()]