@enspirit/elo 0.9.7 → 0.9.8

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.
@@ -6,7 +6,7 @@
6
6
  * when needed, wrapped in an IIFE for encapsulation.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RUBY_HELPERS = exports.RUBY_HELPER_DEPS = exports.JS_HELPERS = exports.JS_HELPER_DEPS = void 0;
9
+ exports.PY_HELPERS = exports.PY_HELPER_DEPS = exports.RUBY_HELPERS = exports.RUBY_HELPER_DEPS = exports.JS_HELPERS = exports.JS_HELPER_DEPS = void 0;
10
10
  /**
11
11
  * Individual JavaScript helper function snippets.
12
12
  * Each helper is a standalone function that can be included in the output.
@@ -370,4 +370,406 @@ end`,
370
370
  v.to_s
371
371
  end`,
372
372
  };
373
+ /**
374
+ * Python helper function snippets.
375
+ * These are embedded in compiled Python output when needed.
376
+ * Special entries starting with _ are import statements, not functions.
377
+ */
378
+ exports.PY_HELPER_DEPS = {
379
+ kEq: [],
380
+ kNeq: ['kEq'],
381
+ kFetch: [],
382
+ kFetchObject: ['kFetch'],
383
+ kFetchArray: ['kFetch'],
384
+ kDeepMerge: [],
385
+ kPatch: [],
386
+ kTypeOf: [],
387
+ kAssert: [],
388
+ kFail: [],
389
+ kAssertFails: [],
390
+ kAdd: [],
391
+ kSub: [],
392
+ kMul: [],
393
+ kDiv: [],
394
+ kMod: [],
395
+ kPow: [],
396
+ kNeg: [],
397
+ kBool: [],
398
+ kString: ['_elo_dur_to_iso'],
399
+ kParseDate: ['_elo_dt_helpers'],
400
+ kParseDatetime: ['_elo_dt_helpers'],
401
+ _elo_dt_helpers: ['_import_datetime', '_elo_duration'],
402
+ _elo_duration: ['_import_re'],
403
+ // Parser helpers
404
+ pAny: ['pOk'],
405
+ pNull: ['pOk', 'pFail'],
406
+ pString: ['pOk', 'pFail'],
407
+ pInt: ['pOk', 'pFail'],
408
+ pFloat: ['pOk', 'pFail'],
409
+ pBool: ['pOk', 'pFail'],
410
+ pDatetime: ['pOk', 'pFail', 'kParseDatetime'],
411
+ pSchema: ['pOk', 'pFail'],
412
+ pArray: ['pOk', 'pFail'],
413
+ pUnion: ['pFail'],
414
+ pSubtype: ['pOk', 'pFail'],
415
+ };
416
+ exports.PY_HELPERS = {
417
+ _import_math: `import math`,
418
+ _import_functools: `import functools`,
419
+ _import_datetime: `import datetime as _dt`,
420
+ _import_re: `import re`,
421
+ _elo_duration: `class EloDuration:
422
+ __slots__ = ('_ms',)
423
+ def __init__(self, ms):
424
+ self._ms = ms
425
+ @staticmethod
426
+ def from_iso(s):
427
+ m = re.match(r'^P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$', s)
428
+ if not m: raise Exception('Invalid ISO duration: ' + s)
429
+ yrs = int(m.group(1) or 0)
430
+ mos = int(m.group(2) or 0)
431
+ wks = int(m.group(3) or 0)
432
+ dys = int(m.group(4) or 0)
433
+ hrs = int(m.group(5) or 0)
434
+ mns = int(m.group(6) or 0)
435
+ scs = float(m.group(7) or 0)
436
+ total_days = yrs * 365 + mos * 30 + wks * 7 + dys
437
+ return EloDuration(((total_days * 24 + hrs) * 60 + mns) * 60000 + scs * 1000)
438
+ def to_ms(self): return self._ms
439
+ def plus(self, other):
440
+ if isinstance(other, EloDuration): return EloDuration(self._ms + other._ms)
441
+ if isinstance(other, _dt.datetime): return _elo_dt_plus(other, self)
442
+ raise Exception('Cannot add duration to ' + type(other).__name__)
443
+ def minus(self, other):
444
+ if isinstance(other, EloDuration): return EloDuration(self._ms - other._ms)
445
+ raise Exception('Cannot subtract ' + type(other).__name__ + ' from duration')
446
+ def scale(self, n): return EloDuration(self._ms * n)
447
+ def divide(self, n): return EloDuration(self._ms / n)
448
+ def negate(self): return EloDuration(-self._ms)
449
+ def __eq__(self, other): return isinstance(other, EloDuration) and self._ms == other._ms
450
+ def __ne__(self, other): return not self.__eq__(other)
451
+ def __lt__(self, other): return self._ms < other._ms
452
+ def __le__(self, other): return self._ms <= other._ms
453
+ def __gt__(self, other): return self._ms > other._ms
454
+ def __ge__(self, other): return self._ms >= other._ms
455
+ def __repr__(self): return f'EloDuration({self._ms}ms)'
456
+ def in_seconds(self): return self._ms / 1000.0
457
+ def in_minutes(self): return self._ms / 60000.0
458
+ def in_hours(self): return self._ms / 3600000.0
459
+ def in_days(self): return self._ms / 86400000.0
460
+ def in_weeks(self): return self._ms / 604800000.0
461
+ def in_months(self): return self._ms / (30.4375 * 86400000.0)
462
+ def in_quarters(self): return self._ms / (91.3125 * 86400000.0)
463
+ def in_years(self): return self._ms / (365.25 * 86400000.0)`,
464
+ _elo_dt_helpers: `def _elo_dt_plus(dt, dur):
465
+ from datetime import timedelta
466
+ return dt + timedelta(milliseconds=dur.to_ms())
467
+ def _elo_dt_minus_dur(dt, dur):
468
+ from datetime import timedelta
469
+ return dt - timedelta(milliseconds=dur.to_ms())
470
+ def _elo_dt_diff(a, b):
471
+ diff = a - b
472
+ return EloDuration(diff.total_seconds() * 1000)
473
+ def _elo_dt(y, mo, d, h=0, mi=0, s=0):
474
+ return _dt.datetime(y, mo, d, h, mi, s)
475
+ def _elo_start_of_day(dt):
476
+ return dt.replace(hour=0, minute=0, second=0, microsecond=0)
477
+ def _elo_end_of_day(dt):
478
+ return dt.replace(hour=23, minute=59, second=59, microsecond=999000)
479
+ def _elo_start_of_week(dt):
480
+ d = dt - _dt.timedelta(days=dt.weekday())
481
+ return d.replace(hour=0, minute=0, second=0, microsecond=0)
482
+ def _elo_end_of_week(dt):
483
+ d = dt + _dt.timedelta(days=6 - dt.weekday())
484
+ return d.replace(hour=23, minute=59, second=59, microsecond=999000)
485
+ def _elo_start_of_month(dt):
486
+ return dt.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
487
+ def _elo_end_of_month(dt):
488
+ import calendar
489
+ last_day = calendar.monthrange(dt.year, dt.month)[1]
490
+ return dt.replace(day=last_day, hour=23, minute=59, second=59, microsecond=999000)
491
+ def _elo_start_of_quarter(dt):
492
+ qm = ((dt.month - 1) // 3) * 3 + 1
493
+ return dt.replace(month=qm, day=1, hour=0, minute=0, second=0, microsecond=0)
494
+ def _elo_end_of_quarter(dt):
495
+ import calendar
496
+ qm = ((dt.month - 1) // 3) * 3 + 3
497
+ last_day = calendar.monthrange(dt.year, qm)[1]
498
+ return dt.replace(month=qm, day=last_day, hour=23, minute=59, second=59, microsecond=999000)
499
+ def _elo_start_of_year(dt):
500
+ return dt.replace(month=1, day=1, hour=0, minute=0, second=0, microsecond=0)
501
+ def _elo_end_of_year(dt):
502
+ return dt.replace(month=12, day=31, hour=23, minute=59, second=59, microsecond=999000)`,
503
+ kAssert: `def kAssert(cond, msg="Assertion failed"):
504
+ if not cond: raise Exception(msg)
505
+ return True`,
506
+ kFail: `def kFail(msg):
507
+ raise Exception(msg)`,
508
+ kAssertFails: `def kAssertFails(fn):
509
+ try:
510
+ fn()
511
+ raise Exception("Expected function to fail but it did not")
512
+ except Exception as e:
513
+ if str(e) == "Expected function to fail but it did not": raise
514
+ return True`,
515
+ kEq: `def kEq(l, r):
516
+ if isinstance(l, EloDuration) and isinstance(r, EloDuration): return l == r
517
+ if isinstance(l, _dt.datetime) and isinstance(r, _dt.datetime): return l == r
518
+ if isinstance(l, list) and isinstance(r, list):
519
+ if len(l) != len(r): return False
520
+ return all(kEq(a, b) for a, b in zip(l, r))
521
+ if isinstance(l, dict) and isinstance(r, dict):
522
+ if set(l.keys()) != set(r.keys()): return False
523
+ return all(kEq(l[k], r[k]) for k in l)
524
+ return l == r`,
525
+ kNeq: `def kNeq(l, r):
526
+ return not kEq(l, r)`,
527
+ kTypeOf: `def kTypeOf(v):
528
+ if v is None: return 'Null'
529
+ if isinstance(v, EloDuration): return 'Duration'
530
+ if isinstance(v, _dt.datetime): return 'DateTime'
531
+ if isinstance(v, bool): return 'Bool'
532
+ if isinstance(v, int): return 'Int'
533
+ if isinstance(v, float): return 'Float'
534
+ if isinstance(v, str): return 'String'
535
+ if isinstance(v, list): return 'List'
536
+ if isinstance(v, dict): return 'Tuple'
537
+ if callable(v): return 'Function'
538
+ return 'Unknown'`,
539
+ kFetch: `def kFetch(data, path):
540
+ current = data
541
+ for segment in path:
542
+ if current is None: return None
543
+ if isinstance(segment, int):
544
+ if not isinstance(current, list): return None
545
+ if segment >= len(current): return None
546
+ current = current[segment]
547
+ else:
548
+ if not isinstance(current, dict): return None
549
+ current = current.get(segment)
550
+ return current`,
551
+ kFetchObject: `def kFetchObject(data, paths):
552
+ return {key: kFetch(data, paths[key]) for key in paths}`,
553
+ kFetchArray: `def kFetchArray(data, paths):
554
+ return [kFetch(data, p) for p in paths]`,
555
+ kPatch: `def kPatch(data, path, value):
556
+ if len(path) == 0: return value
557
+ seg = path[0]
558
+ rest = path[1:]
559
+ next_default = None if len(rest) == 0 else ([] if isinstance(rest[0], int) else {})
560
+ if isinstance(seg, int):
561
+ if data is not None and not isinstance(data, list): raise Exception('cannot patch array index on non-array')
562
+ arr = list(data) if isinstance(data, list) else []
563
+ while len(arr) <= seg: arr.append(None)
564
+ existing = arr[seg]
565
+ arr[seg] = kPatch(next_default if existing is None else existing, rest, value)
566
+ return arr
567
+ else:
568
+ if isinstance(data, list): raise Exception('cannot patch object key on array')
569
+ obj = dict(data) if isinstance(data, dict) else {}
570
+ existing = obj.get(seg)
571
+ obj[seg] = kPatch(next_default if existing is None else existing, rest, value)
572
+ return obj`,
573
+ kDeepMerge: `def kDeepMerge(a, b):
574
+ if not isinstance(a, dict) or not isinstance(b, dict): return b
575
+ result = dict(a)
576
+ for key in b:
577
+ result[key] = kDeepMerge(a.get(key), b[key])
578
+ return result`,
579
+ kFirst: `def kFirst(arr):
580
+ return arr[0] if len(arr) > 0 else None`,
581
+ kLast: `def kLast(arr):
582
+ return arr[-1] if len(arr) > 0 else None`,
583
+ kAt: `def kAt(arr, idx):
584
+ if idx < 0 or idx >= len(arr): return None
585
+ return arr[idx]`,
586
+ kIndexOf: `def kIndexOf(s, sub):
587
+ idx = s.find(sub)
588
+ return None if idx == -1 else idx`,
589
+ kSplit: `def kSplit(s, sep):
590
+ if s == '': return []
591
+ return s.split(sep)`,
592
+ kData: `def kData(v):
593
+ import json
594
+ if v is None: return None
595
+ if isinstance(v, str):
596
+ try: return json.loads(v)
597
+ except: raise Exception('invalid JSON: ' + repr(v))
598
+ return v`,
599
+ kString: `def kString(v):
600
+ if v is None: return 'null'
601
+ if isinstance(v, bool): return 'true' if v else 'false'
602
+ if isinstance(v, int): return str(v)
603
+ if isinstance(v, float): return str(v)
604
+ if isinstance(v, str): return "'" + v.replace("\\\\", "\\\\\\\\").replace("'", "\\\\'") + "'"
605
+ if isinstance(v, EloDuration): return _elo_dur_to_iso(v)
606
+ if isinstance(v, _dt.datetime):
607
+ if v.hour == 0 and v.minute == 0 and v.second == 0: return 'D' + v.strftime('%Y-%m-%d')
608
+ return 'D' + v.strftime('%Y-%m-%dT%H:%M:%S')
609
+ if isinstance(v, list): return '[' + ', '.join(kString(e) for e in v) + ']'
610
+ if isinstance(v, dict): return '{' + ', '.join(k + ': ' + kString(v[k]) for k in v) + '}'
611
+ return str(v)`,
612
+ _elo_dur_to_iso: `def _elo_dur_to_iso(d):
613
+ ms = d.to_ms()
614
+ if ms == 0: return 'PT0S'
615
+ neg = ms < 0
616
+ ms = abs(ms)
617
+ secs = ms / 1000
618
+ days = int(secs // 86400); secs -= days * 86400
619
+ hours = int(secs // 3600); secs -= hours * 3600
620
+ mins = int(secs // 60); secs -= mins * 60
621
+ s = '-P' if neg else 'P'
622
+ if days: s += str(days) + 'D'
623
+ if hours or mins or secs: s += 'T'
624
+ if hours: s += str(hours) + 'H'
625
+ if mins: s += str(mins) + 'M'
626
+ if secs: s += str(int(secs) if secs == int(secs) else secs) + 'S'
627
+ return s`,
628
+ kAdd: `def kAdd(l, r):
629
+ if isinstance(l, _dt.datetime) and isinstance(r, EloDuration): return _elo_dt_plus(l, r)
630
+ if isinstance(l, EloDuration) and isinstance(r, _dt.datetime): return _elo_dt_plus(r, l)
631
+ if isinstance(l, EloDuration) and isinstance(r, EloDuration): return l.plus(r)
632
+ return l + r`,
633
+ kSub: `def kSub(l, r):
634
+ if isinstance(l, _dt.datetime) and isinstance(r, EloDuration): return _elo_dt_minus_dur(l, r)
635
+ if isinstance(l, _dt.datetime) and isinstance(r, _dt.datetime): return _elo_dt_diff(l, r)
636
+ if isinstance(l, EloDuration) and isinstance(r, EloDuration): return l.minus(r)
637
+ return l - r`,
638
+ kMul: `def kMul(l, r):
639
+ if isinstance(l, EloDuration): return l.scale(r)
640
+ if isinstance(r, EloDuration): return r.scale(l)
641
+ return l * r`,
642
+ kDiv: `def kDiv(l, r):
643
+ if isinstance(l, EloDuration) and isinstance(r, (int, float)): return l.divide(r)
644
+ return l / r`,
645
+ kMod: `def kMod(l, r):
646
+ return l % r`,
647
+ kPow: `def kPow(l, r):
648
+ return l ** r`,
649
+ kNeg: `def kNeg(v):
650
+ if isinstance(v, EloDuration): return v.negate()
651
+ return -v`,
652
+ kBool: `def kBool(v):
653
+ if isinstance(v, bool): return v
654
+ if isinstance(v, str):
655
+ if v == 'true': return True
656
+ if v == 'false': return False
657
+ raise Exception('Cannot convert to Bool: ' + repr(v))
658
+ raise Exception('Cannot convert to Bool: ' + repr(v))`,
659
+ kParseDate: `def kParseDate(v):
660
+ if isinstance(v, _dt.datetime): return _elo_dt(v.year, v.month, v.day)
661
+ if isinstance(v, str):
662
+ parts = v.split('-')
663
+ if len(parts) == 3: return _elo_dt(int(parts[0]), int(parts[1]), int(parts[2]))
664
+ raise Exception('Cannot parse date: ' + repr(v))`,
665
+ kParseDatetime: `def kParseDatetime(v):
666
+ if isinstance(v, _dt.datetime): return v
667
+ if isinstance(v, str):
668
+ v2 = v.replace('Z', '')
669
+ if 'T' in v2:
670
+ dp, tp = v2.split('T')
671
+ dy, dm, dd = dp.split('-')
672
+ tps = tp.split(':')
673
+ return _elo_dt(int(dy), int(dm), int(dd), int(tps[0]), int(tps[1]), int(tps[2]) if len(tps) > 2 else 0)
674
+ parts = v2.split('-')
675
+ if len(parts) == 3: return _elo_dt(int(parts[0]), int(parts[1]), int(parts[2]))
676
+ raise Exception('Cannot parse datetime: ' + repr(v))`,
677
+ // Parser helpers - return Result: { "success": bool, "path": str, "message": str, "value": any, "cause": list }
678
+ pOk: `def pOk(v, p):
679
+ return {"success": True, "path": p, "message": "", "value": v, "cause": []}`,
680
+ pFail: `def pFail(p, m=None, c=None):
681
+ return {"success": False, "path": p, "message": m or "", "value": None, "cause": c or []}`,
682
+ pUnwrap: `def pUnwrap(r):
683
+ if r["success"]: return r["value"]
684
+ def find_error(e):
685
+ if e.get("message"): return e
686
+ if e.get("cause") and len(e["cause"]) > 0: return find_error(e["cause"][0])
687
+ return e
688
+ err = find_error(r)
689
+ raise Exception((err.get("path") or ".") + ": " + (err.get("message") or "type error"))`,
690
+ pAny: `def pAny(v, p):
691
+ return pOk(v, p)`,
692
+ pNull: `def pNull(v, p):
693
+ if v is None: return pOk(None, p)
694
+ return pFail(p, "expected Null, got " + type(v).__name__)`,
695
+ pString: `def pString(v, p):
696
+ if isinstance(v, str): return pOk(v, p)
697
+ return pFail(p, "expected String, got " + ("Null" if v is None else type(v).__name__))`,
698
+ pInt: `def pInt(v, p):
699
+ if isinstance(v, bool): return pFail(p, "expected Int, got Bool")
700
+ if isinstance(v, int): return pOk(v, p)
701
+ if isinstance(v, str):
702
+ try: return pOk(int(v), p)
703
+ except: pass
704
+ return pFail(p, "expected Int, got " + ("Null" if v is None else repr(v) if isinstance(v, str) else type(v).__name__))`,
705
+ pFloat: `def pFloat(v, p):
706
+ if isinstance(v, bool): return pFail(p, "expected Float, got Bool")
707
+ if isinstance(v, (int, float)): return pOk(float(v), p)
708
+ if isinstance(v, str):
709
+ try: return pOk(float(v), p)
710
+ except: pass
711
+ return pFail(p, "expected Float, got " + ("Null" if v is None else repr(v) if isinstance(v, str) else type(v).__name__))`,
712
+ pBool: `def pBool(v, p):
713
+ if isinstance(v, bool): return pOk(v, p)
714
+ if v == "true": return pOk(True, p)
715
+ if v == "false": return pOk(False, p)
716
+ return pFail(p, "expected Bool, got " + ("Null" if v is None else repr(v) if isinstance(v, str) else type(v).__name__))`,
717
+ pDatetime: `def pDatetime(v, p):
718
+ if isinstance(v, _dt.datetime): return pOk(v, p)
719
+ if isinstance(v, str):
720
+ try: return pOk(kParseDatetime(v), p)
721
+ except: pass
722
+ return pFail(p, "expected Datetime, got " + ("Null" if v is None else "invalid datetime " + repr(v) if isinstance(v, str) else type(v).__name__))`,
723
+ pSchema: `def pSchema(props, extras_mode, extras_parser=None):
724
+ known_keys = [p[0] for p in props]
725
+ def parser(v, p):
726
+ if not isinstance(v, dict): return pFail(p, "expected object, got " + ("Null" if v is None else type(v).__name__))
727
+ o = {}
728
+ for key, prop_parser, optional in props:
729
+ val = v.get(key)
730
+ if optional and val is None:
731
+ continue
732
+ r = prop_parser(val, p + "." + key)
733
+ if not r["success"]: return pFail(p, None, [r])
734
+ o[key] = r["value"]
735
+ if extras_mode == "closed":
736
+ for k in v:
737
+ if k not in known_keys: return pFail(p + "." + k, "unexpected attribute")
738
+ elif extras_mode == "typed" and extras_parser is not None:
739
+ for k in v:
740
+ if k not in known_keys:
741
+ re = extras_parser(v[k], p + "." + k)
742
+ if not re["success"]: return pFail(p, None, [re])
743
+ o[k] = re["value"]
744
+ return pOk(o, p)
745
+ return parser`,
746
+ pArray: `def pArray(elem_parser):
747
+ def parser(v, p):
748
+ if not isinstance(v, list): return pFail(p, "expected array, got " + ("Null" if v is None else type(v).__name__))
749
+ a = []
750
+ for i, e in enumerate(v):
751
+ r = elem_parser(e, p + "." + str(i))
752
+ if not r["success"]: return pFail(p, None, [r])
753
+ a.append(r["value"])
754
+ return pOk(a, p)
755
+ return parser`,
756
+ pUnion: `def pUnion(parsers):
757
+ def parser(v, p):
758
+ causes = []
759
+ for up in parsers:
760
+ r = up(v, p)
761
+ if r["success"]: return r
762
+ causes.append(r)
763
+ return pFail(p, "no union alternative matched", causes)
764
+ return parser`,
765
+ pSubtype: `def pSubtype(base_parser, checks):
766
+ def parser(v, p):
767
+ r = base_parser(v, p)
768
+ if not r["success"]: return r
769
+ val = r["value"]
770
+ for label, check in checks:
771
+ if not check(val): return pFail(p, label)
772
+ return r
773
+ return parser`,
774
+ };
373
775
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enspirit/elo",
3
- "version": "0.9.7",
3
+ "version": "0.9.8",
4
4
  "description": "A small expression language that compiles to Ruby, Javascript and PostgreSQL",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",