pygazpar 1.2.5__py39-none-any.whl → 1.2.7__py39-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.
pygazpar/datasource.py CHANGED
@@ -59,9 +59,9 @@ class WebDataSource(IDataSource):
59
59
  # ------------------------------------------------------
60
60
  def load(self, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
61
61
 
62
- auth_token = self._login(self.__username, self.__password)
62
+ self._login(self.__username, self.__password) # We ignore the return value.
63
63
 
64
- res = self._loadFromSession(auth_token, pceIdentifier, startDate, endDate, frequencies)
64
+ res = self._loadFromSession(pceIdentifier, startDate, endDate, frequencies)
65
65
 
66
66
  Logger.debug("The data update terminates normally")
67
67
 
@@ -88,23 +88,23 @@ class WebDataSource(IDataSource):
88
88
 
89
89
  jar = http.cookiejar.CookieJar()
90
90
 
91
- session = Session()
92
- session.headers.update({"Content-Type": "application/json"})
93
- session.headers.update({"X-Requested-With": "XMLHttpRequest"})
91
+ self._session = Session()
92
+ self._session.headers.update({"Content-Type": "application/json"})
93
+ self._session.headers.update({"X-Requested-With": "XMLHttpRequest"})
94
94
 
95
95
  params = json.loads(AUTH_TOKEN_PARAMS.format(session_token))
96
96
 
97
- response = session.get(AUTH_TOKEN_URL, params=params, allow_redirects=True, cookies=jar) # type: ignore
97
+ response = self._session.get(AUTH_TOKEN_URL, params=params, allow_redirects=True, cookies=jar) # type: ignore
98
98
 
99
99
  if response.status_code != 200:
100
100
  raise Exception(f"An error occurred while getting the auth token. Status code: {response.status_code} - {response.text}")
101
101
 
102
- auth_token = session.cookies.get("auth_token", domain="monespace.grdf.fr")
102
+ auth_token = self._session.cookies.get("auth_token", domain="monespace.grdf.fr")
103
103
 
104
104
  return auth_token # type: ignore
105
105
 
106
106
  @abstractmethod
107
- def _loadFromSession(self, auth_token: str, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
107
+ def _loadFromSession(self, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
108
108
  pass
109
109
 
110
110
 
@@ -133,7 +133,7 @@ class ExcelWebDataSource(WebDataSource):
133
133
  self.__tmpDirectory = tmpDirectory
134
134
 
135
135
  # ------------------------------------------------------
136
- def _loadFromSession(self, auth_token: str, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
136
+ def _loadFromSession(self, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
137
137
 
138
138
  res = {}
139
139
 
@@ -166,16 +166,8 @@ class ExcelWebDataSource(WebDataSource):
166
166
  retry = 10
167
167
  while retry > 0:
168
168
 
169
- # Create a session.
170
- session = Session()
171
- session.headers.update({"Host": "monespace.grdf.fr"})
172
- session.headers.update({"Domain": "grdf.fr"})
173
- session.headers.update({"X-Requested-With": "XMLHttpRequest"})
174
- session.headers.update({"Accept": "application/json"})
175
- session.cookies.set("auth_token", auth_token, domain="monespace.grdf.fr")
176
-
177
169
  try:
178
- self.__downloadFile(session, downloadUrl, self.__tmpDirectory)
170
+ self.__downloadFile(self._session, downloadUrl, self.__tmpDirectory)
179
171
  break
180
172
  except Exception as e:
181
173
 
@@ -267,7 +259,7 @@ class JsonWebDataSource(WebDataSource):
267
259
 
268
260
  super().__init__(username, password)
269
261
 
270
- def _loadFromSession(self, auth_token: str, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
262
+ def _loadFromSession(self, pceIdentifier: str, startDate: date, endDate: date, frequencies: Optional[List[Frequency]] = None) -> MeterReadingsByFrequency:
271
263
 
272
264
  res = {}
273
265
 
@@ -286,16 +278,8 @@ class JsonWebDataSource(WebDataSource):
286
278
  retry = 10
287
279
  while retry > 0:
288
280
 
289
- # Create a session.
290
- session = Session()
291
- session.headers.update({"Host": "monespace.grdf.fr"})
292
- session.headers.update({"Domain": "grdf.fr"})
293
- session.headers.update({"X-Requested-With": "XMLHttpRequest"})
294
- session.headers.update({"Accept": "application/json"})
295
- session.cookies.set("auth_token", auth_token, domain="monespace.grdf.fr")
296
-
297
281
  try:
298
- response = session.get(downloadUrl)
282
+ response = self._session.get(downloadUrl)
299
283
 
300
284
  if "text/html" in response.headers.get("Content-Type"): # type: ignore
301
285
  raise Exception("An error occurred while loading data. Please check your credentials.")
@@ -321,7 +305,7 @@ class JsonWebDataSource(WebDataSource):
321
305
  temperaturesUrl = JsonWebDataSource.TEMPERATURES_URL.format(pceIdentifier, endDate.strftime(JsonWebDataSource.INPUT_DATE_FORMAT), days)
322
306
 
323
307
  # Get weather data.
324
- temperatures = session.get(temperaturesUrl).text
308
+ temperatures = self._session.get(temperaturesUrl).text
325
309
 
326
310
  # Transform all the data into the target structure.
327
311
  daily = JsonParser.parse(data, temperatures, pceIdentifier)
pygazpar/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.2.5"
1
+ __version__ = "1.2.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pygazpar
3
- Version: 1.2.5
3
+ Version: 1.2.7
4
4
  Summary: Retrieve gas consumption from GrDF web site (French Gas Company)
5
5
  Home-page: https://github.com/ssenart/pygazpar
6
6
  Author: Stephane Senart
@@ -218,6 +218,16 @@ All notable changes to this project will be documented in this file.
218
218
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
219
219
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
220
220
 
221
+ ## [1.2.7](https://github.com/ssenart/PyGazpar/compare/1.2.7...1.2.6) - 2025-01-06
222
+
223
+ ### Fixed
224
+ - [#79](https://github.com/ssenart/PyGazpar/issues/79): Fix some unittests that wrongly failed because of the new year.
225
+
226
+ ## [1.2.6](https://github.com/ssenart/PyGazpar/compare/1.2.6...1.2.5) - 2025-01-03
227
+
228
+ ### Fixed
229
+ - [#77](https://github.com/ssenart/PyGazpar/issues/77): Some error may occur while requesting data from GrDF API.
230
+
221
231
  ## [1.2.5](https://github.com/ssenart/PyGazpar/compare/1.2.5...1.2.4) - 2024-12-21
222
232
 
223
233
  ### Fixed
@@ -1,11 +1,11 @@
1
1
  pygazpar/__init__.py,sha256=qshO_XZbDA2Wrt80ABDs0MoScqJytClAuIJjAnILglk,309
2
2
  pygazpar/__main__.py,sha256=Pt3PInX7QiWcs0aBKZN90NTaU8KFnrQiZ5Hsow1eR5U,3177
3
3
  pygazpar/client.py,sha256=JdVm0jZbeibwtTumcRbUSFadfXnCUClPMjL95_J6p5Y,2595
4
- pygazpar/datasource.py,sha256=N9OVdJr4BwtA0W8DvKe4PEE4kLKbSEH2wxAYGNk-iIU,21558
4
+ pygazpar/datasource.py,sha256=D6VBy4ngQDECQfPVi9ZGhKuuOxNDUHjK-9gTDJlATPI,20699
5
5
  pygazpar/enum.py,sha256=3ZCk4SziXF6pxgP3MuQ1qxYfqB3X5DOV8Rtd0GHsK9w,898
6
6
  pygazpar/excelparser.py,sha256=QNFIErXNgMjGGjsGjdnRxAbNpfVagdYmZQtXRub3_Xc,5931
7
7
  pygazpar/jsonparser.py,sha256=OrRdMZNBi7rI4dRGoRW7gjyFwJFk-IvtkRZ_t1XVFrI,1859
8
- pygazpar/version.py,sha256=jBmZf3HLbiQlWiolOsAA6J5-BbxXD2bqFqEqDH3lfqo,22
8
+ pygazpar/version.py,sha256=49prCLbE3fFzLfxem5rd2dr1iV4_L-bN0N4J7jxU5yA,22
9
9
  pygazpar/resources/daily_data_sample.json,sha256=YJovtrNUMs257magTfyxiewLmecySFypcelbGFUUeT8,199583
10
10
  pygazpar/resources/hourly_data_sample.json,sha256=N1F-Xz3GaBn2H1p7uKzhkhKCQV8QVR0t76XD6wmFtXA,3
11
11
  pygazpar/resources/monthly_data_sample.json,sha256=yrr4SqrB2MubeVU2HX_FRDZKHIhC0LXCqkO1iqnFWcg,3351
@@ -16,12 +16,12 @@ samples/excelSample.py,sha256=ltAl-bBz9-U9YI802JpcIswra-vDS7tR_KL5VNdxJ5c,765
16
16
  samples/jsonSample.py,sha256=sYAIusdEJhZdwDAMgHqoWcwDR0FA2eWhSt_2gL_mJRk,736
17
17
  samples/testSample.py,sha256=UeirdEtezHwfZDv_75oxul17YzGWn5yZuHfJYTF3Ez0,387
18
18
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- tests/test_client.py,sha256=UiJCqy_Nctl_YDSVpdaYfrbUEzuu9Td22a4WxNnIhJw,5606
19
+ tests/test_client.py,sha256=BFLz0GNk8qEP4d2-7cAaIcLWpkSnDZo3wRb0AlXBNOQ,5765
20
20
  tests/test_datafileparser.py,sha256=nAeUpOHtelblMpmbrrnf-2GuMjK5ai65veDoymceprE,818
21
- tests/test_datasource.py,sha256=Fkn9BOGVKITAgrx9XipR1_ykT7rdvPyt_PAg3ftjfSU,5983
22
- pygazpar-1.2.5.dist-info/LICENSE.md,sha256=XsCJx_7_BC9tvmE0ZxS1cTNR7ekurog_ea9ybdZ-8tc,1073
23
- pygazpar-1.2.5.dist-info/METADATA,sha256=zEubC-8R9fwkm3ZLrCyWHuwAl5phRM7i9FpPGd64wm8,18827
24
- pygazpar-1.2.5.dist-info/WHEEL,sha256=E6NuJA_MIt2CDvbuRmqVFG99302DhLXEpOp5wbsbDeU,93
25
- pygazpar-1.2.5.dist-info/entry_points.txt,sha256=c_FMZPYlRv1w9EqfgWhlkdJOoje7FcglI0UMm2oRLoI,53
26
- pygazpar-1.2.5.dist-info/top_level.txt,sha256=P7qn-XtanDPBLQsTvjvLV71wH8RK0DYbx8tzN_rDS70,23
27
- pygazpar-1.2.5.dist-info/RECORD,,
21
+ tests/test_datasource.py,sha256=NTeD3yQEi4fTw8ZWz2cuUUdeFC8QVjChBMw5jyqia40,6149
22
+ pygazpar-1.2.7.dist-info/LICENSE.md,sha256=XsCJx_7_BC9tvmE0ZxS1cTNR7ekurog_ea9ybdZ-8tc,1073
23
+ pygazpar-1.2.7.dist-info/METADATA,sha256=zrS5U_76Ad5CdYiixgHJbO-_UZ7amdpp-kwM5Qeus3g,19251
24
+ pygazpar-1.2.7.dist-info/WHEEL,sha256=E6NuJA_MIt2CDvbuRmqVFG99302DhLXEpOp5wbsbDeU,93
25
+ pygazpar-1.2.7.dist-info/entry_points.txt,sha256=c_FMZPYlRv1w9EqfgWhlkdJOoje7FcglI0UMm2oRLoI,53
26
+ pygazpar-1.2.7.dist-info/top_level.txt,sha256=P7qn-XtanDPBLQsTvjvLV71wH8RK0DYbx8tzN_rDS70,23
27
+ pygazpar-1.2.7.dist-info/RECORD,,
tests/test_client.py CHANGED
@@ -1,159 +1,159 @@
1
- from pygazpar.enum import Frequency
2
- from pygazpar.client import Client
3
- from pygazpar.datasource import JsonWebDataSource, TestDataSource, ExcelWebDataSource
4
- import os
5
- import pytest
6
-
7
-
8
- class TestClient:
9
-
10
- @classmethod
11
- def setup_class(cls):
12
- """ setup any state specific to the execution of the given class (which
13
- usually contains tests).
14
- """
15
-
16
- @classmethod
17
- def teardown_class(cls):
18
- """ teardown any state that was previously setup with a call to
19
- setup_class.
20
- """
21
-
22
- def setup_method(self):
23
- """ setup any state tied to the execution of the given method in a
24
- class. setup_method is invoked for every test method of a class.
25
- """
26
- tmpdir = os.path.normpath(f"{os.getcwd()}/tmp")
27
-
28
- # We create the tmp directory if not already exists.
29
- if not os.path.exists(tmpdir):
30
- os.mkdir(tmpdir)
31
-
32
- self.__username = os.environ["GRDF_USERNAME"]
33
- self.__password = os.environ["GRDF_PASSWORD"]
34
- self.__pceIdentifier = os.environ["PCE_IDENTIFIER"]
35
- self.__tmp_directory = tmpdir
36
-
37
- def teardown_method(self):
38
- """ teardown any state that was previously setup with a setup_method
39
- call.
40
- """
41
-
42
- def test_login_error(self):
43
- client = Client(JsonWebDataSource("WrongUsername", "WrongPassword"))
44
-
45
- with pytest.raises(Exception):
46
- client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
47
-
48
- def test_hourly_live(self):
49
- client = Client(JsonWebDataSource(self.__username, self.__password))
50
-
51
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.HOURLY])
52
-
53
- assert (len(data[Frequency.HOURLY.value]) == 0)
54
-
55
- def test_one_day_jsonweb(self):
56
- client = Client(JsonWebDataSource(self.__username, self.__password))
57
-
58
- data = client.loadSince(self.__pceIdentifier, 1, [Frequency.DAILY])
59
-
60
- assert (len(data[Frequency.DAILY.value]) <= 1)
61
-
62
- def test_two_days_jsonweb(self):
63
- client = Client(JsonWebDataSource(self.__username, self.__password))
64
-
65
- data = client.loadSince(self.__pceIdentifier, 2, [Frequency.DAILY])
66
-
67
- assert (len(data[Frequency.DAILY.value]) <= 2)
68
-
69
- # @pytest.mark.skip(reason="Requires live data")
70
- def test_daily_jsonweb(self):
71
- client = Client(JsonWebDataSource(self.__username, self.__password))
72
-
73
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
74
-
75
- assert (len(data[Frequency.DAILY.value]) > 0)
76
-
77
- def test_weekly_jsonweb(self):
78
- client = Client(JsonWebDataSource(self.__username, self.__password))
79
-
80
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
81
-
82
- assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
83
-
84
- def test_monthly_jsonweb(self):
85
- client = Client(JsonWebDataSource(self.__username, self.__password))
86
-
87
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
88
-
89
- assert (len(data[Frequency.MONTHLY.value]) >= 11 and len(data[Frequency.MONTHLY.value]) <= 13)
90
-
91
- def test_yearly_jsonweb(self):
92
- client = Client(JsonWebDataSource(self.__username, self.__password))
93
-
94
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
95
-
96
- assert (len(data[Frequency.YEARLY.value]) == 1)
97
-
98
- def test_daily_excelweb(self):
99
- client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
100
-
101
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
102
-
103
- assert (len(data[Frequency.DAILY.value]) > 0)
104
-
105
- def test_weekly_excelweb(self):
106
- client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
107
-
108
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
109
-
110
- assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
111
-
112
- def test_monthly_excelweb(self):
113
- client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
114
-
115
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
116
-
117
- assert (len(data[Frequency.MONTHLY.value]) >= 12 and len(data[Frequency.MONTHLY.value]) <= 13)
118
-
119
- def test_yearly_excelweb(self):
120
- client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
121
-
122
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
123
-
124
- assert (len(data[Frequency.YEARLY.value]) == 1)
125
-
126
- def test_hourly_sample(self):
127
- client = Client(TestDataSource())
128
-
129
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.HOURLY])
130
-
131
- assert (len(data[Frequency.HOURLY.value]) == 0)
132
-
133
- def test_daily_sample(self):
134
- client = Client(TestDataSource())
135
-
136
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
137
-
138
- assert (len(data[Frequency.DAILY.value]) == 711)
139
-
140
- def test_weekly_sample(self):
141
- client = Client(TestDataSource())
142
-
143
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
144
-
145
- assert (len(data[Frequency.WEEKLY.value]) > 0)
146
-
147
- def test_monthly_sample(self):
148
- client = Client(TestDataSource())
149
-
150
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
151
-
152
- assert (len(data[Frequency.MONTHLY.value]) > 0)
153
-
154
- def test_yearly_sample(self):
155
- client = Client(TestDataSource())
156
-
157
- data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
158
-
159
- assert (len(data[Frequency.YEARLY.value]) == 2)
1
+ from pygazpar.enum import Frequency
2
+ from pygazpar.client import Client
3
+ from pygazpar.datasource import JsonWebDataSource, TestDataSource, ExcelWebDataSource
4
+ import os
5
+ import pytest
6
+
7
+
8
+ class TestClient:
9
+
10
+ @classmethod
11
+ def setup_class(cls):
12
+ """ setup any state specific to the execution of the given class (which
13
+ usually contains tests).
14
+ """
15
+
16
+ @classmethod
17
+ def teardown_class(cls):
18
+ """ teardown any state that was previously setup with a call to
19
+ setup_class.
20
+ """
21
+
22
+ def setup_method(self):
23
+ """ setup any state tied to the execution of the given method in a
24
+ class. setup_method is invoked for every test method of a class.
25
+ """
26
+ tmpdir = os.path.normpath(f"{os.getcwd()}/tmp")
27
+
28
+ # We create the tmp directory if not already exists.
29
+ if not os.path.exists(tmpdir):
30
+ os.mkdir(tmpdir)
31
+
32
+ self.__username = os.environ["GRDF_USERNAME"]
33
+ self.__password = os.environ["GRDF_PASSWORD"]
34
+ self.__pceIdentifier = os.environ["PCE_IDENTIFIER"]
35
+ self.__tmp_directory = tmpdir
36
+
37
+ def teardown_method(self):
38
+ """ teardown any state that was previously setup with a setup_method
39
+ call.
40
+ """
41
+
42
+ def test_login_error(self):
43
+ client = Client(JsonWebDataSource("WrongUsername", "WrongPassword"))
44
+
45
+ with pytest.raises(Exception):
46
+ client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
47
+
48
+ def test_hourly_live(self):
49
+ client = Client(JsonWebDataSource(self.__username, self.__password))
50
+
51
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.HOURLY])
52
+
53
+ assert (len(data[Frequency.HOURLY.value]) == 0)
54
+
55
+ def test_one_day_jsonweb(self):
56
+ client = Client(JsonWebDataSource(self.__username, self.__password))
57
+
58
+ data = client.loadSince(self.__pceIdentifier, 1, [Frequency.DAILY])
59
+
60
+ assert (len(data[Frequency.DAILY.value]) <= 1)
61
+
62
+ def test_two_days_jsonweb(self):
63
+ client = Client(JsonWebDataSource(self.__username, self.__password))
64
+
65
+ data = client.loadSince(self.__pceIdentifier, 2, [Frequency.DAILY])
66
+
67
+ assert (len(data[Frequency.DAILY.value]) <= 2)
68
+
69
+ # @pytest.mark.skip(reason="Requires live data")
70
+ def test_daily_jsonweb(self):
71
+ client = Client(JsonWebDataSource(self.__username, self.__password))
72
+
73
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
74
+
75
+ assert (len(data[Frequency.DAILY.value]) > 0)
76
+
77
+ def test_weekly_jsonweb(self):
78
+ client = Client(JsonWebDataSource(self.__username, self.__password))
79
+
80
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
81
+
82
+ assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
83
+
84
+ def test_monthly_jsonweb(self):
85
+ client = Client(JsonWebDataSource(self.__username, self.__password))
86
+
87
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
88
+
89
+ assert (len(data[Frequency.MONTHLY.value]) >= 11 and len(data[Frequency.MONTHLY.value]) <= 13)
90
+
91
+ def test_yearly_jsonweb(self):
92
+ client = Client(JsonWebDataSource(self.__username, self.__password))
93
+
94
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
95
+
96
+ assert (len(data[Frequency.YEARLY.value]) >= 1)
97
+
98
+ def test_daily_excelweb(self):
99
+ client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
100
+
101
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
102
+
103
+ assert (len(data[Frequency.DAILY.value]) > 0)
104
+
105
+ def test_weekly_excelweb(self):
106
+ client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
107
+
108
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
109
+
110
+ assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
111
+
112
+ def test_monthly_excelweb(self):
113
+ client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
114
+
115
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
116
+
117
+ assert (len(data[Frequency.MONTHLY.value]) >= 12 and len(data[Frequency.MONTHLY.value]) <= 13)
118
+
119
+ def test_yearly_excelweb(self):
120
+ client = Client(ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory))
121
+
122
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
123
+
124
+ assert (len(data[Frequency.YEARLY.value]) >= 1)
125
+
126
+ def test_hourly_sample(self):
127
+ client = Client(TestDataSource())
128
+
129
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.HOURLY])
130
+
131
+ assert (len(data[Frequency.HOURLY.value]) == 0)
132
+
133
+ def test_daily_sample(self):
134
+ client = Client(TestDataSource())
135
+
136
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.DAILY])
137
+
138
+ assert (len(data[Frequency.DAILY.value]) == 711)
139
+
140
+ def test_weekly_sample(self):
141
+ client = Client(TestDataSource())
142
+
143
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.WEEKLY])
144
+
145
+ assert (len(data[Frequency.WEEKLY.value]) > 0)
146
+
147
+ def test_monthly_sample(self):
148
+ client = Client(TestDataSource())
149
+
150
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.MONTHLY])
151
+
152
+ assert (len(data[Frequency.MONTHLY.value]) > 0)
153
+
154
+ def test_yearly_sample(self):
155
+ client = Client(TestDataSource())
156
+
157
+ data = client.loadSince(self.__pceIdentifier, 365, [Frequency.YEARLY])
158
+
159
+ assert (len(data[Frequency.YEARLY.value]) == 2)
tests/test_datasource.py CHANGED
@@ -1,166 +1,166 @@
1
- import os
2
- from pygazpar.datasource import TestDataSource, JsonFileDataSource, ExcelFileDataSource, JsonWebDataSource, ExcelWebDataSource
3
- from pygazpar.enum import Frequency
4
- from datetime import date, timedelta
5
- from dotenv import load_dotenv
6
-
7
-
8
- class TestAllDataSource:
9
-
10
- # ------------------------------------------------------
11
- @classmethod
12
- def setup_class(cls):
13
- """ setup any state specific to the execution of the given class (which
14
- usually contains tests).
15
- """
16
-
17
- # ------------------------------------------------------
18
- @classmethod
19
- def teardown_class(cls):
20
- """ teardown any state that was previously setup with a call to
21
- setup_class.
22
- """
23
-
24
- # ------------------------------------------------------
25
- def setup_method(self):
26
- """ setup any state tied to the execution of the given method in a
27
- class. setup_method is invoked for every test method of a class.
28
- """
29
- tmpdir = os.path.normpath(f"{os.getcwd()}/tmp")
30
-
31
- # We create the tmp directory if not already exists.
32
- if not os.path.exists(tmpdir):
33
- os.mkdir(tmpdir)
34
-
35
- load_dotenv()
36
-
37
- self.__username = os.environ["GRDF_USERNAME"]
38
- self.__password = os.environ["GRDF_PASSWORD"]
39
- self.__pceIdentifier = os.environ["PCE_IDENTIFIER"]
40
- self.__tmp_directory = tmpdir
41
-
42
- # ------------------------------------------------------
43
- def teardown_method(self):
44
- """ teardown any state that was previously setup with a setup_method
45
- call.
46
- """
47
-
48
- # ------------------------------------------------------
49
- def test_sample(self):
50
-
51
- dataSource = TestDataSource()
52
-
53
- endDate = date.today()
54
- startDate = endDate + timedelta(days=-365)
55
-
56
- data = dataSource.load(self.__pceIdentifier, startDate, endDate)
57
-
58
- assert (len(data[Frequency.DAILY.value]) == 711)
59
-
60
- assert (len(data[Frequency.WEEKLY.value]) == 102)
61
-
62
- assert (len(data[Frequency.MONTHLY.value]) == 24)
63
-
64
- assert (len(data[Frequency.YEARLY.value]) == 2)
65
-
66
- # ------------------------------------------------------
67
- def test_jsonfile_sample(self):
68
-
69
- dataSource = JsonFileDataSource("tests/resources/donnees_informatives.json", "tests/resources/temperatures.json")
70
-
71
- endDate = date.today()
72
- startDate = endDate + timedelta(days=-365)
73
-
74
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
75
-
76
- assert (len(data[Frequency.DAILY.value]) == 1096)
77
-
78
- assert (len(data[Frequency.WEEKLY.value]) == 155)
79
-
80
- assert (len(data[Frequency.MONTHLY.value]) == 36)
81
-
82
- assert (len(data[Frequency.YEARLY.value]) == 3)
83
-
84
- # ------------------------------------------------------
85
- def test_daily_excelfile_sample(self):
86
-
87
- dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_DAILY.xlsx")
88
-
89
- endDate = date.today()
90
- startDate = endDate + timedelta(days=-365)
91
-
92
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY])
93
-
94
- assert (len(data[Frequency.DAILY.value]) == 363)
95
-
96
- # ------------------------------------------------------
97
- def test_weekly_excelfile_sample(self):
98
-
99
- dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_WEEKLY.xlsx")
100
-
101
- endDate = date.today()
102
- startDate = endDate + timedelta(days=-365)
103
-
104
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.WEEKLY])
105
-
106
- assert (len(data[Frequency.WEEKLY.value]) == 53)
107
-
108
- # ------------------------------------------------------
109
- def test_monthly_excelfile_sample(self):
110
-
111
- dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_MONTHLY.xlsx")
112
-
113
- endDate = date.today()
114
- startDate = endDate + timedelta(days=-365)
115
-
116
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.MONTHLY])
117
-
118
- assert (len(data[Frequency.MONTHLY.value]) == 13)
119
-
120
- # ------------------------------------------------------
121
- def test_yearly_excelfile_sample(self):
122
-
123
- dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_DAILY.xlsx")
124
-
125
- endDate = date.today()
126
- startDate = endDate + timedelta(days=-365)
127
-
128
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.YEARLY])
129
-
130
- assert (len(data[Frequency.YEARLY.value]) == 1)
131
-
132
- # ------------------------------------------------------
133
- def test_jsonweb(self):
134
-
135
- dataSource = JsonWebDataSource(self.__username, self.__password)
136
-
137
- endDate = date.today()
138
- startDate = endDate + timedelta(days=-365)
139
-
140
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
141
-
142
- assert (len(data[Frequency.DAILY.value]) > 0)
143
-
144
- assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
145
-
146
- assert (len(data[Frequency.MONTHLY.value]) >= 11 and len(data[Frequency.MONTHLY.value]) <= 13)
147
-
148
- assert (len(data[Frequency.YEARLY.value]) == 1)
149
-
150
- # ------------------------------------------------------
151
- def test_excelweb(self):
152
-
153
- dataSource = ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory)
154
-
155
- endDate = date.today()
156
- startDate = endDate + timedelta(days=-365)
157
-
158
- data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
159
-
160
- assert (len(data[Frequency.DAILY.value]) > 0)
161
-
162
- assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
163
-
164
- assert (len(data[Frequency.MONTHLY.value]) >= 12 and len(data[Frequency.MONTHLY.value]) <= 13)
165
-
166
- assert (len(data[Frequency.YEARLY.value]) == 1)
1
+ import os
2
+ from pygazpar.datasource import TestDataSource, JsonFileDataSource, ExcelFileDataSource, JsonWebDataSource, ExcelWebDataSource
3
+ from pygazpar.enum import Frequency
4
+ from datetime import date, timedelta
5
+ from dotenv import load_dotenv
6
+
7
+
8
+ class TestAllDataSource:
9
+
10
+ # ------------------------------------------------------
11
+ @classmethod
12
+ def setup_class(cls):
13
+ """ setup any state specific to the execution of the given class (which
14
+ usually contains tests).
15
+ """
16
+
17
+ # ------------------------------------------------------
18
+ @classmethod
19
+ def teardown_class(cls):
20
+ """ teardown any state that was previously setup with a call to
21
+ setup_class.
22
+ """
23
+
24
+ # ------------------------------------------------------
25
+ def setup_method(self):
26
+ """ setup any state tied to the execution of the given method in a
27
+ class. setup_method is invoked for every test method of a class.
28
+ """
29
+ tmpdir = os.path.normpath(f"{os.getcwd()}/tmp")
30
+
31
+ # We create the tmp directory if not already exists.
32
+ if not os.path.exists(tmpdir):
33
+ os.mkdir(tmpdir)
34
+
35
+ load_dotenv()
36
+
37
+ self.__username = os.environ["GRDF_USERNAME"]
38
+ self.__password = os.environ["GRDF_PASSWORD"]
39
+ self.__pceIdentifier = os.environ["PCE_IDENTIFIER"]
40
+ self.__tmp_directory = tmpdir
41
+
42
+ # ------------------------------------------------------
43
+ def teardown_method(self):
44
+ """ teardown any state that was previously setup with a setup_method
45
+ call.
46
+ """
47
+
48
+ # ------------------------------------------------------
49
+ def test_sample(self):
50
+
51
+ dataSource = TestDataSource()
52
+
53
+ endDate = date.today()
54
+ startDate = endDate + timedelta(days=-365)
55
+
56
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate)
57
+
58
+ assert (len(data[Frequency.DAILY.value]) == 711)
59
+
60
+ assert (len(data[Frequency.WEEKLY.value]) == 102)
61
+
62
+ assert (len(data[Frequency.MONTHLY.value]) == 24)
63
+
64
+ assert (len(data[Frequency.YEARLY.value]) == 2)
65
+
66
+ # ------------------------------------------------------
67
+ def test_jsonfile_sample(self):
68
+
69
+ dataSource = JsonFileDataSource("tests/resources/donnees_informatives.json", "tests/resources/temperatures.json")
70
+
71
+ endDate = date.today()
72
+ startDate = endDate + timedelta(days=-365)
73
+
74
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
75
+
76
+ assert (len(data[Frequency.DAILY.value]) == 1096)
77
+
78
+ assert (len(data[Frequency.WEEKLY.value]) == 155)
79
+
80
+ assert (len(data[Frequency.MONTHLY.value]) == 36)
81
+
82
+ assert (len(data[Frequency.YEARLY.value]) == 3)
83
+
84
+ # ------------------------------------------------------
85
+ def test_daily_excelfile_sample(self):
86
+
87
+ dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_DAILY.xlsx")
88
+
89
+ endDate = date.today()
90
+ startDate = endDate + timedelta(days=-365)
91
+
92
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY])
93
+
94
+ assert (len(data[Frequency.DAILY.value]) == 363)
95
+
96
+ # ------------------------------------------------------
97
+ def test_weekly_excelfile_sample(self):
98
+
99
+ dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_WEEKLY.xlsx")
100
+
101
+ endDate = date.today()
102
+ startDate = endDate + timedelta(days=-365)
103
+
104
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.WEEKLY])
105
+
106
+ assert (len(data[Frequency.WEEKLY.value]) == 53)
107
+
108
+ # ------------------------------------------------------
109
+ def test_monthly_excelfile_sample(self):
110
+
111
+ dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_MONTHLY.xlsx")
112
+
113
+ endDate = date.today()
114
+ startDate = endDate + timedelta(days=-365)
115
+
116
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.MONTHLY])
117
+
118
+ assert (len(data[Frequency.MONTHLY.value]) == 13)
119
+
120
+ # ------------------------------------------------------
121
+ def test_yearly_excelfile_sample(self):
122
+
123
+ dataSource = ExcelFileDataSource("tests/resources/Donnees_informatives_PCE_DAILY.xlsx")
124
+
125
+ endDate = date.today()
126
+ startDate = endDate + timedelta(days=-365)
127
+
128
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.YEARLY])
129
+
130
+ assert (len(data[Frequency.YEARLY.value]) == 1)
131
+
132
+ # ------------------------------------------------------
133
+ def test_jsonweb(self):
134
+
135
+ dataSource = JsonWebDataSource(self.__username, self.__password)
136
+
137
+ endDate = date.today()
138
+ startDate = endDate + timedelta(days=-365)
139
+
140
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
141
+
142
+ assert (len(data[Frequency.DAILY.value]) > 0)
143
+
144
+ assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
145
+
146
+ assert (len(data[Frequency.MONTHLY.value]) >= 11 and len(data[Frequency.MONTHLY.value]) <= 13)
147
+
148
+ assert (len(data[Frequency.YEARLY.value]) >= 1)
149
+
150
+ # ------------------------------------------------------
151
+ def test_excelweb(self):
152
+
153
+ dataSource = ExcelWebDataSource(self.__username, self.__password, self.__tmp_directory)
154
+
155
+ endDate = date.today()
156
+ startDate = endDate + timedelta(days=-365)
157
+
158
+ data = dataSource.load(self.__pceIdentifier, startDate, endDate, [Frequency.DAILY, Frequency.WEEKLY, Frequency.MONTHLY, Frequency.YEARLY])
159
+
160
+ assert (len(data[Frequency.DAILY.value]) > 0)
161
+
162
+ assert (len(data[Frequency.WEEKLY.value]) >= 51 and len(data[Frequency.WEEKLY.value]) <= 54)
163
+
164
+ assert (len(data[Frequency.MONTHLY.value]) >= 12 and len(data[Frequency.MONTHLY.value]) <= 13)
165
+
166
+ assert (len(data[Frequency.YEARLY.value]) >= 1)