layrz-sdk 3.0.0__py3-none-any.whl → 3.0.2__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/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
 
@@ -128,6 +129,9 @@ class LclCore:
128
129
  if len(args) > 2:
129
130
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
130
131
 
132
+ if args[0] is None:
133
+ return None
134
+
131
135
  if len(args) > 1:
132
136
  return self._payload.get(args[0], args[1])
133
137
  return self._payload.get(args[0], None)
@@ -146,6 +150,9 @@ class LclCore:
146
150
  if len(args) > 2:
147
151
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
148
152
 
153
+ if args[0] is None:
154
+ return None
155
+
149
156
  if len(args) > 1:
150
157
  return self._previous_sensors.get(args[0], args[1])
151
158
  return self._previous_sensors.get(args[0], None)
@@ -158,6 +165,9 @@ class LclCore:
158
165
  if len(args) > 2:
159
166
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
160
167
 
168
+ if args[0] is None:
169
+ return None
170
+
161
171
  if len(args) > 1:
162
172
  return self._sensors.get(args[0], args[1])
163
173
  return self._sensors.get(args[0], None)
@@ -183,7 +193,7 @@ class LclCore:
183
193
  return None
184
194
 
185
195
  if not isinstance(args[0], type(args[1])):
186
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
196
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
187
197
  return args[0] == args[1]
188
198
 
189
199
  def OR_OPERATOR(self, *args: list[Any]) -> bool:
@@ -206,6 +216,7 @@ class LclCore:
206
216
  for val in args:
207
217
  if val is None:
208
218
  return None
219
+
209
220
  if is_first:
210
221
  is_first = False
211
222
  result = val
@@ -220,7 +231,8 @@ class LclCore:
220
231
 
221
232
  for num in args:
222
233
  if num is None:
223
- continue
234
+ return None
235
+
224
236
  try:
225
237
  result += float(num)
226
238
  except Exception: # pylint: disable=broad-except
@@ -235,7 +247,8 @@ class LclCore:
235
247
 
236
248
  for num in args:
237
249
  if num is None:
238
- continue
250
+ return None
251
+
239
252
  try:
240
253
  if is_first:
241
254
  result = float(num)
@@ -254,7 +267,8 @@ class LclCore:
254
267
 
255
268
  for num in args:
256
269
  if num is None:
257
- continue
270
+ return None
271
+
258
272
  try:
259
273
  if is_first:
260
274
  is_first = False
@@ -273,7 +287,8 @@ class LclCore:
273
287
 
274
288
  for num in args:
275
289
  if num is None:
276
- continue
290
+ return None
291
+
277
292
  try:
278
293
  if is_first:
279
294
  is_first = False
@@ -289,8 +304,10 @@ class LclCore:
289
304
  """ TO_BOOL Function """
290
305
  if len(args) > 1:
291
306
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
307
+
292
308
  if args[0] is None:
293
309
  return None
310
+
294
311
  return bool(args[0])
295
312
 
296
313
  def TO_STR(self, *args: list[Any]) -> str | None:
@@ -300,22 +317,30 @@ class LclCore:
300
317
 
301
318
  if args[0] is None:
302
319
  return None
320
+
303
321
  return str(args[0])
304
322
 
305
323
  def TO_INT(self, *args: list[Any]) -> str | None | int:
306
324
  """ TO_INT Function """
307
325
  if len(args) > 1:
308
326
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
327
+
309
328
  if args[0] is None:
310
329
  return None
330
+
311
331
  return int(args[0])
312
332
 
313
333
  def CEIL(self, *args: list[Any]) -> str | None | int:
314
334
  """ CEIL Function """
315
335
  if len(args) > 1:
316
336
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
337
+
317
338
  if args[0] is None:
318
339
  return None
340
+
341
+ if not isinstance(args[0], (int, float)):
342
+ return f'Invalid arguments - must be real number, not {type(args[0]).__name__}'
343
+
319
344
  import math
