e-data 2.0.0.dev125__py3-none-any.whl → 2.0.0.dev126__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: e-data
3
- Version: 2.0.0.dev125
3
+ Version: 2.0.0.dev126
4
4
  Summary: Python library for managing spanish energy data from various web providers
5
5
  Author-email: VMG <vmayorg@outlook.es>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,4 +1,4 @@
1
- e_data-2.0.0.dev125.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1
+ e_data-2.0.0.dev126.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
2
2
  edata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  edata/cli.py,sha256=0pmlaaXPVfbxPVHMovsuK9qf8PGXl38AV3gtIsk95O4,4010
4
4
  edata/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -17,12 +17,12 @@ edata/providers/__init__.py,sha256=5xaRKPttYM6EpVE1I_vhUAF25L9pEM_qK_5Ix6xnQe0,1
17
17
  edata/providers/datadis.py,sha256=a084ArY83ncvrMQvMSD2BY1rHlhp42dwJJkU8avmleo,20137
18
18
  edata/providers/redata.py,sha256=uvxO2TTtSNSfPRWHZifLjbaP7zAr6O7CZ1oRQFNbIhQ,3122
19
19
  edata/services/bill_service.py,sha256=cZkf-CVA-1I1l1vasB8waVGbS4FkODL_W9x9H_DoXG0,14632
20
- edata/services/data_service.py,sha256=1oIsQFlepCvpcR1T2WRhgjPafRCoXtvKFcL6eU1EM18,16945
20
+ edata/services/data_service.py,sha256=vLm2LuWTiJgWXYOQUjwaTvkEWTo0gCt6nCkUUtVIIQ0,17120
21
21
  edata/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  edata/tests/test_datadis_connector.py,sha256=O3mjI5uIOgFz3PzQsApcG6J2yXd8rlEtj8By-9dsDbg,9270
23
23
  edata/tests/test_redata_connector.py,sha256=SBvxsma5t-qvz2drxNisNM2P1STTurqEs1TSDgwaPJ8,508
24
- edata/tests/test_services.py,sha256=K8Jx_LpFAqenupaF0I58whpo5OGUaSWBhN4MwNA2TGc,6179
25
- e_data-2.0.0.dev125.dist-info/METADATA,sha256=jaRZ4ufDfQhJinChybMh0kJEEYCaIdlG-n3b89hd_T0,48075
26
- e_data-2.0.0.dev125.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
27
- e_data-2.0.0.dev125.dist-info/top_level.txt,sha256=Ez-fReWtUVTMcFuH0dzCnoKIgMBHgjLaBuba8QiKC7g,6
28
- e_data-2.0.0.dev125.dist-info/RECORD,,
24
+ edata/tests/test_services.py,sha256=xR_BxNttWzoEGXh02W6Iyy_QQ9odzlLXj7X9nVXd5Co,6889
25
+ e_data-2.0.0.dev126.dist-info/METADATA,sha256=lYEx8a9kPp2tiOPuEVT8OmBggtsEjgluiJACOuFO4K8,48075
26
+ e_data-2.0.0.dev126.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
27
+ e_data-2.0.0.dev126.dist-info/top_level.txt,sha256=Ez-fReWtUVTMcFuH0dzCnoKIgMBHgjLaBuba8QiKC7g,6
28
+ e_data-2.0.0.dev126.dist-info/RECORD,,
@@ -316,7 +316,9 @@ class DataService:
316
316
  # end date out of bounds
317
317
  return False
318
318
  if _pvpc_dt := await self._get_last_pvpc_dt():
319
- start = _pvpc_dt + timedelta(hours=1)
319
+ # keep within the fetchable window even if the last stored price is
320
+ # older than a month, otherwise REData rejects the range with a 400
321
+ start = max(_pvpc_dt + timedelta(hours=1), min_date)
320
322
  if start >= end:
321
323
  _LOGGER.info("%s pvpc prices are already synced", self._scups)
322
324
  # data is already synced
@@ -1,3 +1,4 @@
1
+ from datetime import datetime, timedelta
1
2
  import json
2
3
  import os
3
4
  from tempfile import gettempdir
@@ -7,6 +8,7 @@ import pytest
7
8
  import pytest_asyncio
8
9
  from syrupy.assertion import SnapshotAssertion
9
10
 
11
+ from edata.core.utils import get_day
10
12
  from edata.models.bill import BillingRules
11
13
  from edata.models.data import Energy, Power
12
14
  from edata.models.supply import Contract, Supply
@@ -211,3 +213,22 @@ async def test_clear_bills(populated_data_service, energy, storage_dir):
211
213
  assert len(await bs.get_bills("hour")) == 0
212
214
  assert len(await bs.get_bills(type_="day")) == 0
213
215
  assert len(await bs.get_bills(type_="month")) == 0
216
+
217
+
218
+ @pytest.mark.asyncio
219
+ async def test_update_pvpc_clamps_range_to_min_date(populated_data_service):
220
+ ds = populated_data_service
221
+ now = datetime.now()
222
+ stale_dt = now - timedelta(days=90)
223
+
224
+ with (
225
+ patch.object(ds, "_get_last_pvpc_dt", AsyncMock(return_value=stale_dt)),
226
+ patch.object(
227
+ ds.redata, "async_get_realtime_prices", AsyncMock(return_value=[])
228
+ ) as mock_fetch,
229
+ ):
230
+ await ds.update_pvpc(now - timedelta(days=365), now)
231
+
232
+ mock_fetch.assert_awaited_once()
233
+ called_start = mock_fetch.await_args.args[0]
234
+ assert called_start >= get_day(now) - timedelta(days=28)