ul-data-logger-api-sdk 2.0.0__tar.gz → 2.0.2__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 (20) hide show
  1. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/PKG-INFO +1 -1
  2. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/data_logger_api_sdk.py +34 -2
  3. ul-data-logger-api-sdk-2.0.2/data_logger_api_sdk/types/api_bs_traffic_stats.py +8 -0
  4. ul-data-logger-api-sdk-2.0.2/data_logger_api_sdk/types/api_last_bs_data_by_device_macs.py +48 -0
  5. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/pyproject.toml +3 -0
  6. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/setup.py +9 -9
  7. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/ul_data_logger_api_sdk.egg-info/PKG-INFO +1 -1
  8. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/ul_data_logger_api_sdk.egg-info/SOURCES.txt +2 -0
  9. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/README.md +0 -0
  10. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/__init__.py +0 -0
  11. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/data_logger_sdk_config.py +0 -0
  12. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/py.typed +0 -0
  13. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/types/__init__.py +0 -0
  14. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/types/api_device_data_history.py +0 -0
  15. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/types/api_packet_types.py +0 -0
  16. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/data_logger_api_sdk/types/api_protocol_types.py +0 -0
  17. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/setup.cfg +0 -0
  18. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/ul_data_logger_api_sdk.egg-info/dependency_links.txt +0 -0
  19. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/ul_data_logger_api_sdk.egg-info/requires.txt +0 -0
  20. {ul-data-logger-api-sdk-2.0.0 → ul-data-logger-api-sdk-2.0.2}/ul_data_logger_api_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-data-logger-api-sdk
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: Data logger API sdk
5
5
  Author: Unic-lab
6
6
  License: MIT
@@ -2,14 +2,17 @@ import json
2
2
  import time
3
3
  from datetime import datetime
4
4
  from functools import lru_cache
5
- from typing import List, Type
5
+ from typing import Any, List, Type
6
+ from uuid import UUID
6
7
 
7
8
  from ul_api_utils.internal_api.internal_api import InternalApi
8
9
  from ul_api_utils.internal_api.internal_api_response import TPyloadType
9
10
  from ul_api_utils.utils.api_method import ApiMethod
10
11
 
11
12
  from data_logger_api_sdk.data_logger_sdk_config import DataLoggerApiSdkConfig
13
+ from data_logger_api_sdk.types.api_bs_traffic_stats import ApiBsTrafficStatsResponse
12
14
  from data_logger_api_sdk.types.api_device_data_history import ApiDeviceDataHistoryBody, ApiDeviceDataHistoryResponse
15
+ from data_logger_api_sdk.types.api_last_bs_data_by_device_macs import ApiDeviceLastBsDataResponse, ApiDeviceMacsListBodyModel
13
16
  from data_logger_api_sdk.types.api_packet_types import ApiPacketTypesListResponse
14
17
  from data_logger_api_sdk.types.api_protocol_types import ApiProtocolTypesListResponse
15
18
 
@@ -28,12 +31,14 @@ class DataLoggerApiSdk:
28
31
  endpoint: str,
29
32
  typed_as: Type[TPyloadType],
30
33
  body: str | None,
34
+ query: dict[str, Any] | None = None,
31
35
  ) -> TPyloadType:
32
36
  return (
33
37
  self._api.request(
34
38
  method=method,
35
39
  path=endpoint,
36
40
  json=json.loads(body) if body is not None else None,
41
+ q=query,
37
42
  )
38
43
  .typed(typed_as)
39
44
  .check()
@@ -46,9 +51,10 @@ class DataLoggerApiSdk:
46
51
  path: str,
47
52
  typed: Type[TPyloadType],
48
53
  body: str | None = None,
54
+ query: dict[str, Any] | None = None,
49
55
  ) -> TPyloadType:
50
56
  ttl_status = round(time.time() / self._config.cache_ttl_s)
51
- return self.request_payload(ttl_status, method, path, typed, body) # type: ignore # Type[TPyloadType] is hashable
57
+ return self.request_payload(ttl_status, method, path, typed, body, query) # type: ignore # Type[TPyloadType] is hashable
52
58
 
53
59
  def get_protocol_types_list(self, mac: int) -> List[str]:
54
60
  return self._get_cache_post_payload(
@@ -85,3 +91,29 @@ class DataLoggerApiSdk:
85
91
  List[ApiDeviceDataHistoryResponse], # type: ignore
86
92
  api_device_history_body,
87
93
  )
