hydroserverpy 2.0.0b2__tar.gz → 2.0.0b3__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 (108) hide show
  1. {hydroserverpy-2.0.0b2/src/hydroserverpy.egg-info → hydroserverpy-2.0.0b3}/PKG-INFO +1 -1
  2. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/setup.cfg +1 -1
  3. hydroserverpy-2.0.0b3/src/hydroserverpy/api/models/etl/mapping.py +14 -0
  4. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/etl/task.py +9 -3
  5. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/etl/task.py +11 -0
  6. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/loaders/hydroserver.py +3 -1
  7. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3/src/hydroserverpy.egg-info}/PKG-INFO +1 -1
  8. hydroserverpy-2.0.0b2/src/hydroserverpy/api/models/etl/mapping.py +0 -10
  9. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/LICENSE +0 -0
  10. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/README.md +0 -0
  11. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/pyproject.toml +0 -0
  12. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/__init__.py +0 -0
  13. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/__init__.py +0 -0
  14. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/client.py +0 -0
  15. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/__init__.py +0 -0
  16. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/base.py +0 -0
  17. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/etl/__init__.py +0 -0
  18. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/etl/data_connection.py +0 -0
  19. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/etl/run.py +0 -0
  20. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/__init__.py +0 -0
  21. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/account.py +0 -0
  22. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/apikey.py +0 -0
  23. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/collaborator.py +0 -0
  24. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/role.py +0 -0
  25. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/iam/workspace.py +0 -0
  26. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/monitoring/__init__.py +0 -0
  27. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/monitoring/rule.py +0 -0
  28. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/monitoring/task.py +0 -0
  29. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/orchestration/__init__.py +0 -0
  30. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/orchestration/run.py +0 -0
  31. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/products/__init__.py +0 -0
  32. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/products/rating_curve.py +0 -0
  33. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/products/task.py +0 -0
  34. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/products/transformation.py +0 -0
  35. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/__init__.py +0 -0
  36. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/datastream.py +0 -0
  37. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/method.py +0 -0
  38. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/monitoring_site.py +0 -0
  39. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/observation.py +0 -0
  40. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/observed_property.py +0 -0
  41. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/processing_level.py +0 -0
  42. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/result_qualifier.py +0 -0
  43. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/models/sta/unit.py +0 -0
  44. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/__init__.py +0 -0
  45. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/base.py +0 -0
  46. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/etl/__init__.py +0 -0
  47. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/etl/data_connection.py +0 -0
  48. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/iam/__init__.py +0 -0
  49. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/iam/role.py +0 -0
  50. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/iam/workspace.py +0 -0
  51. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/monitoring/__init__.py +0 -0
  52. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/monitoring/rule.py +0 -0
  53. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/monitoring/task.py +0 -0
  54. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/products/__init__.py +0 -0
  55. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/products/rating_curve.py +0 -0
  56. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/products/task.py +0 -0
  57. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/products/transformation.py +0 -0
  58. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/__init__.py +0 -0
  59. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/datastream.py +0 -0
  60. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/method.py +0 -0
  61. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/monitoring_site.py +0 -0
  62. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/observed_property.py +0 -0
  63. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/processing_level.py +0 -0
  64. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/result_qualifier.py +0 -0
  65. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/services/sta/unit.py +0 -0
  66. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/api/utils.py +0 -0
  67. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/core/__init__.py +0 -0
  68. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/core/duration.py +0 -0
  69. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/core/timeseries.py +0 -0
  70. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/__init__.py +0 -0
  71. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/exceptions.py +0 -0
  72. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/extractors/__init__.py +0 -0
  73. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/extractors/base.py +0 -0
  74. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/extractors/ftp.py +0 -0
  75. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/extractors/http.py +0 -0
  76. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/extractors/local.py +0 -0
  77. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/hydroserver.py +0 -0
  78. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/loaders/__init__.py +0 -0
  79. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/loaders/base.py +0 -0
  80. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/models/__init__.py +0 -0
  81. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/models/base.py +0 -0
  82. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/models/pipeline.py +0 -0
  83. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/models/timestamp.py +0 -0
  84. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/operations/__init__.py +0 -0
  85. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/operations/arithmetic_expression.py +0 -0
  86. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/operations/base.py +0 -0
  87. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/operations/rating_curve.py +0 -0
  88. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/operations/temporal_aggregation.py +0 -0
  89. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/transformers/__init__.py +0 -0
  90. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/transformers/base.py +0 -0
  91. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/transformers/csv.py +0 -0
  92. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/transformers/json.py +0 -0
  93. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/user_facing_errors.py +0 -0
  94. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/etl/utils.py +0 -0
  95. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/products/__init__.py +0 -0
  96. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/products/aggregation.py +0 -0
  97. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/products/derivation.py +0 -0
  98. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/products/rating_curve.py +0 -0
  99. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/quality/__init__.py +0 -0
  100. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/quality/check.py +0 -0
  101. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/quality/correction.py +0 -0
  102. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy/quality/service.py +0 -0
  103. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy.egg-info/SOURCES.txt +0 -0
  104. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy.egg-info/dependency_links.txt +0 -0
  105. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy.egg-info/requires.txt +0 -0
  106. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy.egg-info/top_level.txt +0 -0
  107. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/src/hydroserverpy.egg-info/zip-safe +0 -0
  108. {hydroserverpy-2.0.0b2 → hydroserverpy-2.0.0b3}/tests/test_api_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydroserverpy
3
- Version: 2.0.0b2
3
+ Version: 2.0.0b3
4
4
  Summary: A Python client for managing HydroServer data
5
5
  Home-page: https://github.com/hydroserver2/hydroserver/tree/main/packages/hydroserverpy
