myelectricaldatapy 2.4.8__tar.gz → 2.4.9__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.
Files changed (51) hide show
  1. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/PKG-INFO +1 -1
  2. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/api.py +6 -1
  3. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/PKG-INFO +1 -1
  4. myelectricaldatapy-2.4.9/myelectricaldatapy.egg-info/scm_version.json +8 -0
  5. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/test_load_data.py +36 -0
  6. myelectricaldatapy-2.4.8/myelectricaldatapy.egg-info/scm_version.json +0 -8
  7. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.devcontainer/devcontainer-lock.json +0 -0
  8. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.devcontainer/devcontainer.json +0 -0
  9. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.github/dependabot.yml +0 -0
  10. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.github/workflows/auto-approve.yml +0 -0
  11. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.github/workflows/python-lint.yml +0 -0
  12. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.github/workflows/python-publish.yml +0 -0
  13. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.github/workflows/release.yml +0 -0
  14. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.gitignore +0 -0
  15. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.pre-commit-config.yaml +0 -0
  16. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/.vscode/settings.json +0 -0
  17. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/LICENSE +0 -0
  18. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/README.md +0 -0
  19. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/_secrets.yaml +0 -0
  20. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/example.py +0 -0
  21. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/__init__.py +0 -0
  22. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/analytics.py +0 -0
  23. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/auth.py +0 -0
  24. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/const.py +0 -0
  25. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/exceptions.py +0 -0
  26. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/mypdl.py +0 -0
  27. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/py.typed +0 -0
  28. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/types.py +0 -0
  29. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy/tz.py +0 -0
  30. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/SOURCES.txt +0 -0
  31. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/dependency_links.txt +0 -0
  32. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/requires.txt +0 -0
  33. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/scm_file_list.json +0 -0
  34. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/myelectricaldatapy.egg-info/top_level.txt +0 -0
  35. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/pyproject.toml +0 -0
  36. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/setup.cfg +0 -0
  37. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/__init__.py +0 -0
  38. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/conftest.py +0 -0
  39. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/consts.py +0 -0
  40. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/access.json +0 -0
  41. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/address.json +0 -0
  42. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/contract.json +0 -0
  43. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/daily.json +0 -0
  44. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/detail.json +0 -0
  45. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/ecowatt.json +0 -0
  46. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/identity.json +0 -0
  47. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/invalid_access.json +0 -0
  48. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/fixtures/tempo.json +0 -0
  49. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/test_analytics.py +0 -0
  50. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/tests/test_auth.py +0 -0
  51. {myelectricaldatapy-2.4.8 → myelectricaldatapy-2.4.9}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: myelectricaldatapy
3
- Version: 2.4.8
3
+ Version: 2.4.9
4
4
  Summary: Fetch Linky data from myelectricaldata.fr
5
5
  Author-email: Cyr-ius <cyr-ius@ipocus.net>
6
6
  License-Expression: GPL-3.0-or-later
@@ -11,7 +11,7 @@ from pydantic import BaseModel, ValidationError
11
11
 
12
12
  from .auth import EnedisAuth
13
13
  from .const import DAILY_CONSUM, DAILY_PROD, DETAIL_CONSUM, DETAIL_PROD
14
- from .exceptions import EnedisException, PayloadError
14
+ from .exceptions import EnedisException, LimitReached, PayloadError
15
15
  from .types import (
16
16
  AccessResponse,
17
17
  Contract,
@@ -275,6 +275,11 @@ class Enedis:
275
275
  DataCollect,
276
276
  await self.async_fetch_datas(service, pdl, start, end),
277
277
  )
278
+ except LimitReached:
279
+ # Quota/throttling errors apply to every remaining chunk too,
280
+ # so let the caller see them (e.g. to back off until
281
+ # ThrottlingError.next_access_time) instead of swallowing them.
282
+ raise
278
283
  except EnedisException as error:
279
284
  raise_error = True
280
285
  logger.error(error)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: myelectricaldatapy
3
- Version: 2.4.8
3
+ Version: 2.4.9
4
4
  Summary: Fetch Linky data from myelectricaldata.fr
5
5
  Author-email: Cyr-ius <cyr-ius@ipocus.net>
6
6
  License-Expression: GPL-3.0-or-later
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.4.9",
3
+ "distance": 0,
4
+ "node": "g09d1e042b2bb1d14c1f0d68f161e24e163c8052f",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-11"
8
+ }
@@ -16,6 +16,7 @@ from myelectricaldatapy import (
16
16
  EnedisException,
17
17
  LimitReached,
18
18
  Subscription,
19
+ ThrottlingError,
19
20
  )
20
21
  from myelectricaldatapy.tz import LOCAL_TIMEZONE
21
22
 
@@ -249,3 +250,38 @@ async def test_exception(
249
250
  pass
250
251
  assert api.last_access is not None
251
252
  assert api.access.valid is True
253
+
254
+
255
+ async def test_details_throttling_propagates(
256
+ mock_access,
257
+ session,
258
+ ) -> None:
259
+ """A ThrottlingError raised while fetching a details chunk must reach the caller.
260
+
261
+ Regression test: ``Enedis._async_get_details`` used to catch every
262
+ ``EnedisException`` per 7-day chunk and only log it, so callers (and
263
+ their ``next_access_time`` back-off logic) never saw the throttling.
264
+ Deliberately bypasses the ``mock_enedis`` fixture, which stubs
265
+ ``async_get_details_consumption`` wholesale and would skip the internal
266
+ per-chunk loop this test targets.
267
+ """
268
+ throttling = ThrottlingError(
269
+ "Throttled", next_access_time="2026-Sep-05 16:00:00+0000 UTC"
270
+ )
271
+ with (
272
+ patch.object(
273
+ myelectricaldatapy.Enedis,
274
+ "async_valid_access",
275
+ return_value=mock_access,
276
+ ),
277
+ patch.object(
278
+ myelectricaldatapy.Enedis,
279
+ "async_fetch_datas",
280
+ side_effect=throttling,
281
+ ),
282
+ ):
283
+ api = EnedisByPDL(pdl=PDL, token=TOKEN, session=session)
284
+ api.set_data_fetch(DETAIL_CONSUM)
285
+ with pytest.raises(ThrottlingError) as exc_info:
286
+ await api.async_update()
287
+ assert exc_info.value.next_access_time == "2026-Sep-05 16:00:00+0000 UTC"
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "2.4.8",
3
- "distance": 0,
4
- "node": "g5cd9f3854591c39f30943a62859e23b7590d7a81",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-05"
8
- }