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 +154 -23
- {layrz_sdk-3.0.0.dist-info → layrz_sdk-3.0.2.dist-info}/METADATA +1 -1
- {layrz_sdk-3.0.0.dist-info → layrz_sdk-3.0.2.dist-info}/RECORD +6 -6
- {layrz_sdk-3.0.0.dist-info → layrz_sdk-3.0.2.dist-info}/LICENSE +0 -0
- {layrz_sdk-3.0.0.dist-info → layrz_sdk-3.0.2.dist-info}/WHEEL +0 -0
- {layrz_sdk-3.0.0.dist-info → layrz_sdk-3.0.2.dist-info}/top_level.txt +0 -0
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
451
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
|
614
|
-
return
|
|
714
|
+
if args[0] is None:
|
|
715
|
+
return None
|
|
615
716
|
|
|
616
|
-
if
|
|
617
|
-
return DIFFERENT_TYPES.format(arg1='
|
|
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
|
|
621
|
-
return
|
|
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.
|
|
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=
|
|
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.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|