94
+
95
+ def get_last_bs_data_by_device_macs(
96
+ self,
97
+ macs: set[int],
98
+ ) -> List[ApiDeviceLastBsDataResponse]:
99
+ return self._get_cache_post_payload(
100
+ ApiMethod.POST,
101
+ "/devices/last-bs-data",
102
+ List[ApiDeviceLastBsDataResponse], # type: ignore
103
+ ApiDeviceMacsListBodyModel(macs=macs).model_dump_json(),
104
+ )
105
+
106
+ def get_bs_traffic_stats(
107
+ self,
108
+ base_station_id: UUID,
109
+ start_at: datetime,
110
+ end_at: datetime,
111
+ ) -> List[ApiBsTrafficStatsResponse]:
112
+ return self._get_cache_post_payload(
113
+ ApiMethod.POST,
114
+ f"/base-stations/{base_station_id}/traffic-stats",
115
+ List[ApiBsTrafficStatsResponse], # type: ignore
116
+ None,
117
+ {"start_at": start_at, "end_at": end_at},
118
+ )
119
+
@@ -0,0 +1,8 @@
1
+ from datetime import date
2
+
3
+ from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
4
+
5
+
6
+ class ApiBsTrafficStatsResponse(JsonApiResponsePayload):
7
+ date: date
8
+ raw_data_size: float
@@ -0,0 +1,48 @@
1
+ from datetime import datetime, timedelta, timezone
2
+ from typing import List, Set
3
+
4
+ from pydantic import UUID4, BaseModel, Field
5
+ from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
6
+ from ul_api_utils.api_resource.api_response_payload_alias import ApiBaseModelPayloadResponse
7
+
8
+ BASE_STATION__INACTIVITY_LIMIT = timedelta(minutes=10)
9
+
10
+
11
+ class ApiDeviceMacsListBodyModel(BaseModel):
12
+ macs: Set[int] = Field(title="Macs", description="list of device macs", min_length=1)
13
+
14
+
15
+ class SdrConfigDataResponse(JsonApiResponsePayload):
16
+ baud_rate: int
17
+
18
+
19
+ class BsResponse(ApiBaseModelPayloadResponse):
20
+ api_user_modified_id: UUID4 | None = None
21
+ note: str
22
+
23
+ type: str
24
+ serial_number: int
25
+
26
+ latest_log_datetime: datetime | None = None
27
+ latest_geo_latitude: float | None = None
28
+ latest_geo_longitude: float | None = None
29
+ latest_soft_version: str | None = None
30
+ latest_geo_is_actual: bool | None = None
31
+
32
+ sdr_config_data_list: List[SdrConfigDataResponse] | None = None
33
+
34
+
35
+ @property
36
+ def status_ok(self) -> bool:
37
+ if self.latest_log_datetime is None:
38
+ return False
39
+ if self.latest_log_datetime.tzinfo is None:
40
+ self.latest_log_datetime = self.latest_log_datetime.replace(tzinfo=timezone.utc)
41
+ return (datetime.now(tz=timezone.utc) - self.latest_log_datetime) < BASE_STATION__INACTIVITY_LIMIT
42
+
43
+
44
+ class ApiDeviceLastBsDataResponse(JsonApiResponsePayload):
45
+ mac: int
46
+ latest_signal_rssi: int | None = None
47
+ latest_signal_snr: int | None = None
48
+ bs: BsResponse | None = None
@@ -115,6 +115,9 @@ extend-ignore = [
115
115
  "FBT001", # Checks for the use of boolean positional arguments in function definitions, as determined by the presence of a bool type hint
116
116
  "PERF203", # Checks for uses of except handling via try-except within for and while loops
117
117
  "A005", # Checks if module shadows a Python standard-library module
118
+ "C420", # Unnecessary dict comprehension for iterable; use dict.fromkeys instead
119
+ "LOG015", # {}() call on root logger
120
+ "TC006", # Add quotes to type expression in typing.cast()
118
121
  ]
119
122
 
120
123
  [tool.ruff.lint.mccabe]
@@ -13,7 +13,7 @@ if sys.argv:
13
13
  sys.argv.remove("broker_sdk")
14
14
  setup(
15
15
  name="ul-data-logger-sdk",
16
- version="3.0.0",
16
+ version="3.0.4",
17
17
  description="Data logger sdk",
18
18
  author="Unic-lab",
19
19
  long_description=long_description,
@@ -39,17 +39,17 @@ if sys.argv:
39
39
  install_requires=[
40
40
  "ul-unipipeline>=2.0.0",
41
41
  # "ul-data-aggregator-sdk>=8.13.2",
42
- # "ul-py-tool==2.1.2,
43
- # "ul-api-utils==8.1.6",
42
+ # "ul-py-tool==2.1.3,
43
+ # "ul-api-utils==8.1.9",
44
44
  # "ul-db-utils==4.0.2",
45
- # "ul-data-gateway-sdk==1.0.3",
45
+ # "ul-data-gateway-sdk==1.0.6",
46
46
  ],
47
47
  )
48
48
  elif "api_sdk" in set(sys.argv):
49
49
  sys.argv.remove("api_sdk")
50
50
  setup(
51
51
  name="ul-data-logger-api-sdk",
52
- version="2.0.0",
52
+ version="2.0.2",
53
53
  description="Data logger API sdk",
54
54
  author="Unic-lab",
55
55
  long_description=long_description,
@@ -76,9 +76,9 @@ if sys.argv:
76
76
  "ul-unipipeline>=2.0.0",
77
77
  "tqdm==4.66.1",
78
78
  # "ul-data-aggregator-sdk>=8.13.2",
79
- # "ul-py-tool==2.1.2,
80
- # "ul-api-utils==8.1.6",
81
- # "ul-db-utils==4.0.2",
82
- # "ul-data-gateway-sdk==1.0.3",
79
+ # "ul-py-tool==2.1.4,
80
+ # "ul-api-utils==9.1.1",
81
+ # "ul-db-utils==5.1.0",
82
+ # "ul-data-gateway-sdk==1.0.6",
83
83
  ],
84
84
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-data-logger-api-sdk
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: Data logger API sdk
5
5
  Author: Unic-lab
6
6
  License: MIT
@@ -6,7 +6,9 @@ data_logger_api_sdk/data_logger_api_sdk.py
6
6
  data_logger_api_sdk/data_logger_sdk_config.py
7
7
  data_logger_api_sdk/py.typed
8
8
  data_logger_api_sdk/types/__init__.py
9
+ data_logger_api_sdk/types/api_bs_traffic_stats.py
9
10
  data_logger_api_sdk/types/api_device_data_history.py
11
+ data_logger_api_sdk/types/api_last_bs_data_by_device_macs.py
10
12
  data_logger_api_sdk/types/api_packet_types.py
11
13
  data_logger_api_sdk/types/api_protocol_types.py
12
14
  ul_data_logger_api_sdk.egg-info/PKG-INFO