layrz-sdk 3.0.1__py3-none-any.whl → 3.0.3__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/__init__.py +3 -3
- layrz_sdk/entities/charts/__init__.py +1 -0
- layrz_sdk/entities/charts/line.py +52 -2
- layrz_sdk/entities/charts/render_technology.py +24 -0
- layrz_sdk/lcl/core.py +12 -1
- {layrz_sdk-3.0.1.dist-info → layrz_sdk-3.0.3.dist-info}/METADATA +1 -1
- {layrz_sdk-3.0.1.dist-info → layrz_sdk-3.0.3.dist-info}/RECORD +10 -9
- {layrz_sdk-3.0.1.dist-info → layrz_sdk-3.0.3.dist-info}/LICENSE +0 -0
- {layrz_sdk-3.0.1.dist-info → layrz_sdk-3.0.3.dist-info}/WHEEL +0 -0
- {layrz_sdk-3.0.1.dist-info → layrz_sdk-3.0.3.dist-info}/top_level.txt +0 -0
layrz_sdk/entities/__init__.py
CHANGED
|
@@ -5,9 +5,9 @@ from .broadcasts import (BroadcastRequest, BroadcastResponse, BroadcastResult, B
|
|
|
5
5
|
from .cases import Case, CaseIgnoredStatus, CaseStatus, Comment, Trigger
|
|
6
6
|
# Charts entities
|
|
7
7
|
from .charts import (AreaChart, BarChart, ChartAlignment, ChartConfiguration, ChartDataSerie, ChartDataSerieType,
|
|
8
|
-
ChartDataType, ChartException, ColumnChart, HTMLChart, LineChart,
|
|
9
|
-
MapPoint, NumberChart, PieChart, RadarChart, RadialBarChart, ScatterChart,
|
|
10
|
-
ScatterSerieItem, TableChart, TableHeader, TableRow, TimelineChart, TimelineSerie,
|
|
8
|
+
ChartDataType, ChartException, ChartRenderTechnology, ColumnChart, HTMLChart, LineChart,
|
|
9
|
+
MapCenterType, MapChart, MapPoint, NumberChart, PieChart, RadarChart, RadialBarChart, ScatterChart,
|
|
10
|
+
ScatterSerie, ScatterSerieItem, TableChart, TableHeader, TableRow, TimelineChart, TimelineSerie,
|
|
11
11
|
TimelineSerieItem)
|
|
12
12
|
# Checkpoints entities
|
|
13
13
|
from .checkpoints import Checkpoint, Geofence, Waypoint
|
|
@@ -12,6 +12,7 @@ from .number import NumberChart
|
|
|
12
12
|
from .pie import PieChart
|
|
13
13
|
from .radar import RadarChart
|
|
14
14
|
from .radial_bar import RadialBarChart
|
|
15
|
+
from .render_technology import ChartRenderTechnology
|
|
15
16
|
from .scatter import ScatterChart, ScatterSerie, ScatterSerieItem
|
|
16
17
|
from .serie import ChartDataSerie
|
|
17
18
|
from .serie_type import ChartDataSerieType
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from .alignment import ChartAlignment
|
|
4
4
|
from .data_type import ChartDataType
|
|
5
5
|
from .exceptions import ChartException
|
|
6
|
+
from .render_technology import ChartRenderTechnology
|
|
6
7
|
from .serie import ChartDataSerie
|
|
7
8
|
from .serie_type import ChartDataSerieType
|
|
8
9
|
|
|
@@ -48,7 +49,7 @@ class LineChart:
|
|
|
48
49
|
raise ChartException('align must be an instance of ChartAlignment')
|
|
49
50
|
self.align = align
|
|
50
51
|
|
|
51
|
-
def render(self,
|
|
52
|
+
def render(self, technology: ChartRenderTechnology) -> dict | list[dict]:
|
|
52
53
|
"""
|
|
53
54
|
Render chart to a graphic Library.
|
|
54
55
|
We have two graphic libraries: GRAPHIC and CANVASJS.
|
|
@@ -57,18 +58,67 @@ class LineChart:
|
|
|
57
58
|
CANVASJS is a Javascript chart library. This is the default option.
|
|
58
59
|
"""
|
|
59
60
|
|
|
60
|
-
if
|
|
61
|
+
if technology == ChartRenderTechnology.GRAPHIC:
|
|
61
62
|
return {
|
|
62
63
|
'library': 'GRAPHIC',
|
|
63
64
|
'chart': 'LINE',
|
|
64
65
|
'configuration': self._render_graphic(),
|
|
65
66
|
}
|
|
67
|
+
|
|
68
|
+
if technology == ChartRenderTechnology.SYNCFUSION_FLUTTER_CHARTS:
|
|
69
|
+
return {
|
|
70
|
+
'library': 'syncfusion_flutter_charts',
|
|
71
|
+
'chart': 'LINE',
|
|
72
|
+
'configuration': self._render_syncfusion_flutter_charts(),
|
|
73
|
+
}
|
|
74
|
+
|
|
66
75
|
return {
|
|
67
76
|
'library': 'CANVASJS',
|
|
68
77
|
'chart': 'LINE',
|
|
69
78
|
'configuration': self._render_canvasjs(),
|
|
70
79
|
}
|
|
71
80
|
|
|
81
|
+
def _render_syncfusion_flutter_charts(self) -> list[dict]:
|
|
82
|
+
"""
|
|
83
|
+
Converts the configuration of the chart to a Flutter library syncfusion_flutter_charts.
|
|
84
|
+
"""
|
|
85
|
+
series = []
|
|
86
|
+
|
|
87
|
+
for serie in self.y_axis:
|
|
88
|
+
if serie.serie_type not in [ChartDataSerieType.LINE, ChartDataSerieType.AREA]:
|
|
89
|
+
continue
|
|
90
|
+
|
|
91
|
+
points = []
|
|
92
|
+
|
|
93
|
+
for i, value in enumerate(self.x_axis.data):
|
|
94
|
+
x_value = value.timestamp() if self.x_axis.data_type == ChartDataType.DATETIME else value
|
|
95
|
+
if not isinstance(x_value, (int, float)):
|
|
96
|
+
continue
|
|
97
|
+
|
|
98
|
+
y_value = serie.data[i]
|
|
99
|
+
if isinstance(y_value, bool):
|
|
100
|
+
if y_value:
|
|
101
|
+
y_value = 1
|
|
102
|
+
else:
|
|
103
|
+
y_value = 0
|
|
104
|
+
|
|
105
|
+
if not isinstance(y_value, (int, float)):
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
points.append({
|
|
109
|
+
'xAxis': x_value,
|
|
110
|
+
'yAxis': y_value,
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
series.append({
|
|
114
|
+
'color': serie.color,
|
|
115
|
+
'values': points,
|
|
116
|
+
'label': serie.label,
|
|
117
|
+
'type': 'AREA' if serie.serie_type == ChartDataSerieType.AREA else 'LINE',
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
return series
|
|
121
|
+
|
|
72
122
|
def _render_graphic(self) -> list[dict]:
|
|
73
123
|
"""
|
|
74
124
|
Converts the configuration of the chart to a Flutter library Graphic.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
""" Chart rendering technology / library """
|
|
2
|
+
from enum import Enum
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ChartRenderTechnology(Enum):
|
|
6
|
+
"""
|
|
7
|
+
Chart Alignment
|
|
8
|
+
"""
|
|
9
|
+
CANVAS_JS = 'CANVAS_JS'
|
|
10
|
+
GRAPHIC = 'GRAPHIC'
|
|
11
|
+
SYNCFUSION_FLUTTER_CHARTS = 'SYNCFUSION_FLUTTER_CHARTS'
|
|
12
|
+
|
|
13
|
+
@property
|
|
14
|
+
def _readable(self) -> str:
|
|
15
|
+
""" Readable """
|
|
16
|
+
return f'ChartRenderTechnology.{self.value}'
|
|
17
|
+
|
|
18
|
+
def __str__(self) -> str:
|
|
19
|
+
""" Readable property """
|
|
20
|
+
return self._readable
|
|
21
|
+
|
|
22
|
+
def __repr__(self) -> str:
|
|
23
|
+
""" Readable property """
|
|
24
|
+
return self._readable
|
layrz_sdk/lcl/core.py
CHANGED
|
@@ -112,6 +112,7 @@ class LclCore:
|
|
|
112
112
|
'PRIMARY_DEVICE': self.PRIMARY_DEVICE,
|
|
113
113
|
'SUBSTRING': self.SUBSTRING,
|
|
114
114
|
'UNIX_TO_STR': self.UNIX_TO_STR,
|
|
115
|
+
'VERSION': self.VERSION,
|
|
115
116
|
}
|
|
116
117
|
global_functions.update(additional_globals)
|
|
117
118
|
|
|
@@ -616,7 +617,7 @@ class LclCore:
|
|
|
616
617
|
if len(args) != 3:
|
|
617
618
|
return INVALID_NUMBER_OF_PARAMS.format(expected=3, received=len(args))
|
|
618
619
|
|
|
619
|
-
if args[0] is None
|
|
620
|
+
if args[0] is None:
|
|
620
621
|
return None
|
|
621
622
|
|
|
622
623
|
return args[1] if args[0] else args[2]
|
|
@@ -761,3 +762,13 @@ class LclCore:
|
|
|
761
762
|
.fromtimestamp(int(args[0]), tz=zoneinfo.ZoneInfo('UTC'))\
|
|
762
763
|
.astimezone(tz)\
|
|
763
764
|
.strftime(args[1])
|
|
765
|
+
|
|
766
|
+
def VERSION(self, *args: list[Any]) -> str:
|
|
767
|
+
""" VERSION function """
|
|
768
|
+
if len(args) > 0:
|
|
769
|
+
return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
|
|
770
|
+
|
|
771
|
+
import importlib.metadata
|
|
772
|
+
version = importlib.metadata.version('layrz_sdk')
|
|
773
|
+
|
|
774
|
+
return f'LCL {version} - Layrz SDK Runtime'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: layrz-sdk
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.3
|
|
4
4
|
Summary: Layrz SDK for Python
|
|
5
5
|
Author-email: "Golden M, Inc." <software@goldenm.com>
|
|
6
6
|
Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
layrz_sdk/__init__.py,sha256=OutylN0QazaeDVIA5NRDVyzwfYnZkAwVQzT-2F6iX2M,28
|
|
2
|
-
layrz_sdk/entities/__init__.py,sha256=
|
|
2
|
+
layrz_sdk/entities/__init__.py,sha256=v-Bu_eXT5jcWdAIljQpjDmCLoxW_lznkn1McijzFqek,1350
|
|
3
3
|
layrz_sdk/entities/broadcasts/__init__.py,sha256=E-Mmr-UjpD5Jxkut4UX7XMqi6IUEYxb_5NP3xyDM_cg,215
|
|
4
4
|
layrz_sdk/entities/broadcasts/request.py,sha256=wj1SvD0Bz36xch-Fj4u2qfA9NIhznGF9lzSBDJUS-4g,566
|
|
5
5
|
layrz_sdk/entities/broadcasts/response.py,sha256=Gd7uJvkKv_vqsML74X5Y0p4F2s-ufedvFyvdiem0-_s,586
|
|
@@ -10,7 +10,7 @@ layrz_sdk/entities/cases/__init__.py,sha256=_8cP3iegIclIkc1yUbdd9w4Da1xMragxV0aV
|
|
|
10
10
|
layrz_sdk/entities/cases/case.py,sha256=EEYOcHgU__Ysu6HKMVE3QKZHvmZ84nnWxNSawK_l0eM,2786
|
|
11
11
|
layrz_sdk/entities/cases/comment.py,sha256=y765KFiQ9hg4L2hZ-XdLKMKy5xPKXVSlgKhkX4LU_Pc,902
|
|
12
12
|
layrz_sdk/entities/cases/trigger.py,sha256=O41HpQX2eOuHbpQYsIfNHl0c2zUUkJ5yBaZB-kqFTvc,629
|
|
13
|
-
layrz_sdk/entities/charts/__init__.py,sha256=
|
|
13
|
+
layrz_sdk/entities/charts/__init__.py,sha256=ioDdjS_Iqdqks7zwhzhj20zJJ2lkYVoaAkrJK1zVaQE,806
|
|
14
14
|
layrz_sdk/entities/charts/alignment.py,sha256=qjR06H4aj35UmKqd067Qet_BTz5QH75omt1g2BaKO2Q,438
|
|
15
15
|
layrz_sdk/entities/charts/bar.py,sha256=qemrjzhRDCSVzDPIkW5qASBiGmnnlluF91t0C5sPT_4,3867
|
|
16
16
|
layrz_sdk/entities/charts/column.py,sha256=CsT8DOQgamswDp6IanEpOxNz4w2Hg4NAEyptL3MzmI4,4928
|
|
@@ -18,12 +18,13 @@ layrz_sdk/entities/charts/configuration.py,sha256=AtbI39RJLYcyi_Hq8O4HH9qiPPmDyN
|
|
|
18
18
|
layrz_sdk/entities/charts/data_type.py,sha256=DJoTDaOdCWcwqHUsOK4Zq5p1oQu1RuTrskOsjghiDLo,447
|
|
19
19
|
layrz_sdk/entities/charts/exceptions.py,sha256=yh7HpX2bEI-clDMz-6gD0G5Z7mOH3CRqS0CClR_XImQ,558
|
|
20
20
|
layrz_sdk/entities/charts/html.py,sha256=3oSHeZv82uuc0sfRU6LhyFrPPt0FJYOnj6hcluUM-Gk,995
|
|
21
|
-
layrz_sdk/entities/charts/line.py,sha256=
|
|
21
|
+
layrz_sdk/entities/charts/line.py,sha256=QQxQLaUaX6f95GO_V9nU7zTaBL5xVTonlfdYWe-21MI,6586
|
|
22
22
|
layrz_sdk/entities/charts/map.py,sha256=KL3uJzKR1kYpniw8Wth55io5gYSVD4HQz2SQUzqeHUk,4230
|
|
23
23
|
layrz_sdk/entities/charts/number.py,sha256=Hzm4zGUbUP7WYhfZ56wpYFhgIejqjwvMYM83OVu3UV4,811
|
|
24
24
|
layrz_sdk/entities/charts/pie.py,sha256=bBqQcnqT7gh_2z4gSySI6H0cZd0wmcYfokNRUH0mzDU,2972
|
|
25
25
|
layrz_sdk/entities/charts/radar.py,sha256=VfDyElzZA6k2vEUXrst_N44RcJPo9cGzE-k2e04BmXo,3155
|
|
26
26
|
layrz_sdk/entities/charts/radial_bar.py,sha256=YulumYuCRdmj20VQxhTY-1fCw9pQZLor33O6f3DwS2A,3011
|
|
27
|
+
layrz_sdk/entities/charts/render_technology.py,sha256=jEFXn8APpJUFEoPnCrxCp64_dpBUJ0JxAGrsXWtWyWI,524
|
|
27
28
|
layrz_sdk/entities/charts/scatter.py,sha256=hVV6GQLni4-zkMCwtcm4YZRUJdaU4vk6R-u6O3hkrAs,4871
|
|
28
29
|
layrz_sdk/entities/charts/serie.py,sha256=poDTxSnDBgVMdOZ-Hwkd0q1VZgVDYSAFJPhNvyEeJYo,1509
|
|
29
30
|
layrz_sdk/entities/charts/serie_type.py,sha256=cHV06B2pDEt5-5vBcGlJFxg9Srg5CoE5UkiyKmWhb6c,463
|
|
@@ -59,9 +60,9 @@ layrz_sdk/entities/telemetry/position.py,sha256=_XIjDvPae0Jmcc6ynwHar0-UvrIRkFh0
|
|
|
59
60
|
layrz_sdk/helpers/__init__.py,sha256=v3WbYVr9ygyDtxEIi59kGVXuirNswhhkG4BQv5iESRo,72
|
|
60
61
|
layrz_sdk/helpers/color.py,sha256=BoC61kyGrdplz4qB-MA9xpyEOKuiV7dPYhmAba-rk1M,1102
|
|
61
62
|
layrz_sdk/lcl/__init__.py,sha256=nmfOnbot49pvfR8xyqvs0tg7ZwzxunhWJbwA805w20M,67
|
|
62
|
-
layrz_sdk/lcl/core.py,sha256=
|
|
63
|
-
layrz_sdk-3.0.
|
|
64
|
-
layrz_sdk-3.0.
|
|
65
|
-
layrz_sdk-3.0.
|
|
66
|
-
layrz_sdk-3.0.
|
|
67
|
-
layrz_sdk-3.0.
|
|
63
|
+
layrz_sdk/lcl/core.py,sha256=OVy4LCDlX9d3GsP1hzZkurqAsBSEx-Q5A15Mb7J67Qs,22987
|
|
64
|
+
layrz_sdk-3.0.3.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
|
|
65
|
+
layrz_sdk-3.0.3.dist-info/METADATA,sha256=XtaeQANSmtiZX3rBh6NBa2PrJegeJO-A1XhVdFAs0hc,1458
|
|
66
|
+
layrz_sdk-3.0.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
67
|
+
layrz_sdk-3.0.3.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
|
|
68
|
+
layrz_sdk-3.0.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|