climify_api 1.0.27__tar.gz → 1.0.28__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 (55) hide show
  1. {climify_api-1.0.27 → climify_api-1.0.28}/PKG-INFO +1 -1
  2. {climify_api-1.0.27 → climify_api-1.0.28}/pyproject.toml +2 -2
  3. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/__init__.py +2 -2
  4. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/metering_points_id/get.py +71 -29
  5. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api.egg-info/PKG-INFO +1 -1
  6. {climify_api-1.0.27 → climify_api-1.0.28}/LICENSE +0 -0
  7. {climify_api-1.0.27 → climify_api-1.0.28}/MANIFEST.in +0 -0
  8. {climify_api-1.0.27 → climify_api-1.0.28}/README.md +0 -0
  9. {climify_api-1.0.27 → climify_api-1.0.28}/setup.cfg +0 -0
  10. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/ApiController.py +0 -0
  11. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/REST.py +0 -0
  12. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/api_client.py +0 -0
  13. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/PathBase.py +0 -0
  14. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/__init__.py +0 -0
  15. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/ApiController.py +0 -0
  16. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/__init__.py +0 -0
  17. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/__init__.py +0 -0
  18. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id/__init__.py +0 -0
  19. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id/get.py +0 -0
  20. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id_devices/__init__.py +0 -0
  21. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id_devices/get.py +0 -0
  22. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id_metering_points/__init__.py +0 -0
  23. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/buildings_id_metering_points/get.py +0 -0
  24. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/devices_id/__init__.py +0 -0
  25. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/devices_id/get.py +0 -0
  26. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/feedback_forms_id_locations_id_responses/__init__.py +0 -0
  27. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/feedback_forms_id_locations_id_responses/get.py +0 -0
  28. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id/__init__.py +0 -0
  29. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id/get.py +0 -0
  30. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_change_temperature/__init__.py +0 -0
  31. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_change_temperature/post.py +0 -0
  32. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_devices/__init__.py +0 -0
  33. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_devices/get.py +0 -0
  34. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_sensor_values/__init__.py +0 -0
  35. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/locations_id_sensor_values/get.py +0 -0
  36. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/maps_id/__init__.py +0 -0
  37. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/maps_id/get.py +0 -0
  38. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/maps_id_devices/__init__.py +0 -0
  39. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/maps_id_devices/get.py +0 -0
  40. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/metering_points_id/__init__.py +0 -0
  41. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/organisations_id/__init__.py +0 -0
  42. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/organisations_id/get.py +0 -0
  43. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/organisations_id_devices/__init__.py +0 -0
  44. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/organisations_id_devices/get.py +0 -0
  45. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/resources/__init__.py +0 -0
  46. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/apis/v1/paths/resources/get.py +0 -0
  47. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/auth.py +0 -0
  48. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/configuration.py +0 -0
  49. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/exceptions.py +0 -0
  50. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/models/__init__.py +0 -0
  51. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api/schemas.py +0 -0
  52. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api.egg-info/SOURCES.txt +0 -0
  53. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api.egg-info/dependency_links.txt +0 -0
  54. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api.egg-info/requires.txt +0 -0
  55. {climify_api-1.0.27 → climify_api-1.0.28}/src/climify_api.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: climify_api
3
- Version: 1.0.27
3
+ Version: 1.0.28
4
4
  Summary: A wrapper library for the Climify REST API
5
5
  Author-email: Climify Aps <info@climify.com>
6
6
  Project-URL: Homepage, https://gitlab.climify.com/climify/python-api-lib
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "climify_api"
9
- version = "1.0.27"
9
+ version = "1.0.28"
10
10
  keywords=['Climify','Environmental engineering']
