layrz-sdk 3.0.8__py3-none-any.whl → 3.0.10__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 layrz-sdk might be problematic. Click here for more details.
- layrz_sdk/entities/broadcasts/request.py +10 -9
- layrz_sdk/entities/broadcasts/response.py +10 -9
- layrz_sdk/entities/broadcasts/result.py +13 -11
- layrz_sdk/entities/broadcasts/service.py +8 -9
- layrz_sdk/entities/broadcasts/status.py +10 -9
- layrz_sdk/entities/cases/case.py +33 -30
- layrz_sdk/entities/cases/comment.py +10 -10
- layrz_sdk/entities/cases/trigger.py +9 -10
- layrz_sdk/entities/charts/alignment.py +9 -8
- layrz_sdk/entities/charts/bar.py +31 -45
- layrz_sdk/entities/charts/color.py +12 -10
- layrz_sdk/entities/charts/column.py +30 -49
- layrz_sdk/entities/charts/configuration.py +11 -12
- layrz_sdk/entities/charts/data_type.py +9 -8
- layrz_sdk/entities/charts/exceptions.py +11 -12
- layrz_sdk/entities/charts/html.py +6 -5
- layrz_sdk/entities/charts/line.py +52 -46
- layrz_sdk/entities/charts/map.py +23 -19
- layrz_sdk/entities/charts/number.py +6 -5
- layrz_sdk/entities/charts/pie.py +27 -34
- layrz_sdk/entities/charts/radar.py +14 -34
- layrz_sdk/entities/charts/radial_bar.py +27 -34
- layrz_sdk/entities/charts/render_technology.py +9 -8
- layrz_sdk/entities/charts/scatter.py +52 -53
- layrz_sdk/entities/charts/serie.py +4 -3
- layrz_sdk/entities/charts/serie_type.py +9 -8
- layrz_sdk/entities/charts/table.py +6 -6
- layrz_sdk/entities/charts/timeline.py +21 -32
- layrz_sdk/entities/checkpoints/checkpoint.py +15 -12
- layrz_sdk/entities/checkpoints/geofence.py +9 -10
- layrz_sdk/entities/checkpoints/waypoint.py +14 -12
- layrz_sdk/entities/events/event.py +15 -13
- layrz_sdk/entities/formatting/text_align.py +10 -9
- layrz_sdk/entities/general/asset.py +16 -13
- layrz_sdk/entities/general/asset_operation_mode.py +9 -8
- layrz_sdk/entities/general/custom_field.py +9 -10
- layrz_sdk/entities/general/device.py +13 -12
- layrz_sdk/entities/general/sensor.py +9 -10
- layrz_sdk/entities/general/user.py +9 -10
- layrz_sdk/entities/repcom/transaction.py +4 -4
- layrz_sdk/entities/reports/col.py +17 -15
- layrz_sdk/entities/reports/format.py +3 -4
- layrz_sdk/entities/reports/header.py +4 -5
- layrz_sdk/entities/reports/page.py +12 -11
- layrz_sdk/entities/reports/report.py +18 -14
- layrz_sdk/entities/reports/row.py +10 -10
- layrz_sdk/entities/telemetry/message.py +5 -4
- layrz_sdk/entities/telemetry/position.py +13 -12
- layrz_sdk/lcl/core.py +53 -53
- {layrz_sdk-3.0.8.dist-info → layrz_sdk-3.0.10.dist-info}/METADATA +1 -1
- layrz_sdk-3.0.10.dist-info/RECORD +69 -0
- layrz_sdk-3.0.8.dist-info/RECORD +0 -69
- {layrz_sdk-3.0.8.dist-info → layrz_sdk-3.0.10.dist-info}/LICENSE +0 -0
- {layrz_sdk-3.0.8.dist-info → layrz_sdk-3.0.10.dist-info}/WHEEL +0 -0
- {layrz_sdk-3.0.8.dist-info → layrz_sdk-3.0.10.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Report col"""
|
|
2
|
+
|
|
2
3
|
import warnings
|
|
3
4
|
from enum import Enum
|
|
4
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
5
6
|
|
|
6
7
|
from ..formatting.text_align import TextAlignment
|
|
7
8
|
|
|
@@ -10,6 +11,7 @@ class ReportDataType(Enum):
|
|
|
10
11
|
"""
|
|
11
12
|
Report date type
|
|
12
13
|
"""
|
|
14
|
+
|
|
13
15
|
STR = 'str'
|
|
14
16
|
INT = 'int'
|
|
15
17
|
FLOAT = 'float'
|
|
@@ -18,16 +20,16 @@ class ReportDataType(Enum):
|
|
|
18
20
|
CURRENCY = 'currency'
|
|
19
21
|
|
|
20
22
|
@property
|
|
21
|
-
def _readable(self
|
|
22
|
-
"""
|
|
23
|
+
def _readable(self) -> str | None | bool:
|
|
24
|
+
"""Readable"""
|
|
23
25
|
return f'ReportDataType.{self.value}'
|
|
24
26
|
|
|
25
|
-
def __str__(self
|
|
26
|
-
"""
|
|
27
|
+
def __str__(self) -> str | None | bool:
|
|
28
|
+
"""Readable property"""
|
|
27
29
|
return self._readable
|
|
28
30
|
|
|
29
|
-
def __repr__(self
|
|
30
|
-
"""
|
|
31
|
+
def __repr__(self) -> str | None | bool:
|
|
32
|
+
"""Readable property"""
|
|
31
33
|
return self._readable
|
|
32
34
|
|
|
33
35
|
|
|
@@ -48,7 +50,7 @@ class ReportCol:
|
|
|
48
50
|
"""
|
|
49
51
|
|
|
50
52
|
def __init__(
|
|
51
|
-
self
|
|
53
|
+
self,
|
|
52
54
|
content: Any,
|
|
53
55
|
color: str = '#ffffff',
|
|
54
56
|
text_color: str = None,
|
|
@@ -71,14 +73,14 @@ class ReportCol:
|
|
|
71
73
|
self.bold = bold
|
|
72
74
|
|
|
73
75
|
@property
|
|
74
|
-
def _readable(self
|
|
75
|
-
"""
|
|
76
|
+
def _readable(self) -> str | None | bool:
|
|
77
|
+
"""Readable property"""
|
|
76
78
|
return f'ReportCol(content={self.content})'
|
|
77
79
|
|
|
78
|
-
def __repr__(self
|
|
79
|
-
"""
|
|
80
|
+
def __repr__(self) -> str | None | bool:
|
|
81
|
+
"""Readable property"""
|
|
80
82
|
return self._readable
|
|
81
83
|
|
|
82
|
-
def __str__(self
|
|
83
|
-
"""
|
|
84
|
+
def __str__(self) -> str | None | bool:
|
|
85
|
+
"""Readable property"""
|
|
84
86
|
return self._readable
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""Report formats"""
|
|
2
2
|
|
|
3
3
|
from enum import Enum
|
|
4
|
-
from typing import Self
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
class ReportFormat(Enum):
|
|
@@ -14,14 +13,14 @@ class ReportFormat(Enum):
|
|
|
14
13
|
PDF = 'PDF'
|
|
15
14
|
|
|
16
15
|
@property
|
|
17
|
-
def _readable(self
|
|
16
|
+
def _readable(self) -> str:
|
|
18
17
|
"""Readable"""
|
|
19
18
|
return f'ReportFormat.{self.value}'
|
|
20
19
|
|
|
21
|
-
def __str__(self
|
|
20
|
+
def __str__(self) -> str:
|
|
22
21
|
"""Readable property"""
|
|
23
22
|
return self._readable
|
|
24
23
|
|
|
25
|
-
def __repr__(self
|
|
24
|
+
def __repr__(self) -> str:
|
|
26
25
|
"""Readable property"""
|
|
27
26
|
return self._readable
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""Report header"""
|
|
2
2
|
|
|
3
3
|
import warnings
|
|
4
|
-
from typing import Self
|
|
5
4
|
|
|
6
5
|
from ..formatting.text_align import TextAlignment
|
|
7
6
|
|
|
@@ -23,7 +22,7 @@ class ReportHeader:
|
|
|
23
22
|
"""
|
|
24
23
|
|
|
25
24
|
def __init__(
|
|
26
|
-
self
|
|
25
|
+
self,
|
|
27
26
|
content: str,
|
|
28
27
|
width: int = None,
|
|
29
28
|
color: str = '#ffffff',
|
|
@@ -45,14 +44,14 @@ class ReportHeader:
|
|
|
45
44
|
self.bold = bold
|
|
46
45
|
|
|
47
46
|
@property
|
|
48
|
-
def _readable(self
|
|
47
|
+
def _readable(self) -> str | None | bool:
|
|
49
48
|
"""Readable property"""
|
|
50
49
|
return f'ReportHeader(content={self.content})'
|
|
51
50
|
|
|
52
|
-
def __str__(self
|
|
51
|
+
def __str__(self) -> str | None | bool:
|
|
53
52
|
"""Readable property"""
|
|
54
53
|
return self._readable
|
|
55
54
|
|
|
56
|
-
def __repr__(self
|
|
55
|
+
def __repr__(self) -> str | None | bool:
|
|
57
56
|
"""Readable property"""
|
|
58
57
|
return self._readable
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
1
|
+
"""Report page"""
|
|
2
|
+
|
|
3
|
+
from typing import List
|
|
3
4
|
|
|
4
5
|
from .header import ReportHeader
|
|
5
6
|
from .row import ReportRow
|
|
@@ -16,7 +17,7 @@ class ReportPage:
|
|
|
16
17
|
"""
|
|
17
18
|
|
|
18
19
|
def __init__(
|
|
19
|
-
self
|
|
20
|
+
self,
|
|
20
21
|
name: str,
|
|
21
22
|
headers: List[ReportHeader],
|
|
22
23
|
rows: List[ReportRow],
|
|
@@ -28,16 +29,16 @@ class ReportPage:
|
|
|
28
29
|
self.freeze_header = freeze_header
|
|
29
30
|
|
|
30
31
|
@property
|
|
31
|
-
def _readable(self
|
|
32
|
-
"""
|
|
32
|
+
def _readable(self) -> str | None | bool:
|
|
33
|
+
"""Readable property"""
|
|
33
34
|
return f'ReportPage(name={self.name}, headers={self.headers}, rows={self.rows})'
|
|
34
35
|
|
|
35
|
-
def __str__(self
|
|
36
|
-
"""
|
|
36
|
+
def __str__(self) -> str | None | bool:
|
|
37
|
+
"""Readable property"""
|
|
37
38
|
return self._readable
|
|
38
39
|
|
|
39
|
-
def __repr__(self
|
|
40
|
-
"""
|
|
40
|
+
def __repr__(self) -> str | None | bool:
|
|
41
|
+
"""Readable property"""
|
|
41
42
|
return self._readable
|
|
42
43
|
|
|
43
44
|
|
|
@@ -54,8 +55,8 @@ class CustomReportPage:
|
|
|
54
55
|
return anything.
|
|
55
56
|
"""
|
|
56
57
|
|
|
57
|
-
def __init__(self
|
|
58
|
-
"""
|
|
58
|
+
def __init__(self, name: str, builder: callable) -> None:
|
|
59
|
+
"""Constructor"""
|
|
59
60
|
self.name = name
|
|
60
61
|
|
|
61
62
|
if not callable(builder):
|
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
import time
|
|
6
6
|
import warnings
|
|
7
|
-
from typing import Any, Dict, List
|
|
7
|
+
from typing import Any, Dict, List
|
|
8
8
|
|
|
9
9
|
import xlsxwriter
|
|
10
10
|
|
|
@@ -28,7 +28,7 @@ class Report:
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
def __init__(
|
|
31
|
-
self
|
|
31
|
+
self,
|
|
32
32
|
name: str,
|
|
33
33
|
pages: List[ReportPage | CustomReportPage],
|
|
34
34
|
export_format: ReportFormat = None,
|
|
@@ -46,25 +46,25 @@ class Report:
|
|
|
46
46
|
self.export_format = export_format
|
|
47
47
|
|
|
48
48
|
@property
|
|
49
|
-
def filename(self
|
|
49
|
+
def filename(self) -> str | None | bool:
|
|
50
50
|
"""Report filename"""
|
|
51
51
|
return f'{self.name}_{int(time.time() * 1000)}.xlsx'
|
|
52
52
|
|
|
53
53
|
@property
|
|
54
|
-
def _readable(self
|
|
54
|
+
def _readable(self) -> str | None | bool:
|
|
55
55
|
"""Readable property"""
|
|
56
56
|
return f'Report(name={self.name}, pages={len(self.pages)})'
|
|
57
57
|
|
|
58
|
-
def __repr__(self
|
|
58
|
+
def __repr__(self) -> str | None | bool:
|
|
59
59
|
"""Readable property"""
|
|
60
60
|
return self._readable
|
|
61
61
|
|
|
62
|
-
def __str__(self
|
|
62
|
+
def __str__(self) -> str | None | bool:
|
|
63
63
|
"""Readable property"""
|
|
64
64
|
return self._readable
|
|
65
65
|
|
|
66
66
|
def export(
|
|
67
|
-
self
|
|
67
|
+
self,
|
|
68
68
|
path: str,
|
|
69
69
|
export_format: ReportFormat = None,
|
|
70
70
|
password: str = None,
|
|
@@ -88,6 +88,8 @@ class Report:
|
|
|
88
88
|
if export_format == ReportFormat.MICROSOFT_EXCEL:
|
|
89
89
|
return self._export_xlsx(path=path, password=password, msoffice_crypt_path=msoffice_crypt_path)
|
|
90
90
|
elif export_format == ReportFormat.JSON:
|
|
91
|
+
if password:
|
|
92
|
+
return {'name': self.name, 'is_protected': True, 'pages': []}
|
|
91
93
|
return self._export_json()
|
|
92
94
|
else:
|
|
93
95
|
raise AttributeError(f'Unsupported export format: {export_format}')
|
|
@@ -95,15 +97,17 @@ class Report:
|
|
|
95
97
|
if self.export_format == ReportFormat.MICROSOFT_EXCEL:
|
|
96
98
|
return self._export_xlsx(path=path, password=password, msoffice_crypt_path=msoffice_crypt_path)
|
|
97
99
|
elif self.export_format == ReportFormat.JSON:
|
|
100
|
+
if password:
|
|
101
|
+
return {'name': self.name, 'is_protected': True, 'pages': []}
|
|
98
102
|
return self._export_json()
|
|
99
103
|
else:
|
|
100
104
|
raise AttributeError(f'Unsupported export format: {self.export_format}')
|
|
101
105
|
|
|
102
|
-
def export_as_json(self
|
|
106
|
+
def export_as_json(self) -> Dict[str, Any]:
|
|
103
107
|
"""Returns the report as a JSON dict"""
|
|
104
108
|
return self._export_json()
|
|
105
109
|
|
|
106
|
-
def _export_json(self
|
|
110
|
+
def _export_json(self) -> Dict[str, Any]:
|
|
107
111
|
"""Returns a JSON dict of the report"""
|
|
108
112
|
json_pages = []
|
|
109
113
|
for page in self.pages:
|
|
@@ -148,7 +152,7 @@ class Report:
|
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
def _export_xlsx(
|
|
151
|
-
self
|
|
155
|
+
self,
|
|
152
156
|
path: str,
|
|
153
157
|
password: str = None,
|
|
154
158
|
msoffice_crypt_path: str = None,
|
|
@@ -264,19 +268,19 @@ class ReportConfiguration:
|
|
|
264
268
|
- pages_count : Number of pages in the report
|
|
265
269
|
"""
|
|
266
270
|
|
|
267
|
-
def __init__(self
|
|
271
|
+
def __init__(self, title: str, pages_count: int) -> None:
|
|
268
272
|
self.title = title
|
|
269
273
|
self.pages_count = pages_count
|
|
270
274
|
|
|
271
275
|
@property
|
|
272
|
-
def _readable(self
|
|
276
|
+
def _readable(self) -> str | None | bool:
|
|
273
277
|
"""Readable property"""
|
|
274
278
|
return f'ReportConfiguration(title={self.title}, pages_count={self.pages_count})'
|
|
275
279
|
|
|
276
|
-
def __repr__(self
|
|
280
|
+
def __repr__(self) -> str | None | bool:
|
|
277
281
|
"""Readable property"""
|
|
278
282
|
return self._readable
|
|
279
283
|
|
|
280
|
-
def __str__(self
|
|
284
|
+
def __str__(self) -> str | None | bool:
|
|
281
285
|
"""Readable property"""
|
|
282
286
|
return self._readable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Report row"""
|
|
2
2
|
|
|
3
|
-
from typing import List
|
|
3
|
+
from typing import List
|
|
4
4
|
|
|
5
5
|
from .col import ReportCol
|
|
6
6
|
|
|
@@ -17,12 +17,12 @@ class ReportRow:
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
20
|
-
self
|
|
20
|
+
self,
|
|
21
21
|
content: List[ReportCol],
|
|
22
22
|
height: float = None,
|
|
23
23
|
compact: bool = False,
|
|
24
24
|
) -> None:
|
|
25
|
-
"""
|
|
25
|
+
"""Constructor"""
|
|
26
26
|
self.content = content
|
|
27
27
|
self.compact = compact
|
|
28
28
|
|
|
@@ -30,14 +30,14 @@ class ReportRow:
|
|
|
30
30
|
raise DeprecationWarning('height is deprecated.')
|
|
31
31
|
|
|
32
32
|
@property
|
|
33
|
-
def _readable(self
|
|
34
|
-
"""
|
|
33
|
+
def _readable(self) -> str | None | bool:
|
|
34
|
+
"""Readable property"""
|
|
35
35
|
return f'ReportRow(content={self.content})'
|
|
36
36
|
|
|
37
|
-
def __str__(self
|
|
38
|
-
"""
|
|
37
|
+
def __str__(self) -> str | None | bool:
|
|
38
|
+
"""Readable property"""
|
|
39
39
|
return self._readable
|
|
40
40
|
|
|
41
|
-
def __repr__(self
|
|
42
|
-
"""
|
|
41
|
+
def __repr__(self) -> str | None | bool:
|
|
42
|
+
"""Readable property"""
|
|
43
43
|
return self._readable
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Message entity"""
|
|
2
|
+
|
|
2
3
|
from datetime import datetime, timezone
|
|
3
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
4
5
|
|
|
5
6
|
from .position import Position
|
|
6
7
|
|
|
@@ -19,7 +20,7 @@ class Message:
|
|
|
19
20
|
"""
|
|
20
21
|
|
|
21
22
|
def __init__(
|
|
22
|
-
self
|
|
23
|
+
self,
|
|
23
24
|
pk: int,
|
|
24
25
|
asset_id: int,
|
|
25
26
|
position: Position = None,
|
|
@@ -27,7 +28,7 @@ class Message:
|
|
|
27
28
|
sensors: Any = None,
|
|
28
29
|
received_at: datetime = None,
|
|
29
30
|
) -> None:
|
|
30
|
-
"""
|
|
31
|
+
"""Constructor"""
|
|
31
32
|
self.pk = pk
|
|
32
33
|
self.asset_id = asset_id
|
|
33
34
|
self.position = position or Position()
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
from typing import Self
|
|
1
|
+
"""Position entity"""
|
|
3
2
|
|
|
4
3
|
|
|
5
4
|
class Position:
|
|
@@ -17,7 +16,7 @@ class Position:
|
|
|
17
16
|
"""
|
|
18
17
|
|
|
19
18
|
def __init__(
|
|
20
|
-
self
|
|
19
|
+
self,
|
|
21
20
|
latitude: float = None,
|
|
22
21
|
longitude: float = None,
|
|
23
22
|
altitude: float = None,
|
|
@@ -26,7 +25,7 @@ class Position:
|
|
|
26
25
|
direction: float = None,
|
|
27
26
|
satellites: int = None,
|
|
28
27
|
) -> None:
|
|
29
|
-
"""
|
|
28
|
+
"""Constructor"""
|
|
30
29
|
self.latitude = latitude
|
|
31
30
|
self.longitude = longitude
|
|
32
31
|
self.altitude = altitude
|
|
@@ -36,15 +35,17 @@ class Position:
|
|
|
36
35
|
self.satellites = satellites
|
|
37
36
|
|
|
38
37
|
@property
|
|
39
|
-
def _readable(self
|
|
40
|
-
"""
|
|
41
|
-
return
|
|
42
|
-
|
|
38
|
+
def _readable(self) -> str | None | bool:
|
|
39
|
+
"""Readable"""
|
|
40
|
+
return (
|
|
41
|
+
f'Position(latitude={self.latitude}, longitude={self.longitude}, altitude={self.altitude}, '
|
|
42
|
+
+ f'speed={self.speed}, direction={self.direction}, hdop={self.hdop}, satellites={self.satellites})'
|
|
43
|
+
)
|
|
43
44
|
|
|
44
|
-
def __str__(self
|
|
45
|
-
"""
|
|
45
|
+
def __str__(self) -> str | None | bool:
|
|
46
|
+
"""Readable property"""
|
|
46
47
|
return self._readable
|
|
47
48
|
|
|
48
|
-
def __repr__(self
|
|
49
|
-
"""
|
|
49
|
+
def __repr__(self) -> str | None | bool:
|
|
50
|
+
"""Readable property"""
|
|
50
51
|
return self._readable
|