layrz-sdk 3.0.9__py3-none-any.whl → 3.0.11__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.

Files changed (55) hide show
  1. layrz_sdk/entities/broadcasts/request.py +10 -9
  2. layrz_sdk/entities/broadcasts/response.py +10 -9
  3. layrz_sdk/entities/broadcasts/result.py +13 -11
  4. layrz_sdk/entities/broadcasts/service.py +8 -9
  5. layrz_sdk/entities/broadcasts/status.py +10 -9
  6. layrz_sdk/entities/cases/case.py +33 -30
  7. layrz_sdk/entities/cases/comment.py +10 -10
  8. layrz_sdk/entities/cases/trigger.py +9 -10
  9. layrz_sdk/entities/charts/alignment.py +9 -8
  10. layrz_sdk/entities/charts/bar.py +31 -45
  11. layrz_sdk/entities/charts/color.py +12 -10
  12. layrz_sdk/entities/charts/column.py +30 -49
  13. layrz_sdk/entities/charts/configuration.py +11 -12
  14. layrz_sdk/entities/charts/data_type.py +9 -8
  15. layrz_sdk/entities/charts/exceptions.py +11 -12
  16. layrz_sdk/entities/charts/html.py +6 -5
  17. layrz_sdk/entities/charts/line.py +52 -46
  18. layrz_sdk/entities/charts/map.py +23 -19
  19. layrz_sdk/entities/charts/number.py +6 -5
  20. layrz_sdk/entities/charts/pie.py +27 -34
  21. layrz_sdk/entities/charts/radar.py +14 -34
  22. layrz_sdk/entities/charts/radial_bar.py +27 -34
  23. layrz_sdk/entities/charts/render_technology.py +9 -8
  24. layrz_sdk/entities/charts/scatter.py +52 -53
  25. layrz_sdk/entities/charts/serie.py +4 -3
  26. layrz_sdk/entities/charts/serie_type.py +9 -8
  27. layrz_sdk/entities/charts/table.py +6 -6
  28. layrz_sdk/entities/charts/timeline.py +21 -32
  29. layrz_sdk/entities/checkpoints/checkpoint.py +15 -12
  30. layrz_sdk/entities/checkpoints/geofence.py +9 -10
  31. layrz_sdk/entities/checkpoints/waypoint.py +14 -12
  32. layrz_sdk/entities/events/event.py +15 -13
  33. layrz_sdk/entities/formatting/text_align.py +10 -9
  34. layrz_sdk/entities/general/asset.py +16 -13
  35. layrz_sdk/entities/general/asset_operation_mode.py +9 -8
  36. layrz_sdk/entities/general/custom_field.py +9 -10
  37. layrz_sdk/entities/general/device.py +13 -12
  38. layrz_sdk/entities/general/sensor.py +9 -10
  39. layrz_sdk/entities/general/user.py +9 -10
  40. layrz_sdk/entities/repcom/transaction.py +4 -4
  41. layrz_sdk/entities/reports/col.py +17 -15
  42. layrz_sdk/entities/reports/format.py +3 -4
  43. layrz_sdk/entities/reports/header.py +4 -5
  44. layrz_sdk/entities/reports/page.py +12 -11
  45. layrz_sdk/entities/reports/report.py +14 -14
  46. layrz_sdk/entities/reports/row.py +10 -10
  47. layrz_sdk/entities/telemetry/message.py +5 -4
  48. layrz_sdk/entities/telemetry/position.py +13 -12
  49. layrz_sdk/lcl/core.py +93 -65
  50. {layrz_sdk-3.0.9.dist-info → layrz_sdk-3.0.11.dist-info}/METADATA +2 -1
  51. layrz_sdk-3.0.11.dist-info/RECORD +69 -0
  52. {layrz_sdk-3.0.9.dist-info → layrz_sdk-3.0.11.dist-info}/WHEEL +1 -1
  53. layrz_sdk-3.0.9.dist-info/RECORD +0 -69
  54. {layrz_sdk-3.0.9.dist-info → layrz_sdk-3.0.11.dist-info}/LICENSE +0 -0
  55. {layrz_sdk-3.0.9.dist-info → layrz_sdk-3.0.11.dist-info}/top_level.txt +0 -0