11
11
  authors = [
12
12
  { name="Climify Aps", email="info@climify.com" },
@@ -50,7 +50,7 @@ Homepage = "https://gitlab.climify.com/climify/python-api-lib"
50
50
  Issues = "https://gitlab.climify.com/climify/python-api-lib/-/issues"
51
51
 
52
52
  [tool.bumpver]
53
- current_version = "1.0.27"
53
+ current_version = "1.0.28"
54
54
  version_pattern = "MAJOR.MINOR.PATCH"
55
55
  commit_message = "Bump version {old_version} -> {new_version}"
56
56
  commit = true
@@ -8,12 +8,12 @@
8
8
 
9
9
  Provides a REST endpoints for Climify applications and 3rd party solutions. # noqa: E501
10
10
 
11
- The version of the OpenAPI document: 1.0.27
11
+ The version of the OpenAPI document: 1.0.28
12
12
  Generated by: https://openapi-generator.tech
13
13
  """
14
14
 
15
15
  __name__ = 'climify_api'
16
- __version__ = "1.0.27"
16
+ __version__ = "1.0.28"
17
17
 
18
18
  # import ApiClient
19
19
  from climify_api.api_client import ApiClient
@@ -112,39 +112,81 @@ class GetMeteringPointValuesById(PathBase):
112
112
  subRequestToTime = to_datetime
113
113
  subRequestFromTime = max(subRequestToTime - relativedelta(months=3), from_datetime)
114
114
 
115
- request = usedPath +\
116
- f"?dateTimeFrom={subRequestFromTime.replace(tzinfo=None).isoformat()+'Z'}" +\
117
- f"&dateTimeTo={subRequestToTime.replace(tzinfo=None).isoformat()+'Z'}"
118
-
119
- response = self.api_client.call_api(
120
- resource_path=request,
121
- method='GET',
122
- access_token=access_token,
123
- stream=stream,
124
- timeout=timeout
125
- )
126
-
127
- # Format response
128
- if not 200 <= response.status <= 299:
129
- raise ClimifyApiException(
130
- status=response.status,
131
- reason=response.reason,
132
- api_response=response
115
+ while subRequestFromTime >= from_datetime:
116
+ query_parameters = []
117
+ for name, value in (
118
+ ('dateTimeFrom', subRequestFromTime.replace(tzinfo=None).isoformat()+'Z' if subRequestFromTime else None), # Sets timezone to None, to remove +HH:MM
119
+ ('dateTimeTo', subRequestToTime.replace(tzinfo=None).isoformat()+'Z' if subRequestToTime else None)
120
+ ):
121
+ if value:
122
+ query_parameters.append(f"{name}={value}")
123
+
124
+ if len(query_parameters) > 0:
125
+ requests.append("?" + "&".join(query_parameters))
126
+
127
+ if subRequestFromTime == from_datetime:
128
+ break
129
+
130
+ subRequestToTime = subRequestFromTime - relativedelta(seconds=1)
131
+ subRequestFromTime = max(subRequestToTime - relativedelta(months=3), from_datetime)
132
+
133
+ bodies = []
134
+ for request in requests:
135
+ requestPath = usedPath+request
136
+ response = self.api_client.call_api(
137
+ resource_path=requestPath,
138
+ method='GET',
139
+ access_token=access_token,
140
+ stream=stream,
141
+ timeout=timeout
133
142
  )
134
-
135
- if skip_deserialization:
136
- return ClimifyApiResponseWithoutDeserialization(response=response)
143
+
144
+ # Format response
145
+ if not 200 <= response.status <= 299:
146
+ raise ClimifyApiException(
147
+ status=response.status,
148
+ reason=response.reason,
149
+ api_response=response
150
+ )
137
151
 
138
- # Deserialize response
139
- deserialized_body = parse_raw_as(List[SensorDataExtDto], response.data)
140
- if as_dataframe:
141
- deserialized_body = convert_values_to_dataFrame(deserialized_body)
152
+ if skip_deserialization:
153
+ bodies.append(response.data)
154
+ continue
155
+
156
+ deserialized_body = parse_raw_as(List[SensorDataExtDto],response.data) if response.data\
157
+ else []
158
+
159
+ # Sort observations on time
160
+ for sensor in deserialized_body:
161
+ sensor.data = sorted(sensor.data, key=lambda x: x.time, reverse=True)
162
+
163
+ if as_dataframe:
164
+ deserialized_body = convert_values_to_dataFrame(deserialized_body)
142
165
 
143
- api_response = ClimifyApiResponse[List[SensorDataExtDto]](
166
+ bodies.append(deserialized_body)
167
+
168
+ if skip_deserialization:
169
+ response.data = bodies
170
+ return ClimifyApiResponseWithoutDeserialization(response=response)
171
+
172
+ sensors = {}
173
+ for body in bodies:
174
+ for sensor in body:
175
+ if sensor.devId not in sensors:
176
+ sensors[sensor.devId] = sensor
177
+ continue
178
+
179
+ sensor_data = sensors[sensor.devId]
180
+ if as_dataframe:
181
+ sensor_data.data = concat([sensor_data.data, sensor.data], ignore_index=True)
182
+ else:
183
+ sensor_data.data += sensor.data
184
+
185
+ deserialized_body = list(sensors.values())
186
+
187
+ return ClimifyApiResponse[List[SensorDataExtDto]](
144
188
  response=response,
145
189
  status=response.status,
146
190
  body=deserialized_body,
147
191
  headers=response.headers
148
- )
149
-
150
- return api_response
192
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: climify_api
3
- Version: 1.0.27
3
+ Version: 1.0.28
4
4
  Summary: A wrapper library for the Climify REST API
5
5
  Author-email: Climify Aps <info@climify.com>
6
6
  Project-URL: Homepage, https://gitlab.climify.com/climify/python-api-lib
File without changes
File without changes
File without changes
File without changes