myelectricaldatapy 2.4.2__tar.gz → 2.4.3__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 (50) hide show
  1. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/PKG-INFO +1 -1
  2. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/api.py +6 -6
  3. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/auth.py +1 -1
  4. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/mypdl.py +4 -3
  5. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/PKG-INFO +1 -1
  6. myelectricaldatapy-2.4.3/myelectricaldatapy.egg-info/scm_version.json +8 -0
  7. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/test_load_data.py +12 -0
  8. myelectricaldatapy-2.4.2/myelectricaldatapy.egg-info/scm_version.json +0 -8
  9. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.devcontainer/devcontainer-lock.json +0 -0
  10. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.devcontainer/devcontainer.json +0 -0
  11. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.github/dependabot.yml +0 -0
  12. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.github/workflows/auto-approve.yml +0 -0
  13. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.github/workflows/python-lint.yml +0 -0
  14. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.github/workflows/python-publish.yml +0 -0
  15. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.github/workflows/release.yml +0 -0
  16. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.gitignore +0 -0
  17. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.pre-commit-config.yaml +0 -0
  18. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/.vscode/settings.json +0 -0
  19. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/LICENSE +0 -0
  20. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/README.md +0 -0
  21. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/_secrets.yaml +0 -0
  22. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/example.py +0 -0
  23. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/__init__.py +0 -0
  24. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/analytics.py +0 -0
  25. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/const.py +0 -0
  26. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/exceptions.py +0 -0
  27. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/py.typed +0 -0
  28. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/types.py +0 -0
  29. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy/tz.py +0 -0
  30. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/SOURCES.txt +0 -0
  31. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/dependency_links.txt +0 -0
  32. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/requires.txt +0 -0
  33. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/scm_file_list.json +0 -0
  34. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/myelectricaldatapy.egg-info/top_level.txt +0 -0
  35. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/pyproject.toml +0 -0
  36. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/setup.cfg +0 -0
  37. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/__init__.py +0 -0
  38. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/conftest.py +0 -0
  39. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/consts.py +0 -0
  40. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/access.json +0 -0
  41. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/address.json +0 -0
  42. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/contract.json +0 -0
  43. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/daily.json +0 -0
  44. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/detail.json +0 -0
  45. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/ecowatt.json +0 -0
  46. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/identity.json +0 -0
  47. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/invalid_access.json +0 -0
  48. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/fixtures/tempo.json +0 -0
  49. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/tests/test_analytics.py +0 -0
  50. {myelectricaldatapy-2.4.2 → myelectricaldatapy-2.4.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: myelectricaldatapy
3
- Version: 2.4.2
3
+ Version: 2.4.3
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
@@ -58,7 +58,7 @@ class Enedis:
58
58
  session = session or ClientSession()
59
59
  self.auth = EnedisAuth(session, token, timeout)
60
60
  self.async_request = self.auth.async_request
61
- self.offpeaks: list[str] = []
61
+ self.offpeaks: list[tuple[str, str]] = []
62
62
  self.last_access: date | None = None
63
63
 
64
64
  async def async_fetch_datas(
@@ -72,7 +72,7 @@ class Enedis:
72
72
  start_date = start.strftime("%Y-%m-%d")
73
73
  end_date = end.strftime("%Y-%m-%d")
74
74
  path_range = f"/start/{start_date}/end/{end_date}"
75
- path = f"{service}/{pdl}{path_range}"
75
+ path = f"/{service}/{pdl}{path_range}"
76
76
  return await self.async_request(path=path)
77
77
 
78
78
  async def async_valid_access(self, pdl: str) -> AccessResponse:
@@ -132,7 +132,7 @@ class Enedis:
132
132
  if end
133
133
  else (local_now() + timedelta(days=1)).strftime("%Y-%m-%d")
134
134
  )
135
- raw = await self.auth.async_request(path=f"rte/tempo/{str_start}/{str_end}")
135
+ raw = await self.auth.async_request(path=f"/rte/tempo/{str_start}/{str_end}")
136
136
  try:
137
137
  return TempoResponse.validate_python(raw)
138
138
  except ValidationError as error:
@@ -141,7 +141,7 @@ class Enedis:
141
141
 
142
142
  async def async_get_tempo_days(self) -> TempoDays | None:
143
143
  """Summary Tempo days before the end of year."""
144
- raw = await self.auth.async_request(path="edf/tempo/days")
144
+ raw = await self.auth.async_request(path="/edf/tempo/days")
145
145
  try:
146
146
  return TempoDays.model_validate(raw)
147
147
  except ValidationError as error:
@@ -150,7 +150,7 @@ class Enedis:
150
150
 
151
151
  async def async_get_tempo_prices(self) -> Prices | None:
152
152
  """Return Tempo prices as a :class:`Prices` model, one value per colour."""
153
- raw = await self.auth.async_request(path="edf/tempo/price")
153
+ raw = await self.auth.async_request(path="/edf/tempo/price")
154
154
  try:
155
155
  return Prices(
156
156
  standard=TempoPrice(
@@ -180,7 +180,7 @@ class Enedis:
180
180
  if end
181
181
  else (local_now() + timedelta(days=1)).strftime("%Y-%m-%d")
182
182
  )
183
- raw = await self.async_request(path=f"rte/ecowatt/{str_start}/{str_end}")
183
+ raw = await self.async_request(path=f"/rte/ecowatt/{str_start}/{str_end}")
184
184
  try:
185
185
  return EcowattResponse.validate_python(raw)
186
186
  except ValidationError as error:
@@ -41,7 +41,7 @@ class EnedisAuth:
41
41
  try:
42
42
  async with asyncio.timeout(self.timeout):
43
43
  _LOGGER.debug("Request: %s (%s) - %s", path, method, kwargs.get("json"))
44
- response = await self.session.request(method, f"{URL}/{path}", **kwargs)
44
+ response = await self.session.request(method, f"{URL}{path}", **kwargs)
45
45
  contents = await response.read()
46
46
  response.raise_for_status()
47
47
  except (TimeoutError, asyncio.CancelledError) as error:
@@ -103,7 +103,7 @@ class EnedisByPDL:
103
103
  self.ecowatt: EcowattMapping | None = None
104
104
  self.has_collected: bool = False
105
105
  self.has_parameters: bool = False
106
- self.intervals: list[tuple[str, str]] = []
106
+ self.offpeak_intervals: list[tuple[str, str]] = []
107
107
  self.last_access: dt = local_now()
108
108
  self._update_lock = asyncio.Lock()
109
109
  self.last_refresh: date | None = None
@@ -123,7 +123,7 @@ class EnedisByPDL:
123
123
  @property
124
124
  def has_intervals(self) -> bool:
125
125
  """Intervals exist."""
126
- return len(self.intervals) > 0
126
+ return len(self.offpeak_intervals) > 0
127
127
 
128
128
  @property
129
129
  def has_tempo_subscription(self) -> bool:
@@ -239,6 +239,7 @@ class EnedisByPDL:
239
239
  if self.contract is None and self.has_collected is False:
240
240
  try:
241
241
  self.contract = await self._api.async_get_contract(self.pdl)
242
+ self.offpeak_intervals = self._api.offpeaks
242
243
  except EnedisException as error:
243
244
  _LOGGER.warning(error)
244
245
 
@@ -282,7 +283,7 @@ class EnedisByPDL:
282
283
  def _set_intervals(self, mode: Mode, intervals: list[tuple[str, str]]) -> None:
283
284
  """Set intervals."""
284
285
  if isinstance(intervals, list):
285
- self.intervals = intervals
286
+ self.offpeak_intervals = intervals
286
287
  self._params[mode].update({ATTR_INTERVALS: intervals})
287
288
 
288
289
  def _set_prices(self, mode: Mode, prices: Prices | Mapping[str, Any]) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: myelectricaldatapy
3
- Version: 2.4.2
3
+ Version: 2.4.3
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.3",
3
+ "distance": 0,
4
+ "node": "g2afa2181f2092d6817f200ee267f7d7983b7f92c",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-31"
8
+ }
@@ -51,6 +51,18 @@ async def test_contract(mock_enedis: Mock, session) -> None:
51
51
  assert api.contract.segment == "C5"
52
52
 
53
53
 
54
+ @freeze_time("2023-01-23")
55
+ async def test_offpeak_intervals(mock_enedis: Mock, session) -> None:
56
+ """Test subscription compute."""
57
+ api = Enedis(token=TOKEN, session=session)
58
+ await api.async_get_contract(PDL)
59
+ assert isinstance(api.offpeaks[0], tuple)
60
+
61
+ api = EnedisByPDL(pdl=PDL, token=TOKEN, session=session)
62
+ await api.async_update()
63
+ assert isinstance(api.offpeak_intervals[0], tuple)
64
+
65
+
54
66
  @freeze_time("2023-01-23")
55
67
  async def test_ecowatt(mock_enedis: Mock, session) -> None:
56
68
  """Test get ecowatt."""
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "2.4.2",
3
- "distance": 0,
4
- "node": "g9cc30e1b79e821e698039046f59932119b5fd3ca",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-08-30"
8
- }