thorcast_api_client 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,115 @@
1
+ Metadata-Version: 2.4
2
+ Name: thorcast_api_client
3
+ Version: 0.2.1
4
+ Summary: Client Python de l'API ThorCast (Holmium) : courbes de charge LT, historiques et catalogues, avec respect du quota de requêtes
5
+ Keywords: thorcast,holmium,api,electricity,load-curves
6
+ Author: JBCAYRE
7
+ Author-email: jcayre@mint.eco
8
+ Requires-Python: >=3.8,<4.0
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.8
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
19
+ Classifier: Programming Language :: Python :: 3.15
20
+ Requires-Dist: requests (>=2.26.0,<3.0.0)
21
+ Description-Content-Type: text/markdown
22
+
23
+ # ThorCast API Client V0.2
24
+
25
+ ## 📌 Description (je suis nul en Markdown , j'espère que ce sera lisible)
26
+
27
+ `thorcast_api_client` est un client Python permettant d'interagir avec l'API **ThorCast** mise en place par Holmium pour MINT.
28
+
29
+ Il prend en charge (normalement) :
30
+ - L'**authentification JWT**
31
+ - La récupération des **courbes de charge prévues**
32
+ - La récupération des **courbes de charge historiques**
33
+ - La gestion des **erreurs API**
34
+ - Le respect du **quota de requêtes** (depuis la 0.2.0)
35
+
36
+ ## 🚀 Installation
37
+
38
+ ### Via `pip`
39
+ ```sh
40
+ pip install thorcast_api_client
41
+ ```
42
+
43
+ ### Via `poetry` pour les amateurs de Baudelaire
44
+ ```sh
45
+ poetry add thorcast_api_client
46
+ ```
47
+
48
+ ## 📜 Utilisation
49
+
50
+ ### 🔒 Authentification :
51
+
52
+ L'authentification passe par la requête d'un token JWS en injectant un MDP/Username :
53
+
54
+ ```sh
55
+ from thorcast_api_client.client import ThorCastClient
56
+
57
+ client = ThorCastClient("mon_user", "mon_mdp")
58
+ ```
59
+
60
+ ### ⏱️ Quota de requêtes (0.2.0)
61
+
62
+ L'API limite à **60 requêtes par minute glissante** et renvoie `429 Too Many Requests` au-delà, avec un en-tête `Retry-After` (documentation Holmium v1.8, §5). Le client :
63
+ - **attend une place libre** avant chaque appel (limiteur partagé entre threads), plafonné par défaut au quota de l'API ;
64
+ - sur un 429, **attend le délai `Retry-After`** (60 s s'il est absent) puis retente, jusqu'à `max_retries` fois ; ensuite `RateLimitExceeded` est levée, avec le délai dans `exc.retry_after`.
65
+
66
+ ```sh
67
+ client = ThorCastClient(
68
+ "mon_user", "mon_mdp",
69
+ max_requests_per_minute=50, # sous le quota si d'autres applications partagent le compte ; None = pas de limite
70
+ max_retries=3, # nouvelles tentatives sur 429
71
+ timeout=120, # timeout HTTP en secondes (None par défaut)
72
+ )
73
+ ```
74
+
75
+ Rappel : 50 PRM au maximum par requête (`413` au-delà).
76
+ #### Lister les versions disponibles pour une ou plusieurs courbes LT
77
+
78
+ ```sh
79
+ versions = client.get_lt_curves_versions(["prm1", "prm2"])
80
+ print(versions)
81
+ ```
82
+ #### Récupérer les courbes de charge LT
83
+
84
+ ```sh
85
+ courbes = client.get_lt_curves(["prm1", "prm2"], "2023-01-01T00:00:00Z", "2025-01-01T00:00:00Z")
86
+ print(courbes)
87
+ ```
88
+
89
+ #### Récupérer les versions des courbes de catalogue 🤷 (rien compris à ce que ça remonte)
90
+
91
+ ```sh
92
+ version_catalogues = client.get_catalog_versions(["catalogue1", "catalogue2"], "2023-01-01T00:00:00Z", "2025-01-01T00:00:00Z")
93
+ print(version_catalogues)
94
+ ```
95
+ #### Récupérer les courbes de charge historiques
96
+
97
+ ```sh
98
+ courbes_catalogue = client.get_catalog_curves(["id_catalogue1", "id_catalogue2"])
99
+ print(courbes_catalogue)
100
+ ```
101
+
102
+ ## 🗂️ Historique des versions
103
+
104
+ | Version | Date | Changements |
105
+ | --- | --- | --- |
106
+ | 0.2.1 | 2026-11-09 | Métadonnées PyPI uniquement : description, README affiché sur la page du projet, historique des versions. Code identique à la 0.2.0. |
107
+ | 0.2.0 | 2026-11-09 | Respect du quota de l'API (60 requêtes par minute glissante, limiteur partagé entre threads, paramètre `max_requests_per_minute`). Sur un `429`, attente du délai `Retry-After` puis nouvelle tentative (`max_retries`) ; `RateLimitExceeded` porte le délai dans `retry_after`. Paramètre `timeout` optionnel. Tests sans appel réseau. |
108
+ | 0.1.4.2 | 2025-07-25 | Retrait des affichages de débogage de l'authentification (URL et contenu de la requête). |
109
+ | 0.1.4.1 | 2025-07-25 | Retour à l'URL `profilage-api.holmium-consulting.com` et à l'identification par `email`. |
110
+ | 0.1.3 | 2025-06-19 | Passage à l'URL `api.thorcast.com` ; paramètre `username` au lieu de `identifier`. |
111
+ | 0.1.2 | 2025-02-18 | Première version publiée : authentification JWT, courbes LT et versions, courbes historiques, catalogues. |
112
+
113
+ Montée de version : incrémenter `version` dans `pyproject.toml`, ajouter une ligne à ce tableau, puis `python -m build` et `python -m twine upload dist/*`.
114
+
115
+
@@ -0,0 +1,92 @@
1
+ # ThorCast API Client V0.2
2
+
3
+ ## 📌 Description (je suis nul en Markdown , j'espère que ce sera lisible)
4
+
5
+ `thorcast_api_client` est un client Python permettant d'interagir avec l'API **ThorCast** mise en place par Holmium pour MINT.
6
+
7
+ Il prend en charge (normalement) :
8
+ - L'**authentification JWT**
9
+ - La récupération des **courbes de charge prévues**
10
+ - La récupération des **courbes de charge historiques**
11
+ - La gestion des **erreurs API**
12
+ - Le respect du **quota de requêtes** (depuis la 0.2.0)
13
+
14
+ ## 🚀 Installation
15
+
16
+ ### Via `pip`
17
+ ```sh
18
+ pip install thorcast_api_client
19
+ ```
20
+
21
+ ### Via `poetry` pour les amateurs de Baudelaire
22
+ ```sh
23
+ poetry add thorcast_api_client
24
+ ```
25
+
26
+ ## 📜 Utilisation
27
+
28
+ ### 🔒 Authentification :
29
+
30
+ L'authentification passe par la requête d'un token JWS en injectant un MDP/Username :
31
+
32
+ ```sh
33
+ from thorcast_api_client.client import ThorCastClient
34
+
35
+ client = ThorCastClient("mon_user", "mon_mdp")
36
+ ```
37
+
38
+ ### ⏱️ Quota de requêtes (0.2.0)
39
+
40
+ L'API limite à **60 requêtes par minute glissante** et renvoie `429 Too Many Requests` au-delà, avec un en-tête `Retry-After` (documentation Holmium v1.8, §5). Le client :
41
+ - **attend une place libre** avant chaque appel (limiteur partagé entre threads), plafonné par défaut au quota de l'API ;
42
+ - sur un 429, **attend le délai `Retry-After`** (60 s s'il est absent) puis retente, jusqu'à `max_retries` fois ; ensuite `RateLimitExceeded` est levée, avec le délai dans `exc.retry_after`.
43
+
44
+ ```sh
45
+ client = ThorCastClient(
46
+ "mon_user", "mon_mdp",
47
+ max_requests_per_minute=50, # sous le quota si d'autres applications partagent le compte ; None = pas de limite
48
+ max_retries=3, # nouvelles tentatives sur 429
49
+ timeout=120, # timeout HTTP en secondes (None par défaut)
50
+ )
51
+ ```
52
+
53
+ Rappel : 50 PRM au maximum par requête (`413` au-delà).
54
+ #### Lister les versions disponibles pour une ou plusieurs courbes LT
55
+
56
+ ```sh
57
+ versions = client.get_lt_curves_versions(["prm1", "prm2"])
58
+ print(versions)
59
+ ```
60
+ #### Récupérer les courbes de charge LT
61
+
62
+ ```sh
63
+ courbes = client.get_lt_curves(["prm1", "prm2"], "2023-01-01T00:00:00Z", "2025-01-01T00:00:00Z")
64
+ print(courbes)
65
+ ```
66
+
67
+ #### Récupérer les versions des courbes de catalogue 🤷 (rien compris à ce que ça remonte)
68
+
69
+ ```sh
70
+ version_catalogues = client.get_catalog_versions(["catalogue1", "catalogue2"], "2023-01-01T00:00:00Z", "2025-01-01T00:00:00Z")
71
+ print(version_catalogues)
72
+ ```
73
+ #### Récupérer les courbes de charge historiques
74
+
75
+ ```sh
76
+ courbes_catalogue = client.get_catalog_curves(["id_catalogue1", "id_catalogue2"])
77
+ print(courbes_catalogue)
78
+ ```
79
+
80
+ ## 🗂️ Historique des versions
81
+
82
+ | Version | Date | Changements |
83
+ | --- | --- | --- |
84
+ | 0.2.1 | 2026-11-09 | Métadonnées PyPI uniquement : description, README affiché sur la page du projet, historique des versions. Code identique à la 0.2.0. |
85
+ | 0.2.0 | 2026-11-09 | Respect du quota de l'API (60 requêtes par minute glissante, limiteur partagé entre threads, paramètre `max_requests_per_minute`). Sur un `429`, attente du délai `Retry-After` puis nouvelle tentative (`max_retries`) ; `RateLimitExceeded` porte le délai dans `retry_after`. Paramètre `timeout` optionnel. Tests sans appel réseau. |
86
+ | 0.1.4.2 | 2025-07-25 | Retrait des affichages de débogage de l'authentification (URL et contenu de la requête). |
87
+ | 0.1.4.1 | 2025-07-25 | Retour à l'URL `profilage-api.holmium-consulting.com` et à l'identification par `email`. |
88
+ | 0.1.3 | 2025-06-19 | Passage à l'URL `api.thorcast.com` ; paramètre `username` au lieu de `identifier`. |
89
+ | 0.1.2 | 2025-02-18 | Première version publiée : authentification JWT, courbes LT et versions, courbes historiques, catalogues. |
90
+
91
+ Montée de version : incrémenter `version` dans `pyproject.toml`, ajouter une ligne à ce tableau, puis `python -m build` et `python -m twine upload dist/*`.
92
+
@@ -0,0 +1,20 @@
1
+ [tool.poetry]
2
+ name = "thorcast_api_client"
3
+ version = "0.2.1"
4
+ description = "Client Python de l'API ThorCast (Holmium) : courbes de charge LT, historiques et catalogues, avec respect du quota de requêtes"
5
+ authors = ["JBCAYRE <jcayre@mint.eco>"]
6
+ readme = "README.md"
7
+ keywords = ["thorcast", "holmium", "api", "electricity", "load-curves"]
8
+ classifiers = [
9
+ "Programming Language :: Python :: 3",
10
+ "Operating System :: OS Independent",
11
+ "Intended Audience :: Developers",
12
+ ]
13
+
14
+ [tool.poetry.dependencies]
15
+ python = "^3.8"
16
+ requests = "^2.26.0"
17
+
18
+ [build-system]
19
+ requires = ["poetry-core>=1.0.0"]
20
+ build-backend = "poetry.core.masonry.api"
@@ -1,17 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: thorcast_api_client
3
- Version: 0.2.0
4
- Summary: Un client Python pour interagir avec l'API ThorCast
5
- Author: JBCAYRE
6
- Author-email: jcayre@mint.eco
7
- Requires-Python: >=3.8,<4.0
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.8
10
- Classifier: Programming Language :: Python :: 3.9
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Classifier: Programming Language :: Python :: 3.13
15
- Classifier: Programming Language :: Python :: 3.14
16
- Classifier: Programming Language :: Python :: 3.15
17
- Requires-Dist: requests (>=2.26.0,<3.0.0)
@@ -1,13 +0,0 @@
1
- [tool.poetry]
2
- name = "thorcast_api_client"
3
- version = "0.2.0"
4
- description = "Un client Python pour interagir avec l'API ThorCast"
5
- authors = ["JBCAYRE <jcayre@mint.eco>"]
6
-
7
- [tool.poetry.dependencies]
8
- python = "^3.8"
9
- requests = "^2.26.0"
10
-
11
- [build-system]
12
- requires = ["poetry-core>=1.0.0"]
13
- build-backend = "poetry.core.masonry.api"