320
345
  return math.ceil(args[0])
321
346
 
@@ -323,8 +348,13 @@ class LclCore:
323
348
  """ FLOOR Function """
324
349
  if len(args) > 1:
325
350
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
351
+
326
352
  if args[0] is None:
327
353
  return None
354
+
355
+ if not isinstance(args[0], (int, float)):
356
+ return f'Invalid arguments - must be real number, not {type(args[0]).__name__}'
357
+
328
358
  import math
329
359
  return math.floor(args[0])
330
360
 
@@ -332,16 +362,23 @@ class LclCore:
332
362
  """ ROUND Function """
333
363
  if len(args) > 1:
334
364
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
365
+
335
366
  if args[0] is None:
336
367
  return None
368
+
369
+ if not isinstance(args[0], (int, float)):
370
+ return f'Invalid arguments - must be real number, not {type(args[0]).__name__}'
371
+
337
372
  return round(args[0])
338
373
 
339
374
  def SQRT(self, *args: list[Any]) -> str | None | float:
340
375
  """ SQRT Function """
341
376
  if len(args) > 1:
342
377
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
378
+
343
379
  if args[0] is None:
344
380
  return None
381
+
345
382
  import math
346
383
  return math.sqrt(args[0])
347
384
 
@@ -350,6 +387,7 @@ class LclCore:
350
387
  for val in args:
351
388
  if val is None:
352
389
  return None
390
+
353
391
  return ''.join([str(val) for val in args])
354
392
 
355
393
  def RANDOM(self, *args: list[Any]) -> float | str:
@@ -359,6 +397,9 @@ class LclCore:
359
397
  if len(args) < 2:
360
398
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
361
399
 
400
+ if args[0] is None or args[1] is None:
401
+ return None
402
+
362
403
  import random
363
404
  return random.random() * (float(args[1]) - float(args[0])) + float(args[0])
364
405
 
@@ -367,6 +408,9 @@ class LclCore:
367
408
  if len(args) != 2:
368
409
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
369
410
 
411
+ if args[0] is None or args[1] is None:
412
+ return None
413
+
370
414
  import random
371
415
  return random.randint(int(args[0]), int(args[1]))
372
416
 
@@ -381,7 +425,7 @@ class LclCore:
381
425
  return None
382
426
 
383
427
  if not isinstance(args[0], type(args[1])):
384
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
428
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
385
429
  return args[0] >= args[1]
386
430
 
387
431
  def GREATER_THAN(self, *args: list[Any]) -> str | None | bool:
@@ -395,7 +439,7 @@ class LclCore:
395
439
  return None
396
440
 
397
441
  if not isinstance(args[0], type(args[1])):
398
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
442
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
399
443
  return args[0] > args[1]
400
444
 
401
445
  def LESS_THAN_OR_EQUALS_TO(self, *args: list[Any]) -> str | None | bool:
@@ -409,7 +453,7 @@ class LclCore:
409
453
  return None
410
454
 
411
455
  if not isinstance(args[0], type(args[1])):
412
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
456
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
413
457
  return args[0] <= args[1]
414
458
 
415
459
  def LESS_THAN(self, *args: list[Any]) -> str | None | bool:
@@ -423,7 +467,7 @@ class LclCore:
423
467
  return None
424
468
 
425
469
  if not isinstance(args[0], type(args[1])):
426
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
470
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
427
471
  return args[0] < args[1]
428
472
 
429
473
  def DIFFERENT(self, *args: list[Any]) -> str | None | bool:
@@ -437,7 +481,7 @@ class LclCore:
437
481
  return None
438
482
 
439
483
  if not isinstance(args[0], type(args[1])):
440
- return DIFFERENT_TYPES.format(arg1=type(args[0]), arg2=type(args[1]))
484
+ return DIFFERENT_TYPES.format(arg1=type(args[0]).__name__, arg2=type(args[1]).__name__)
441
485
  return args[0] != args[1]