layrz_sdk/lcl/core.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Layrz Compute Language SDK"""
2
2
 
3
3
  # ruff: noqa: ANN401
4
- from typing import Any, Dict, List, Self
4
+ from typing import Any, Dict, List
5
5
 
6
6
  PATTERN_INVALID = 'Pattern should be string, received {received}'
7
7
  INVALID_NUMBER_OF_PARAMS = 'Invalid number of arguments - Expected {expected} - Given {received}'
@@ -13,8 +13,8 @@ INVALID_ARGUMENTS = 'Invalid arguments - {e}'
13
13
  class LclCore:
14
14
  """Layrz Compute Language SDK"""
15
15
 
16
- def __init__( # pylint: disable=dangerous-default-value
17
- self: Self,
16
+ def __init__(
17
+ self,
18
18
  script: str = '',
19
19
  sensors: Dict = None,
20
20
  previous_sensors: Dict = None,
@@ -40,8 +40,8 @@ class LclCore:
40
40
  self._custom_fields = custom_fields
41
41
  self._script = script
42
42
 
43
- def perform( # pylint: disable=dangerous-default-value, invalid-name
44
- self: Self,
43
+ def perform(
44
+ self,
45
45
  additional_globals: Dict = None,
46
46
  additional_locals: Dict = None,
47
47
  ) -> str:
@@ -122,15 +122,27 @@ class LclCore:
122
122
 
123
123
  import json
124
124
 
125
- result = json.dumps(eval(self._script, global_functions, local_variables)) # pylint: disable=eval-used
125
+ result = json.dumps(eval(self._script, global_functions, local_variables))
126
126
 
127
127
  return result
128
- except Exception as err: # pylint: disable=broad-except
128
+ except Exception as err:
129
129
  import json
130
130
 
131
131
  return json.dumps(INVALID_ARGUMENTS.format(e=err))
132
132
 
133
- def GET_PARAM(self: Self, *args: List[Any]) -> Any:
133
+ def _standarize_datatypes(self, args: List[Any]) -> List[Any]:
134
+ """Standarize data types"""
135
+ result_args = []
136
+
137
+ for arg in args:
138
+ if isinstance(arg, (float, int)):
139
+ result_args.append(float(arg))
140
+ else:
141
+ result_args.append(arg)
142
+
143
+ return result_args
144
+
145
+ def GET_PARAM(self, *args: List[Any]) -> Any:
134
146
  """GET_PARAM Function"""
135
147
  if len(args) > 2:
136
148
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -142,13 +154,13 @@ class LclCore:
142
154
  return self._payload.get(args[0], args[1])
143
155
  return self._payload.get(args[0], None)
144
156
 
145
- def GET_DISTANCE_TRAVELED(self: Self, *args: List[Any]) -> str | float:
157
+ def GET_DISTANCE_TRAVELED(self, *args: List[Any]) -> str | float:
146
158
  """GET_DISTANCE_TRAVELED Function"""
147
159
  if len(args) > 0:
148
160
  return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
149
161
  return self._asset_constants.get('distanceTraveled', 0)
150
162
 
151
- def GET_PREVIOUS_SENSOR(self: Self, *args: List[Any]) -> Any:
163
+ def GET_PREVIOUS_SENSOR(self, *args: List[Any]) -> Any:
152
164
  """GET_PREVIOUS_SENSOR Function"""
153
165
  if len(args) < 1:
154
166
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -163,7 +175,7 @@ class LclCore:
163
175
  return self._previous_sensors.get(args[0], args[1])
164
176
  return self._previous_sensors.get(args[0], None)
165
177
 
166
- def GET_SENSOR(self: Self, *args: List[Any]) -> Any:
178
+ def GET_SENSOR(self, *args: List[Any]) -> Any:
167
179
  """GET_SENSOR Function"""
168
180
  if len(args) < 1:
169
181
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -178,19 +190,19 @@ class LclCore:
178
190
  return self._sensors.get(args[0], args[1])
179
191
  return self._sensors.get(args[0], None)
180
192
 
181
- def CONSTANT(self: Self, *args: List[Any]) -> Any:
193
+ def CONSTANT(self, *args: List[Any]) -> Any:
182
194
  """CONSTANT Function"""
183
195
  if len(args) > 1:
184
196
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
185
197
  return args[0]
186
198
 
187
- def GET_CUSTOM_FIELD(self: Self, *args: List[Any]) -> str:
199
+ def GET_CUSTOM_FIELD(self, *args: List[Any]) -> str:
188
200
  """GET_CUSTOM_FIELD Function"""
189
201
  if len(args) > 1:
190
202
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
191
203
  return self._custom_fields.get(args[0], '')
192
204
 
193
- def COMPARE(self: Self, *args: List[Any]) -> str | None | bool:
205
+ def COMPARE(self, *args: List[Any]) -> str | None | bool:
194
206
  """COMPARE Function"""
195
207
  if len(args) != 2:
196
208
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -198,11 +210,13 @@ class LclCore:
198
210
  if args[0] is None or args[1] is None:
199
211
  return None
200
212
 
213
+ args = self._standarize_datatypes(args)
214
+
201
215
  if not isinstance(args[0], type(args[1])):
202
216
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
203
217
  return args[0] == args[1]
204
218
 
205
- def OR_OPERATOR(self: Self, *args: List[Any]) -> bool:
219
+ def OR_OPERATOR(self, *args: List[Any]) -> bool:
206
220
  """OR_OPERATOR Function"""
207
221
  result = False
208
222
 
@@ -214,7 +228,7 @@ class LclCore:
214
228
 
215
229
  return result
216
230
 
217
- def AND_OPERATOR(self: Self, *args: List[Any]) -> bool:
231
+ def AND_OPERATOR(self, *args: List[Any]) -> bool:
218
232
  """AND_OPERATOR Function"""
219
233
  result = False
220
234
  is_first = True
@@ -231,7 +245,7 @@ class LclCore:
231
245
 
232
246
  return result
233
247
 
234
- def SUM(self: Self, *args: List[Any]) -> float:
248
+ def SUM(self, *args: List[Any]) -> float:
235
249
  """SUM Function"""
236
250
  result = 0
237
251
 
@@ -241,12 +255,12 @@ class LclCore:
241
255
 
242
256
  try:
243
257
  result += float(num)
244
- except Exception: # pylint: disable=broad-except
258
+ except Exception:
245
259
  pass
246
260
 
247
261
  return result
248
262
 
249
- def SUBSTRACT(self: Self, *args: List[Any]) -> float:
263
+ def SUBSTRACT(self, *args: List[Any]) -> float:
250
264
  """SUBSTRACT Function"""
251
265
  result = 0
252
266
  is_first = True
@@ -261,12 +275,12 @@ class LclCore:
261
275
  is_first = False
262
276
  else:
263
277
  result -= float(num)
264
- except Exception: # pylint: disable=broad-except
278
+ except Exception:
265
279
  pass
266
280
 
267
281
  return result
268
282
 
269
- def MULTIPLY(self: Self, *args: List[Any]) -> float:
283
+ def MULTIPLY(self, *args: List[Any]) -> float:
270
284
  """MULTIPLY Function"""
271
285
  result = 0
272
286
  is_first = True
@@ -281,12 +295,12 @@ class LclCore:
281
295
  result = float(num)
282
296
  else:
283
297
  result *= float(num)
284
- except Exception: # pylint: disable=broad-except
298
+ except Exception:
285
299
  pass
286
300
 
287
301
  return result
288
302
 
289
- def DIVIDE(self: Self, *args: List[Any]) -> float:
303
+ def DIVIDE(self, *args: List[Any]) -> float:
290
304
  """DIVIDE Function"""
291
305
  result = 0
292
306
  is_first = True
@@ -301,12 +315,12 @@ class LclCore:
301
315
  result = float(num)
302
316
  else:
303
317
  result /= float(num)
304
- except Exception: # pylint: disable=broad-except
318
+ except Exception:
305
319
  pass
306
320
 
307
321
  return result
308
322
 
309
- def TO_BOOL(self: Self, *args: List[Any]) -> str | None | bool:
323
+ def TO_BOOL(self, *args: List[Any]) -> str | None | bool:
310
324
  """TO_BOOL Function"""
311
325
  if len(args) > 1:
312
326
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -316,7 +330,7 @@ class LclCore:
316
330
 
317
331
  return bool(args[0])
318
332
 
319
- def TO_STR(self: Self, *args: List[Any]) -> str | None:
333
+ def TO_STR(self, *args: List[Any]) -> str | None:
320
334
  """TO_STR Function"""
321
335
  if len(args) > 1:
322
336
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -326,7 +340,7 @@ class LclCore:
326
340
 
327
341
  return str(args[0])
328
342
 
329
- def TO_INT(self: Self, *args: List[Any]) -> str | None | int:
343
+ def TO_INT(self, *args: List[Any]) -> str | None | int:
330
344
  """TO_INT Function"""
331
345
  if len(args) > 1:
332
346
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -336,7 +350,7 @@ class LclCore:
336
350
 
337
351
  return int(args[0])
338
352
 
339
- def CEIL(self: Self, *args: List[Any]) -> str | None | int:
353
+ def CEIL(self, *args: List[Any]) -> str | None | int:
340
354
  """CEIL Function"""
341
355
  if len(args) > 1:
342
356
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -351,7 +365,7 @@ class LclCore:
351
365
 
352
366
  return math.ceil(args[0])
353
367
 
354
- def FLOOR(self: Self, *args: List[Any]) -> str | None | int:
368
+ def FLOOR(self, *args: List[Any]) -> str | None | int:
355
369
  """FLOOR Function"""
356
370
  if len(args) > 1:
357
371
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -366,7 +380,7 @@ class LclCore:
366
380
 
367
381
  return math.floor(args[0])
368
382
 
369
- def ROUND(self: Self, *args: List[Any]) -> str | None | int:
383
+ def ROUND(self, *args: List[Any]) -> str | None | int:
370
384
  """ROUND Function"""
371
385
  if len(args) > 1:
372
386
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -379,7 +393,7 @@ class LclCore:
379
393
 
380
394
  return round(args[0])
381
395
 
382
- def SQRT(self: Self, *args: List[Any]) -> str | None | float:
396
+ def SQRT(self, *args: List[Any]) -> str | None | float:
383
397
  """SQRT Function"""
384
398
  if len(args) > 1:
385
399
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -391,7 +405,7 @@ class LclCore:
391
405
 
392
406
  return math.sqrt(args[0])
393
407
 
394
- def CONCAT(self: Self, *args: List[Any]) -> str | None:
408
+ def CONCAT(self, *args: List[Any]) -> str | None:
395
409
  """CONCAT Function"""
396
410
  for val in args:
397
411
  if val is None:
@@ -399,7 +413,7 @@ class LclCore:
399
413
 
400
414
  return ''.join([str(val) for val in args])
401
415
 
402
- def RANDOM(self: Self, *args: List[Any]) -> float | str:
416
+ def RANDOM(self, *args: List[Any]) -> float | str:
403
417
  """RANDOM Function"""
404
418
  if len(args) > 2:
405
419
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -413,7 +427,7 @@ class LclCore:
413
427
 
414
428
  return random.random() * (float(args[1]) - float(args[0])) + float(args[0])
415
429
 
416
- def RANDOM_INT(self: Self, *args: List[Any]) -> int | str:
430
+ def RANDOM_INT(self, *args: List[Any]) -> int | str:
417
431
  """RANDOM_INT Function"""
418
432
  if len(args) != 2:
419
433
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -425,7 +439,7 @@ class LclCore:
425
439
 
426
440
  return random.randint(int(args[0]), int(args[1]))
427
441
 
428
- def GREATER_THAN_OR_EQUALS_TO(self: Self, *args: List[Any]) -> str | None | bool:
442
+ def GREATER_THAN_OR_EQUALS_TO(self, *args: List[Any]) -> str | None | bool:
429
443
  """GREATER_THAN_OR_EQUALS_TO Function"""
430
444
  if len(args) > 2:
431
445
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -435,11 +449,13 @@ class LclCore:
435
449
  if args[0] is None or args[1] is None:
436
450
  return None
437
451
 
452
+ args = self._standarize_datatypes(args)
453
+
438
454
  if not isinstance(args[0], type(args[1])):
439
455
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
440
456
  return args[0] >= args[1]
441
457
 
442
- def GREATER_THAN(self: Self, *args: List[Any]) -> str | None | bool:
458
+ def GREATER_THAN(self, *args: List[Any]) -> str | None | bool:
443
459
  """GREATER_THAN Function"""
444
460
  if len(args) > 2:
445
461
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -449,11 +465,13 @@ class LclCore:
449
465
  if args[0] is None or args[1] is None:
450
466
  return None
451
467
 
468
+ args = self._standarize_datatypes(args)
469
+
452
470
  if not isinstance(args[0], type(args[1])):
453
471
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
454
472
  return args[0] > args[1]
455
473
 
456
- def LESS_THAN_OR_EQUALS_TO(self: Self, *args: List[Any]) -> str | None | bool:
474
+ def LESS_THAN_OR_EQUALS_TO(self, *args: List[Any]) -> str | None | bool:
457
475
  """LESS_THAN_OR_EQUALS_TO Function"""
458
476
  if len(args) > 2:
459
477
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -463,11 +481,13 @@ class LclCore:
463
481
  if args[0] is None or args[1] is None:
464
482
  return None
465
483
 
484
+ args = self._standarize_datatypes(args)
485
+
466
486
  if not isinstance(args[0], type(args[1])):
467
487
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
468
488
  return args[0] <= args[1]
469
489
 
470
- def LESS_THAN(self: Self, *args: List[Any]) -> str | None | bool:
490
+ def LESS_THAN(self, *args: List[Any]) -> str | None | bool:
471
491
  """LESS_THAN Function"""
472
492
  if len(args) > 2:
473
493
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -477,11 +497,13 @@ class LclCore:
477
497
  if args[0] is None or args[1] is None:
478
498
  return None
479
499
 
500
+ args = self._standarize_datatypes(args)
501
+
480
502
  if not isinstance(args[0], type(args[1])):
481
503
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
482
504
  return args[0] < args[1]
483
505
 
484
- def DIFFERENT(self: Self, *args: List[Any]) -> str | None | bool:
506
+ def DIFFERENT(self, *args: List[Any]) -> str | None | bool:
485
507
  """DIFFERENT Function"""
486
508
  if len(args) > 2:
487
509
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -491,11 +513,13 @@ class LclCore:
491
513
  if args[0] is None or args[1] is None:
492
514
  return None
493
515
 
516
+ args = self._standarize_datatypes(args)
517
+
494
518
  if not isinstance(args[0], type(args[1])):
495
519
  return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
496
520
  return args[0] != args[1]
497
521
 
498
- def HEX_TO_STR(self: Self, *args: List[Any]) -> str | None:
522
+ def HEX_TO_STR(self, *args: List[Any]) -> str | None:
499
523
  """HEX_TO_STR Function"""
500
524
  if len(args) > 1:
501
525
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -510,10 +534,10 @@ class LclCore:
510
534
  try:
511
535
  byte_array = bytes.fromhex(hexa)
512
536
  return byte_array.decode('ASCII')
513
- except Exception: # pylint: disable=broad-except
537
+ except Exception:
514
538
  return 'Invalid hex string'
515
539
 
516
- def STR_TO_HEX(self: Self, *args: List[Any]) -> str | None:
540
+ def STR_TO_HEX(self, *args: List[Any]) -> str | None:
517
541
  """STR_TO_HEX Function"""
518
542
  if len(args) > 1:
519
543
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -523,7 +547,7 @@ class LclCore:
523
547
 
524
548
  return str(args[0]).encode('ASCII').hex()
525
549
 
526
- def HEX_TO_INT(self: Self, *args: List[Any]) -> str | None | int:
550
+ def HEX_TO_INT(self, *args: List[Any]) -> str | None | int:
527
551
  """HEX_TO_INT Function"""
528
552
  if len(args) > 1:
529
553
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -533,10 +557,10 @@ class LclCore:
533
557
 
534
558
  try:
535
559
  return int(int(args[0], 16))
536
- except Exception: # pylint: disable=broad-except
560
+ except Exception:
537
561
  return 'Invalid hex string'
538
562
 
539
- def INT_TO_HEX(self: Self, *args: List[Any]) -> str | None:
563
+ def INT_TO_HEX(self, *args: List[Any]) -> str | None:
540
564
  """INT_TO_HEX Function"""
541
565
  if len(args) > 1:
542
566
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -546,10 +570,10 @@ class LclCore:
546
570
 
547
571
  try:
548
572
  return hex(int(args[0]))[2:]
549
- except Exception: # pylint: disable=broad-except
573
+ except Exception:
550
574
  return 'Invalid int value'
551
575
 
552
- def TO_FLOAT(self: Self, *args: List[Any]) -> str | None | float:
576
+ def TO_FLOAT(self, *args: List[Any]) -> str | None | float:
553
577
  """TO_FLOAT Function"""
554
578
  if len(args) > 1:
555
579
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -559,10 +583,10 @@ class LclCore:
559
583
 
560
584
  try:
561
585
  return float(args[0])
562
- except Exception: # pylint: disable=broad-except
586
+ except Exception:
563
587
  return f'Invalid arguments - must be real number, not {type(args[0]).__name__}'
564
588
 
565
- def IS_PARAMETER_PRESENT(self: Self, *args: List[Any]) -> str | bool:
589
+ def IS_PARAMETER_PRESENT(self, *args: List[Any]) -> str | bool:
566
590
  """IS_PARAMETER_PRESENT Function"""
567
591
  if len(args) > 1:
568
592
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -572,7 +596,7 @@ class LclCore:
572
596
 
573
597
  return args[0] in self._payload
574
598
 
575
- def IS_SENSOR_PRESENT(self: Self, *args: List[Any]) -> str | bool:
599
+ def IS_SENSOR_PRESENT(self, *args: List[Any]) -> str | bool:
576
600
  """IS_SENSOR_PRESENT Function"""
577
601
  if len(args) > 1:
578
602
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -582,7 +606,7 @@ class LclCore:
582
606
 
583
607
  return args[0] in self._sensors
584
608
 
585
- def INSIDE_RANGE(self: Self, *args: List[Any]) -> str | None | bool:
609
+ def INSIDE_RANGE(self, *args: List[Any]) -> str | None | bool:
586
610
  """INSIDE_RANGE Function"""
587
611
  if len(args) != 3:
588
612
  return INVALID_NUMBER_OF_PARAMS.format(expected=3, received=len(args))
@@ -590,6 +614,8 @@ class LclCore:
590
614
  if args[0] is None or args[1] is None or args[2] is None:
591
615
  return None
592
616
 
617
+ args = self._standarize_datatypes(args)
618
+
593
619
  if not isinstance(args[0], type(args[1])):
594
620
  return DIFFERENT_TYPES_RANGES.format(
595
621
  arg1=type(args[0]).__name__,
@@ -599,7 +625,7 @@ class LclCore:
599
625
 
600
626
  return args[1] <= args[0] <= args[2]
601
627
 
602
- def OUTSIDE_RANGE(self: Self, *args: List[Any]) -> str | None | bool:
628
+ def OUTSIDE_RANGE(self, *args: List[Any]) -> str | None | bool:
603
629
  """OUTSIDE_RANGE Function"""
604
630
  if len(args) != 3:
605
631
  return INVALID_NUMBER_OF_PARAMS.format(expected=3, received=len(args))
@@ -607,6 +633,8 @@ class LclCore:
607
633
  if args[0] is None or args[1] is None or args[2] is None:
608
634
  return None
609
635
 
636
+ args = self._standarize_datatypes(args)
637
+
610
638
  if not isinstance(args[0], type(args[1])):
611
639
  return DIFFERENT_TYPES_RANGES.format(
612
640
  arg1=type(args[0]).__name__,
@@ -616,14 +644,14 @@ class LclCore:
616
644
 
617
645
  return not args[1] <= args[0] <= args[2]
618
646
 
619
- def GET_TIME_DIFFERENCE(self: Self, *args: List[Any]) -> str | float:
647
+ def GET_TIME_DIFFERENCE(self, *args: List[Any]) -> str | float:
620
648
  """GET_TIME_DIFFERENCE Function"""
621
649
  if len(args) > 0:
622
650
  return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
623
651
 
624
652
  return self._asset_constants.get('timeElapsed', 0)
625
653
 
626
- def IF(self: Self, *args: list[Any]) -> Any:
654
+ def IF(self, *args: list[Any]) -> Any:
627
655
  """IF Function"""
628
656
  if len(args) != 3:
629
657
  return INVALID_NUMBER_OF_PARAMS.format(expected=3, received=len(args))
@@ -633,14 +661,14 @@ class LclCore:
633
661
 
634
662
  return args[1] if args[0] else args[2]
635
663
 
636
- def NOW(self: Self, *args: List[Any]) -> float:
664
+ def NOW(self, *args: List[Any]) -> float:
637
665
  """NOW Function"""
638
666
  import zoneinfo
639
667
  from datetime import datetime
640
668
 
641
669
  return datetime.now(tz=zoneinfo.ZoneInfo('UTC')).timestamp()
642
670
 
643
- def REGEX(self: Self, *args: List[Any]) -> str | None | bool:
671
+ def REGEX(self, *args: List[Any]) -> str | None | bool:
644
672
  """REGEX Function"""
645
673
  if len(args) != 2:
646
674
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -656,14 +684,14 @@ class LclCore:
656
684
  pattern = re.compile(args[1])
657
685
  return bool(pattern.match(args[0]))
658
686
 
659
- def IS_NONE(self: Self, *args: List[Any]) -> str | bool:
687
+ def IS_NONE(self, *args: List[Any]) -> str | bool:
660
688
  """IS_NONE Function"""
661
689
  if len(args) != 1:
662
690
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
663
691
 
664
692
  return args[0] is None
665
693
 
666
- def NOT(self: Self, *args: List[Any]) -> str | bool:
694
+ def NOT(self, *args: List[Any]) -> str | bool:
667
695
  """NOT Function"""
668
696
  if len(args) != 1:
669
697
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
@@ -673,7 +701,7 @@ class LclCore:
673
701
 
674
702
  return not args[0]
675
703
 
676
- def CONTAINS(self: Self, *args: List[Any]) -> str | bool:
704
+ def CONTAINS(self, *args: List[Any]) -> str | bool:
677
705
  """CONTAINS function"""
678
706
  if len(args) != 2:
679
707
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -683,7 +711,7 @@ class LclCore:
683
711
 
684
712
  return str(args[0]) in str(args[1])
685
713
 
686
- def STARTS_WITH(self: Self, *args: List[Any]) -> str | bool:
714
+ def STARTS_WITH(self, *args: List[Any]) -> str | bool:
687
715
  """STARTS_WITH function"""
688
716
  if len(args) != 2:
689
717
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -693,7 +721,7 @@ class LclCore:
693
721
 
694
722
  return str(args[1]).startswith(str(args[0]))
695
723
 
696
- def ENDS_WITH(self: Self, *args: List[Any]) -> str | bool:
724
+ def ENDS_WITH(self, *args: List[Any]) -> str | bool:
697
725
  """ENDS_WITH function"""
698
726
  if len(args) != 2:
699
727
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -703,14 +731,14 @@ class LclCore:
703
731
 
704
732
  return str(args[1]).endswith(str(args[0]))
705
733
 
706
- def PRIMARY_DEVICE(self: Self, *args: List[Any]) -> str:
734
+ def PRIMARY_DEVICE(self, *args: List[Any]) -> str:
707
735
  """PRIMARY_DEVICE function"""
708
736
  if len(args) > 0:
709
737
  return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
710
738
 
711
739
  return self._asset_constants.get('primaryDevice', None)
712
740
 
713
- def SUBSTRING(self: Self, *args: List[Any]) -> str:
741
+ def SUBSTRING(self, *args: List[Any]) -> str:
714
742
  """Get a substring from string (args[0])"""
715
743
  if len(args) < 2:
716
744
  return INVALID_NUMBER_OF_PARAMS.format(
@@ -746,7 +774,7 @@ class LclCore:
746
774
  return args[0][args[1] : args[2]]
747
775
  return args[0][args[1] :]
748
776
 
749
- def UNIX_TO_STR(self: Self, *args: List[Any]) -> str:
777
+ def UNIX_TO_STR(self, *args: List[Any]) -> str:
750
778
  """Convert UNIX timestamp date (args[0]) to format (args[1]) string"""
751
779
  if len(args) < 2:
752
780
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
@@ -773,7 +801,7 @@ class LclCore:
773
801
 
774
802
  return datetime.fromtimestamp(int(args[0]), tz=zoneinfo.ZoneInfo('UTC')).astimezone(tz).strftime(args[1])
775
803
 
776
- def VERSION(self: Self, *args: List[Any]) -> str:
804
+ def VERSION(self, *args: List[Any]) -> str:
777
805
  """VERSION function"""
778
806
  if len(args) > 0:
779
807
  return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: layrz-sdk
3
- Version: 3.0.9
3
+ Version: 3.0.11
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>
@@ -17,6 +17,7 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: requests
19
19
  Requires-Dist: xlsxwriter
20
+ Requires-Dist: tzdata
20
21
 
21
22
  # Layrz SDK
22
23
 
@@ -0,0 +1,69 @@
1
+ layrz_sdk/__init__.py,sha256=OutylN0QazaeDVIA5NRDVyzwfYnZkAwVQzT-2F6iX2M,28
2
+ layrz_sdk/entities/__init__.py,sha256=osv4J4OF2eIxe_h5u17y7nisdtNzluMD2L0xLpA05mI,2135
3
+ layrz_sdk/entities/broadcasts/__init__.py,sha256=E-Mmr-UjpD5Jxkut4UX7XMqi6IUEYxb_5NP3xyDM_cg,215
4
+ layrz_sdk/entities/broadcasts/request.py,sha256=7r6-68ies6l5F0lVVpYg2aI2uTtn9UkK5yND3rrutLs,631
5
+ layrz_sdk/entities/broadcasts/response.py,sha256=_LDggLwSGsuG0EAAwQqSIMmNu_WA3eL7S77-_HFHeRA,664
6
+ layrz_sdk/entities/broadcasts/result.py,sha256=BQR6IY0H6ysyTUbvlUSmGVcVGxpJ1zRE9TBpvNvocbg,1347
7
+ layrz_sdk/entities/broadcasts/service.py,sha256=tvsr0fbPO4a4Pm_dCEQuB-xPUkseNTUEr1qOjKFVWVI,590
8
+ layrz_sdk/entities/broadcasts/status.py,sha256=Xc96vsF5GLkax68-dh-hFvCsOimCBLlPJT3K90fDP1I,603
9
+ layrz_sdk/entities/cases/__init__.py,sha256=_8cP3iegIclIkc1yUbdd9w4Da1xMragxV0aVoWjvC6s,135
10
+ layrz_sdk/entities/cases/case.py,sha256=0JZw1WZkeqiwEN6QMp8s36MJUix0JA6uf6zdtiJ1ZeA,2908
11
+ layrz_sdk/entities/cases/comment.py,sha256=BfTYfXayzOft5CtSlhZcWX45mTUFHHtXDfymN-hysYY,935
12
+ layrz_sdk/entities/cases/trigger.py,sha256=hY5Ao1gWn4syb7OcC25dSX7hETY5C3sytNLpbSCRShM,661
13
+ layrz_sdk/entities/charts/__init__.py,sha256=zDg_ZlMnOlhNPoNDYT4Z_5CqUYipJtGbPYtGHQLcZlo,864
14
+ layrz_sdk/entities/charts/alignment.py,sha256=_hbTslyVqCxEKM0yoT1893IJozScOYZSzfxcAkKJv_k,473
15
+ layrz_sdk/entities/charts/bar.py,sha256=o2uiwnnHagRexjUDNOYcx6RF4tyOwzKRj806Px6B-GA,6101
16
+ layrz_sdk/entities/charts/color.py,sha256=6P6dygdGSO2BsUtbUo1hII1bwsHiLTx4NPAHeGUe7XM,783
17
+ layrz_sdk/entities/charts/column.py,sha256=lyZOgljuOUjF6HmiU1_b3yGkwO7hrnAMe7WTM9HkKJ4,7093
18
+ layrz_sdk/entities/charts/configuration.py,sha256=-fzgK5Oz4WixidNC7-_YReISlORjDZT-xJccvbh91aM,1200
19
+ layrz_sdk/entities/charts/data_type.py,sha256=zK5ofVZETRTWUye4cce7rDJbBz68bsSRB2lU_2MuLhU,481
20
+ layrz_sdk/entities/charts/exceptions.py,sha256=B5wMFlC9iJVEmDsR9ycjC7p-ru-Bne6xHUeuXUTKat0,602
21
+ layrz_sdk/entities/charts/html.py,sha256=jrOCVrbQssIa195sBgXv06Ol0xrHaT9qHjSQVnyRWu4,1060
22
+ layrz_sdk/entities/charts/line.py,sha256=8e8uvsJxlxoVQ5YEviAbkLryWonhBTIP4TW_lPv2CuU,8324
23
+ layrz_sdk/entities/charts/map.py,sha256=eDuTH1b17T7g_GIzCmoPOGOriIwpTmU3cmEEPWRCRLM,4451
24
+ layrz_sdk/entities/charts/number.py,sha256=cr-PZ-zuG6QLdfNAB5kBFxKRWZqHIXBOYbbWUtqP5wU,1133
25
+ layrz_sdk/entities/charts/pie.py,sha256=ZaawevXsQrAKQAee-36lhouhVw0wGX5GNulc_AiCtvE,3827
26
+ layrz_sdk/entities/charts/radar.py,sha256=mlydkHRtruARh3DvHo6nQVsFm8szkCroiepZZPfjwrc,2977
27
+ layrz_sdk/entities/charts/radial_bar.py,sha256=DjwlvMuwGYAqIoAHIEqS-0ZBW7W4hZgxlR862YPqBw4,3871
28
+ layrz_sdk/entities/charts/render_technology.py,sha256=Uef14Ue0mnOA4l-2DaIn78D6Kfz2T7O07kX_cFwmEVQ,642
29
+ layrz_sdk/entities/charts/scatter.py,sha256=4egcj6BYM3B0qJ7Zc7z7ThqIYV5k0nZ_1V2xiomhDCg,7608
30
+ layrz_sdk/entities/charts/serie.py,sha256=xAEegIPBqg4opfZxpwVfPbNQNhgatjs6tAn-mvmTp_w,1519
31
+ layrz_sdk/entities/charts/serie_type.py,sha256=P7FnH7vugn8IxOIqPk86POr0DNnWb9YLNROVxwNby3E,499
32
+ layrz_sdk/entities/charts/table.py,sha256=G-MQu9UBDZGnG_AvcOqY-MOXgrQ87E4myUgRHX6g3rE,1631
33
+ layrz_sdk/entities/charts/timeline.py,sha256=Udyv7Fe9_5MYinazRRpIKxzWl0q9Gw5I4XghXrTEqpM,3911
34
+ layrz_sdk/entities/checkpoints/__init__.py,sha256=Bn_L1GbWcWUuBDpSVHKDqpjGYeIWDbPNI-_OnD-jrJQ,126
35
+ layrz_sdk/entities/checkpoints/checkpoint.py,sha256=WtrwLZQy8Rf4czhDnpc1KsVNrL0tG8zQDYwEoFdcShk,1105
36
+ layrz_sdk/entities/checkpoints/geofence.py,sha256=VWgfSoz6D1wshjK9w35Rnxg6_OhcIPKjInt0HTztzog,685
37
+ layrz_sdk/entities/checkpoints/waypoint.py,sha256=WH8460Pd3SLXLViel4VqAiXGCq1WDlsxVBDxshhh_p8,1277
38
+ layrz_sdk/entities/events/__init__.py,sha256=6W9HsNBCOvVDJl9_1cnX_YlsZRHaZbNBtnYTmST5-WU,49
39
+ layrz_sdk/entities/events/event.py,sha256=SsnCuH3PC9czk7_Bkv8Z6prEYRZI-5q2AqFlm25vsb0,1216
40
+ layrz_sdk/entities/formatting/__init__.py,sha256=cv-_epSLW_9RmUhs18caMo7XhvU12q-JvWPooYUNpJE,66
41
+ layrz_sdk/entities/formatting/text_align.py,sha256=1kT8PE1WUjKhilgsQPU5XS5sSt76onWwfNNeKPvPv9E,501
42
+ layrz_sdk/entities/general/__init__.py,sha256=qQSs86NUtxT3vC-gdEU05rBmKWRRQmOJcZBDaQgSUcw,218
43
+ layrz_sdk/entities/general/asset.py,sha256=wcqI-ogJEdhIrtDMavNgOTF3kep2Ipw7H95zFfq3lbw,1949
44
+ layrz_sdk/entities/general/asset_operation_mode.py,sha256=LOAReg3qpx_xOGgBOZpHSZCrYxX9ssSUeWGib0n-97g,621
45
+ layrz_sdk/entities/general/custom_field.py,sha256=6Bk9IWOzxcmo1kCTu3_0eg16cDyqZ0a_gAVCBtdxjjs,638
46
+ layrz_sdk/entities/general/device.py,sha256=b15Oczfx7zXvR4T88Fh4EmUAB2WrYXgABmFBBsAE2tc,1013
47
+ layrz_sdk/entities/general/sensor.py,sha256=N9smg5FmRQYuF1oGUxw9diJ4vVbFRg89v1h67Rk9RQM,647
48
+ layrz_sdk/entities/general/user.py,sha256=cE-oasv3yObNdCAvb6w1Yoo-0U3_lhE6s12t4FY5Mwg,559
49
+ layrz_sdk/entities/repcom/__init__.py,sha256=vXRvt0pzBIMeEGXNj8SEzejzMJg4t9uAakMMumKpg4U,61
50
+ layrz_sdk/entities/repcom/transaction.py,sha256=WKKqaDqBU-4ZNRXNZjnenh3E5hdlNAqwyLO1ujQsbMw,1466
51
+ layrz_sdk/entities/reports/__init__.py,sha256=KP9sBh3El1S9Pg14-ZLy36jSOTN_pa1VUFDNrPPwv0I,249
52
+ layrz_sdk/entities/reports/col.py,sha256=BLSCcTOLcdEdiTmc1tJHbvaEogGcVVz_tFWKAaRzngs,2047
53
+ layrz_sdk/entities/reports/format.py,sha256=T51KGQ0hKtqZOf5h2PeFfaqBOPxnRWz3AwVoMPohyNc,450
54
+ layrz_sdk/entities/reports/header.py,sha256=taQEl1gDF8hlaUHZRiwcZFRTDN9p1uZ5ePAFLZ41j8E,1471
55
+ layrz_sdk/entities/reports/page.py,sha256=4QPKTkEb_GTmTYD7XzSGOGsFdCZsvKVJqeYJvuq4n_0,1631
56
+ layrz_sdk/entities/reports/report.py,sha256=OynzeCEgLdsR5IcstpQnZSldIulN1LA5LBeKcipXKcY,8424
57
+ layrz_sdk/entities/reports/row.py,sha256=nGPLcBbLo_-owK43LsLNiitpOPUcfjzCFFe4mFTS_lg,918
58
+ layrz_sdk/entities/telemetry/__init__.py,sha256=6QVG__X1EhA5gPGa2jPyPkKznp_Lp3Y_-7Grswyp3kk,87
59
+ layrz_sdk/entities/telemetry/message.py,sha256=x0uAkbkQtvutAj8UHtjRgsFTcOrosZUHr4d4AHBN0Iw,829
60
+ layrz_sdk/entities/telemetry/position.py,sha256=sg7k6Etyu1ZtuFQfmfZq00_7WxRMmLgtcdPvdoXsbXU,1367
61
+ layrz_sdk/helpers/__init__.py,sha256=v3WbYVr9ygyDtxEIi59kGVXuirNswhhkG4BQv5iESRo,72
62
+ layrz_sdk/helpers/color.py,sha256=gfMuO627E7zdLXcK0WAgEwzmQOMrIdLFFv3ktI-UYbE,1129
63
+ layrz_sdk/lcl/__init__.py,sha256=nmfOnbot49pvfR8xyqvs0tg7ZwzxunhWJbwA805w20M,67
64
+ layrz_sdk/lcl/core.py,sha256=yG25WLCq_nnPiTgaCFCTteNL1-_mYKLc0VAwLT0D_6Q,23165
65
+ layrz_sdk-3.0.11.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
66
+ layrz_sdk-3.0.11.dist-info/METADATA,sha256=EBaFtu7P0izMtU3u6I-3BgKkhEavwBX_GinrqE1FAp0,1700
67
+ layrz_sdk-3.0.11.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
68
+ layrz_sdk-3.0.11.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
69
+ layrz_sdk-3.0.11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5