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.

@@ -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, MapCenterType, MapChart,
9
- MapPoint, NumberChart, PieChart, RadarChart, RadialBarChart, ScatterChart, ScatterSerie,
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, use_new_definition: bool = False) -> dict | list[dict]:
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 use_new_definition:
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 or args[1] is None or args[2] 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.1
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=Wg9Pv2_u2EtRq6u11IWJZQ_pOZxMM_fPt14joHcNmYE,1327
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=fNYlMuTyD65G6-pm5I0qmgUXhMEdie5igmoxrcBH-dw,753
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=JN8QtKpqZJEubchUSabs7xlpVN0CH9HQyDIiaIeb5S8,5175
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=UiB9Bq719Y7NOM6fZfykkwEmgF3efa7GLTB37lpKmM8,22683
63
- layrz_sdk-3.0.1.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
64
- layrz_sdk-3.0.1.dist-info/METADATA,sha256=vyWD635taUa0y58DFzJ_4RITs6-yadlcLlOyomxaCS4,1458
65
- layrz_sdk-3.0.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
66
- layrz_sdk-3.0.1.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
67
- layrz_sdk-3.0.1.dist-info/RECORD,,
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,,