442
486
 
443
487
  def HEX_TO_STR(self, *args: list[Any]) -> str | None:
@@ -447,46 +491,74 @@ class LclCore:
447
491
 
448
492
  if args[0] is None:
449
493
  return None
450
- byte_array = bytes.fromhex(args[0])
451
- return byte_array.decode('ASCII')
494
+
495
+ hexa = args[0]
496
+ if hexa.startswith('0x'):
497
+ hexa = hexa[2:]
498
+
499
+ try:
500
+ byte_array = bytes.fromhex(hexa)
501
+ return byte_array.decode('ASCII')
502
+ except Exception: # pylint: disable=broad-except
503
+ return 'Invalid hex string'
452
504
 
453
505
  def STR_TO_HEX(self, *args: list[Any]) -> str | None:
454
506
  """ STR_TO_HEX Function """
455
507
  if len(args) > 1:
456
508
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
509
+
457
510
  if args[0] is None:
458
511
  return None
512
+
459
513
  return str(args[0]).encode('ASCII').hex()
460
514
 
461
515
  def HEX_TO_INT(self, *args: list[Any]) -> str | None | int:
462
516
  """ HEX_TO_INT Function """
463
517
  if len(args) > 1:
464
518
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
519
+
465
520
  if args[0] is None:
466
521
  return None
467
- return int(int(args[0], 16))
522
+
523
+ try:
524
+ return int(int(args[0], 16))
525
+ except Exception: # pylint: disable=broad-except
526
+ return 'Invalid hex string'
468
527
 
469
528
  def INT_TO_HEX(self, *args: list[Any]) -> str | None:
470
529
  """ INT_TO_HEX Function """
471
530
  if len(args) > 1:
472
531
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
532
+
473
533
  if args[0] is None:
474
534
  return None
475
- return hex(int(args[0]))[2:]
535
+
536
+ try:
537
+ return hex(int(args[0]))[2:]
538
+ except Exception: # pylint: disable=broad-except
539
+ return 'Invalid int value'
476
540
 
477
541
  def TO_FLOAT(self, *args: list[Any]) -> str | None | float:
478
542
  """ TO_FLOAT Function """
479
543
  if len(args) > 1:
480
544
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
545
+
481
546
  if args[0] is None:
482
547
  return None
483
- return float(args[0])
548
+
549
+ try:
550
+ return float(args[0])
551
+ except Exception: # pylint: disable=broad-except
552
+ return f'Invalid arguments - must be real number, not {type(args[0]).__name__}'
484
553
 
485
554
  def IS_PARAMETER_PRESENT(self, *args: list[Any]) -> str | bool:
486
555
  """ IS_PARAMETER_PRESENT Function """
487
556
  if len(args) > 1:
488
557
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
489
558
 
559
+ if args[0] is None:
560
+ return None
561
+
490
562
  return args[0] in self._payload
491
563
 
492
564
  def IS_SENSOR_PRESENT(self, *args: list[Any]) -> str | bool:
@@ -494,6 +566,9 @@ class LclCore:
494
566
  if len(args) > 1:
495
567
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
496
568
 
569
+ if args[0] is None:
570
+ return None
571
+
497
572
  return args[0] in self._sensors
498
573
 
499
574
  def INSIDE_RANGE(self, *args: list[Any]) -> str | None | bool:
@@ -503,8 +578,13 @@ class LclCore:
503
578
 
504
579
  if args[0] is None or args[1] is None or args[2] is None:
505
580
  return None
581
+
506
582
  if not isinstance(args[0], type(args[1])):
507
- return DIFFERENT_TYPES_RANGES.format(arg1=type(args[0]), arg2=type(args[1]), arg3=type(args[2]))
583
+ return DIFFERENT_TYPES_RANGES.format(
584
+ arg1=type(args[0]).__name__,
585
+ arg2=type(args[1]).__name__,
586
+ arg3=type(args[2]).__name__,
587
+ )
508
588
 
