hydroserverpy 0.5.0b4__py3-none-any.whl → 0.5.0b5__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.

Potentially problematic release.


This version of hydroserverpy might be problematic. Click here for more details.

@@ -320,3 +320,23 @@ class Datastream(HydroServerModel, DatastreamFields):
320
320
  uid=self.uid,
321
321
  observations=observations,
322
322
  )
323
+
324
+ # TODO: Find a better long-term solution for this issue.
325
+ def sync_phenomenon_end_time(self):
326
+ """Ensures the phenomenon_end_time field matches the actual end time of the observations."""
327
+
328
+ response = self._connection.request(
329
+ "get", f"/api/data/datastreams/{str(self.uid)}/observations",
330
+ params={
331
+ "order": "desc",
332
+ "page": 1,
333
+ "page_size": 1
334
+ }
335
+ ).json()
336
+
337
+ if len(response["phenomenon_time"]) > 0:
338
+ self.phenomenon_end_time = datetime.fromisoformat(response["phenomenon_time"][0])
339
+ else:
340
+ self.phenomenon_end_time = None
341
+
342
+ self.save()
@@ -52,7 +52,7 @@ class HydroServerETLCSV:
52
52
  self._file_header_error = False
53
53
  self._file_timestamp_error = False
54
54
 
55
- self._chunk_size = 10000
55
+ self._chunk_size = 1000
56
56
  self._observations = {}
57
57
 
58
58
  def run(self):
@@ -125,6 +125,9 @@ class HydroServerETLCSV:
125
125
  timestamp = self._parse_row_timestamp(row)
126
126
 
127
127
  for datastream in self._datastreams.values():
128
+ if index == self._data_source.settings["transformer"]["dataStartRow"]:
129
+ datastream.sync_phenomenon_end_time()
130
+
128
131
  if str(datastream.uid) not in self._datastream_start_row_indexes.keys():
129
132
  if (
130
133
  not datastream.phenomenon_end_time
@@ -296,8 +299,9 @@ class HydroServerETLCSV:
296
299
  uid=datastream_id,
297
300
  observations=observations_df,
298
301
  )
299
- except HTTPError:
302
+ except HTTPError as e:
300
303
  failed_datastreams.append(datastream_id)
304
+ logger.error(f"Failed to POST observations to datastream: {str(datastream_id)} - {e}")
301
305
 
302
306
  elif datastream_id in self._failed_datastreams:
303
307
  logger.info(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydroserverpy
3
- Version: 0.5.0b4
3
+ Version: 0.5.0b5
4
4
  Requires-Python: <4,>=3.9
5
5
  License-File: LICENSE
6
6
  Requires-Dist: requests>=2
@@ -15,7 +15,7 @@ hydroserverpy/api/models/iam/collaborator.py,sha256=jp661DKDCwk8c8HFPAV-YVhEc80F
15
15
  hydroserverpy/api/models/iam/role.py,sha256=8FVTj_1QwtPF9tk7baliMVg000kjc5N8oP6eYo8vTDY,275
16
16
  hydroserverpy/api/models/iam/workspace.py,sha256=s9u1oZyOdxM7txjJARFcIBrWMHQSDxODdreiatFsXJs,7331
17
17
  hydroserverpy/api/models/sta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- hydroserverpy/api/models/sta/datastream.py,sha256=fvV4TPjLeThlH7kaYsLouwx74Ey4CCn2ixMPswULGwM,10497
18
+ hydroserverpy/api/models/sta/datastream.py,sha256=vRjgwAKaoBJEtgUXrZjIS-VuIZsCilm7FRwbvLS8Y8o,11186
19
19
  hydroserverpy/api/models/sta/observed_property.py,sha256=ThTg8aPMHPxbk9Hzpxw3AwM16gE1xvYpRK8UkiOdGeA,2180
20
20
  hydroserverpy/api/models/sta/processing_level.py,sha256=y5_0wX7QGXgswvukXJtbpOiTCZ9pI8E08DXaTSUHakg,1470
21
21
  hydroserverpy/api/models/sta/result_qualifier.py,sha256=IJcY04KjP9e2D-jPzUJjH2PC-JvDNCjbi5LKkTVSwgw,1416
@@ -55,12 +55,12 @@ hydroserverpy/etl/transformers/csv_transformer.py,sha256=9DKSO4NfUUDlr_c6UnH4AU3
55
55
  hydroserverpy/etl/transformers/json_transformer.py,sha256=ity0MXcYjEnlun4Y6cVSrnjrglKrK4JOXXHxWHIHN2A,2323
56
56
  hydroserverpy/etl_csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  hydroserverpy/etl_csv/exceptions.py,sha256=0UY8YUlNepG0y6FfH36hJyR1bOhwYHSZIdUSSMTg7GA,314
58
- hydroserverpy/etl_csv/hydroserver_etl_csv.py,sha256=l1triLLJpXbOQF8PqueK6aRn2nMM_jZZY_hPpH5iJaE,14295
58
+ hydroserverpy/etl_csv/hydroserver_etl_csv.py,sha256=0ueBphEaAAlsb0cn71Ihgd5zOD8Zdu4Ts_yGwvXW53M,14544
59
59
  hydroserverpy/quality/__init__.py,sha256=GGBMkFSXciJLYrbV-NraFrj_mXWCy_GTcy9KKrKXU4c,84
60
60
  hydroserverpy/quality/service.py,sha256=U02UfLKVmFvr5ySiH0n0JYzUIabq5uprrHIiwcqBlqY,13879
61
- hydroserverpy-0.5.0b4.dist-info/licenses/LICENSE,sha256=xVqFxDw3QOEJukakL7gQCqIMTQ1dlSCTo6Oc1otNW80,1508
62
- hydroserverpy-0.5.0b4.dist-info/METADATA,sha256=oXiWKFvlOxc8GSnihwBPWNZb3QgpeF1dudmsql69WH4,532
63
- hydroserverpy-0.5.0b4.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
64
- hydroserverpy-0.5.0b4.dist-info/top_level.txt,sha256=Zf37hrncXLOYvXhgCrf5mZdeq81G9fShdE2LfYbtb7w,14
65
- hydroserverpy-0.5.0b4.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
66
- hydroserverpy-0.5.0b4.dist-info/RECORD,,
61
+ hydroserverpy-0.5.0b5.dist-info/licenses/LICENSE,sha256=xVqFxDw3QOEJukakL7gQCqIMTQ1dlSCTo6Oc1otNW80,1508
62
+ hydroserverpy-0.5.0b5.dist-info/METADATA,sha256=2MHOiPK4LfT1plINuLzDUiT0TwVmD2yqZu3edn0BYCI,532
63
+ hydroserverpy-0.5.0b5.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
64
+ hydroserverpy-0.5.0b5.dist-info/top_level.txt,sha256=Zf37hrncXLOYvXhgCrf5mZdeq81G9fShdE2LfYbtb7w,14
65
+ hydroserverpy-0.5.0b5.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
66
+ hydroserverpy-0.5.0b5.dist-info/RECORD,,