6
6
  Author: Kenneth Lippold
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = hydroserverpy
3
- version = 2.0.0b2
3
+ version = 2.0.0b3
4
4
  description = A Python client for managing HydroServer data
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -0,0 +1,14 @@
1
+ import uuid
2
+ from pydantic import AliasChoices, AliasPath, BaseModel, ConfigDict, Field
3
+ from pydantic.alias_generators import to_camel
4
+
5
+
6
+ class EtlMapping(BaseModel):
7
+ source_identifier: str
8
+ target_datastream_id: uuid.UUID = Field(
9
+ validation_alias=AliasChoices(
10
+ "targetDatastreamId", AliasPath("targetDatastream", "id")
11
+ )
12
+ )
13
+
14
+ model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
@@ -1,7 +1,7 @@
1
1
  import uuid
2
2
  from datetime import datetime
3
3
  from typing import Any, ClassVar, Dict, List, Literal, Optional, Union, TYPE_CHECKING
4
- from pydantic import Field, AliasPath
4
+ from pydantic import AliasChoices, Field, AliasPath
5
5
  from ..base import HydroServerBaseModel
6
6
  from ..orchestration.run import TaskRun
7
7
  from .mapping import EtlMapping
@@ -15,7 +15,11 @@ class EtlTask(HydroServerBaseModel):
15
15
  name: str
16
16
  description: Optional[str] = None
17
17
  task_variables: Dict[str, Any] = Field(default_factory=dict)
18
- data_connection_id: uuid.UUID
18
+ data_connection_id: uuid.UUID = Field(
19
+ validation_alias=AliasChoices(
20
+ "dataConnectionId", AliasPath("dataConnection", "id")
21
+ )
22
+ )
19
23
  enabled: Optional[bool] = Field(None, validation_alias=AliasPath("schedule", "enabled"))
20
24
  start_time: Optional[datetime] = Field(None, validation_alias=AliasPath("schedule", "startTime"))
21
25
  crontab: Optional[str] = Field(None, validation_alias=AliasPath("schedule", "crontab"))
@@ -41,6 +45,7 @@ class EtlTask(HydroServerBaseModel):
41
45
  if not self.uid:
42
46
  raise AttributeError("Data cannot be saved: UID is not set.")
43
47
 
48
+ mappings = self.mappings
44
49
  saved_resource = self.service.update(
45
50
  self.uid,
46
51
  name=self.name,
@@ -48,7 +53,7 @@ class EtlTask(HydroServerBaseModel):
48
53
  task_variables=self.task_variables,
49
54
  mappings=[
50
55
  {"source_identifier": m.source_identifier, "target_datastream_id": str(m.target_datastream_id)}
51
- for m in self.mappings
56
+ for m in mappings
52
57
  ],
53
58
  crontab=self.crontab,
54
59
  interval=self.interval,
@@ -56,6 +61,7 @@ class EtlTask(HydroServerBaseModel):
56
61
  start_time=self.start_time,
57
62
  enabled=self.enabled,
58
63
  )
64
+ saved_resource.mappings = mappings
59
65
  self._server_data = saved_resource.dict(by_alias=False).copy()
60
66
  self.__dict__.update(saved_resource.__dict__)
61
67
 
@@ -36,6 +36,7 @@ class TaskService(HydroServerBaseService):
36
36
  page_size=page_size,
37
37
  order_by=order_by,
38
38
  fetch_all=fetch_all,
39
+ expand_related=True,
39
40
  workspace_id=normalize_uuid(workspace),
40
41
  data_connection_id=normalize_uuid(data_connection),
41
42
  latest_run_status=latest_run_status,
@@ -45,6 +46,16 @@ class TaskService(HydroServerBaseService):
45
46
  latest_run_finished_at_max=latest_run_finished_at_max,
46
47
  )
47
48
 
49
+ def get(self, uid: Union[UUID, str]) -> EtlTask:
50
+ """Fetch a single ETL task."""
51
+
52
+ path = f"/{self.client.base_route}/{self.model.get_route()}/{str(uid)}"
53
+ response = self.client.request("get", path, params={"expand_related": True}).json()
54
+
55
+ return self.model(
56
+ client=self.client, uid=UUID(str(response.pop("id"))), **response
57
+ )
58
+
48
59
  def create(
49
60
  self,
50
61
  name: str,
@@ -132,9 +132,11 @@ class HydroServerLoader(Loader):
132
132
  )
133
133
  continue
134
134
 
135
+ upload_df = target_df.rename(columns={"timestamp": "phenomenon_time", "value": "result"})
136
+
135
137
  for start_idx in range(0, observations_to_load, self.chunk_size):
136
138
  end_idx = min(start_idx + self.chunk_size, observations_to_load)
137
- chunk = target_df.iloc[start_idx:end_idx]
139
+ chunk = upload_df.iloc[start_idx:end_idx]
138
140
 
139
141
  try:
140
142
  self.client.datastreams.load_observations(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydroserverpy
3
- Version: 2.0.0b2
3
+ Version: 2.0.0b3
4
4
  Summary: A Python client for managing HydroServer data
5
5
  Home-page: https://github.com/hydroserver2/hydroserver/tree/main/packages/hydroserverpy
6
6
  Author: Kenneth Lippold
@@ -1,10 +0,0 @@
1
- import uuid
2
- from pydantic import BaseModel, ConfigDict
3
- from pydantic.alias_generators import to_camel
4
-
5
-
6
- class EtlMapping(BaseModel):
7
- source_identifier: str
8
- target_datastream_id: uuid.UUID
9
-
10
- model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
File without changes