509
589
  return args[1] <= args[0] <= args[2]
510
590
 
@@ -515,8 +595,13 @@ class LclCore:
515
595
 
516
596
  if args[0] is None or args[1] is None or args[2] is None:
517
597
  return None
598
+
518
599
  if not isinstance(args[0], type(args[1])):
519
- return DIFFERENT_TYPES_RANGES.format(arg1=type(args[0]), arg2=type(args[1]), arg3=type(args[2]))
600
+ return DIFFERENT_TYPES_RANGES.format(
601
+ arg1=type(args[0]).__name__,
602
+ arg2=type(args[1]).__name__,
603
+ arg3=type(args[2]).__name__,
604
+ )
520
605
 
521
606
  return not args[1] <= args[0] <= args[2]
522
607
 
@@ -524,6 +609,7 @@ class LclCore:
524
609
  """ GET_TIME_DIFFERENCE Function """
525
610
  if len(args) > 0:
526
611
  return INVALID_NUMBER_OF_PARAMS.format(expected=0, received=len(args))
612
+
527
613
  return self._asset_constants.get('timeElapsed', 0)
528
614
 
529
615
  def IF(self, *args: list[Any]) -> Any:
@@ -531,6 +617,9 @@ class LclCore:
531
617
  if len(args) != 3:
532
618
  return INVALID_NUMBER_OF_PARAMS.format(expected=3, received=len(args))
533
619
 
620
+ if args[0] is None:
621
+ return None
622
+
534
623
  return args[1] if args[0] else args[2]
535
624
 
536
625
  def NOW(self, *args: list[Any]) -> float: # pylint: disable=unused-argument
@@ -566,6 +655,9 @@ class LclCore:
566
655
  if len(args) != 1:
567
656
  return INVALID_NUMBER_OF_PARAMS.format(expected=1, received=len(args))
568
657
 
658
+ if args[0] is None:
659
+ return None
660
+
569
661
  return not args[0]
570
662
 
571
663
  def CONTAINS(self, *args: list[Any]) -> str | bool:
@@ -573,6 +665,9 @@ class LclCore:
573
665
  if len(args) != 2:
574
666
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
575
667
 
668
+ if args[0] is None or args[1] is None:
669
+ return None
670
+
576
671
  return str(args[0]) in str(args[1])
577
672
 
578
673
  def STARTS_WITH(self, *args: list[Any]) -> str | bool:
@@ -580,6 +675,9 @@ class LclCore:
580
675
  if len(args) != 2:
581
676
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
582
677
 
678
+ if args[0] is None or args[1] is None:
679
+ return None
680
+
583
681
  return str(args[1]).startswith(str(args[0]))
584
682
 
585
683
  def ENDS_WITH(self, *args: list[Any]) -> str | bool:
@@ -587,6 +685,9 @@ class LclCore:
587
685
  if len(args) != 2:
588
686
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
589
687
 
688
+ if args[0] is None or args[1] is None:
689
+ return None
690
+
590
691
  return str(args[1]).endswith(str(args[0]))
591
692
 
592
693
  def PRIMARY_DEVICE(self, *args: list[Any]) -> str:
@@ -610,15 +711,25 @@ class LclCore:
610
711
  received=len(args),
611
712
  )
612
713
 
613
- if args[0] is None or not isinstance(args[0], str):
614
- return DIFFERENT_TYPES.format(arg1='str', arg2=type(args[0]))
714
+ if args[0] is None:
715
+ return None
615
716
 
616
- if args[1] is None or not isinstance(args[1], int):
617
- return DIFFERENT_TYPES.format(arg1='int', arg2=type(args[1]))
717
+ if not isinstance(args[0], str):
718
+ return DIFFERENT_TYPES.format(arg1='str', arg2=type(args[0]).__name__)
719
+
720
+ if args[1] is None:
721
+ return None
722
+
723
+ if not isinstance(args[1], int):
724
+ return DIFFERENT_TYPES.format(arg1='int', arg2=type(args[1]).__name__)
618
725
 
619
726
  if len(args) == 3:
620
- if args[2] is None or not isinstance(args[2], int):
621
- return DIFFERENT_TYPES.format(arg1='str', arg2=type(args[2]))
727
+ if args[2] is None:
728
+ return None
729
+
730
+ if not isinstance(args[2], int):
731
+ return DIFFERENT_TYPES.format(arg1='str', arg2=type(args[2]).__name__)
732
+
622
733
  return args[0][args[1]:args[2]]
623
734
  return args[0][args[1]:]
624
735
 
@@ -626,12 +737,22 @@ class LclCore:
626
737
  """ Convert UNIX timestamp date (args[0]) to format (args[1]) string """
627
738
  if len(args) < 2:
628
739
  return INVALID_NUMBER_OF_PARAMS.format(expected=2, received=len(args))
740
+
741
+ if args[0] is None:
742
+ return None
743
+
744
+ if args[1] is None:
745
+ return None
746
+
629
747
  import zoneinfo
630
748
  from datetime import datetime
631
749
 
632
750
  tz = zoneinfo.ZoneInfo('UTC')
633
751
 
634
752
  if len(args) > 2:
753
+ if args[2] is None:
754
+ return None
755
+
635
756
  try:
636
757
  tz = zoneinfo.ZoneInfo(args[2])
637
758
  except zoneinfo.ZoneInfoNotFoundError:
@@ -641,3 +762,13 @@ class LclCore:
641
762
  .fromtimestamp(int(args[0]), tz=zoneinfo.ZoneInfo('UTC'))\
642
763
  .astimezone(tz)\
643
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.0
3
+ Version: 3.0.2
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>
@@ -59,9 +59,9 @@ layrz_sdk/entities/telemetry/position.py,sha256=_XIjDvPae0Jmcc6ynwHar0-UvrIRkFh0
59
59
  layrz_sdk/helpers/__init__.py,sha256=v3WbYVr9ygyDtxEIi59kGVXuirNswhhkG4BQv5iESRo,72
60
60
  layrz_sdk/helpers/color.py,sha256=BoC61kyGrdplz4qB-MA9xpyEOKuiV7dPYhmAba-rk1M,1102
61
61
  layrz_sdk/lcl/__init__.py,sha256=nmfOnbot49pvfR8xyqvs0tg7ZwzxunhWJbwA805w20M,67
62
- layrz_sdk/lcl/core.py,sha256=VwYQeN_myXjOHsBwSOQPuotzAdwcVgzpin78KUrV98I,20608
63
- layrz_sdk-3.0.0.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
64
- layrz_sdk-3.0.0.dist-info/METADATA,sha256=4da7zqZUO4xZ0b4gu6NW1g7NgHDK-JD7qkeyz72sZRs,1458
65
- layrz_sdk-3.0.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
66
- layrz_sdk-3.0.0.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
67
- layrz_sdk-3.0.0.dist-info/RECORD,,
62
+ layrz_sdk/lcl/core.py,sha256=OVy4LCDlX9d3GsP1hzZkurqAsBSEx-Q5A15Mb7J67Qs,22987
63
+ layrz_sdk-3.0.2.dist-info/LICENSE,sha256=d5ZrU--lIPER7QByXDKcrtOTOMk1JvN_9FdYDuoWi7Y,1057
64
+ layrz_sdk-3.0.2.dist-info/METADATA,sha256=DasBHKo1HanRjHtHcjBL0TVH4Qg7BxoWavsXu18TPoE,1458
65
+ layrz_sdk-3.0.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
66
+ layrz_sdk-3.0.2.dist-info/top_level.txt,sha256=yUTMMzfdZ0HDWQH5TaSlFM4xtwmP1fSGxmlL1dmu4l4,10
67
+ layrz_sdk-3.0.2.dist-info/RECORD,,