awx-zipline-ai 0.2.1__py3-none-any.whl → 0.3.1__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.
Files changed (96) hide show
  1. agent/ttypes.py +6 -6
  2. ai/chronon/airflow_helpers.py +20 -23
  3. ai/chronon/cli/__init__.py +0 -0
  4. ai/chronon/cli/compile/__init__.py +0 -0
  5. ai/chronon/cli/compile/column_hashing.py +40 -17
  6. ai/chronon/cli/compile/compile_context.py +13 -17
  7. ai/chronon/cli/compile/compiler.py +59 -36
  8. ai/chronon/cli/compile/conf_validator.py +251 -99
  9. ai/chronon/cli/compile/display/__init__.py +0 -0
  10. ai/chronon/cli/compile/display/class_tracker.py +6 -16
  11. ai/chronon/cli/compile/display/compile_status.py +10 -10
  12. ai/chronon/cli/compile/display/diff_result.py +79 -14
  13. ai/chronon/cli/compile/fill_templates.py +3 -8
  14. ai/chronon/cli/compile/parse_configs.py +10 -17
  15. ai/chronon/cli/compile/parse_teams.py +38 -34
  16. ai/chronon/cli/compile/serializer.py +3 -9
  17. ai/chronon/cli/compile/version_utils.py +42 -0
  18. ai/chronon/cli/git_utils.py +2 -13
  19. ai/chronon/cli/logger.py +0 -2
  20. ai/chronon/constants.py +1 -1
  21. ai/chronon/group_by.py +47 -47
  22. ai/chronon/join.py +46 -32
  23. ai/chronon/logger.py +1 -2
  24. ai/chronon/model.py +9 -4
  25. ai/chronon/query.py +2 -2
  26. ai/chronon/repo/__init__.py +1 -2
  27. ai/chronon/repo/aws.py +17 -31
  28. ai/chronon/repo/cluster.py +121 -50
  29. ai/chronon/repo/compile.py +14 -8
  30. ai/chronon/repo/constants.py +1 -1
  31. ai/chronon/repo/default_runner.py +32 -54
  32. ai/chronon/repo/explore.py +70 -73
  33. ai/chronon/repo/extract_objects.py +6 -9
  34. ai/chronon/repo/gcp.py +89 -88
  35. ai/chronon/repo/gitpython_utils.py +3 -2
  36. ai/chronon/repo/hub_runner.py +145 -55
  37. ai/chronon/repo/hub_uploader.py +2 -1
  38. ai/chronon/repo/init.py +12 -5
  39. ai/chronon/repo/join_backfill.py +19 -5
  40. ai/chronon/repo/run.py +42 -39
  41. ai/chronon/repo/serializer.py +4 -12
  42. ai/chronon/repo/utils.py +72 -63
  43. ai/chronon/repo/zipline.py +3 -19
  44. ai/chronon/repo/zipline_hub.py +211 -39
  45. ai/chronon/resources/__init__.py +0 -0
  46. ai/chronon/resources/gcp/__init__.py +0 -0
  47. ai/chronon/resources/gcp/group_bys/__init__.py +0 -0
  48. ai/chronon/resources/gcp/group_bys/test/data.py +13 -17
  49. ai/chronon/resources/gcp/joins/__init__.py +0 -0
  50. ai/chronon/resources/gcp/joins/test/data.py +4 -8
  51. ai/chronon/resources/gcp/sources/__init__.py +0 -0
  52. ai/chronon/resources/gcp/sources/test/data.py +9 -6
  53. ai/chronon/resources/gcp/teams.py +9 -21
  54. ai/chronon/source.py +2 -4
  55. ai/chronon/staging_query.py +60 -19
  56. ai/chronon/types.py +3 -2
  57. ai/chronon/utils.py +21 -68
  58. ai/chronon/windows.py +2 -4
  59. {awx_zipline_ai-0.2.1.dist-info → awx_zipline_ai-0.3.1.dist-info}/METADATA +48 -24
  60. awx_zipline_ai-0.3.1.dist-info/RECORD +96 -0
  61. awx_zipline_ai-0.3.1.dist-info/top_level.txt +4 -0
  62. gen_thrift/__init__.py +0 -0
  63. {ai/chronon → gen_thrift}/api/ttypes.py +327 -197
  64. {ai/chronon/api → gen_thrift}/common/ttypes.py +9 -39
  65. gen_thrift/eval/ttypes.py +660 -0
  66. {ai/chronon → gen_thrift}/hub/ttypes.py +12 -131
  67. {ai/chronon → gen_thrift}/observability/ttypes.py +343 -180
  68. {ai/chronon → gen_thrift}/planner/ttypes.py +326 -45
  69. ai/chronon/eval/__init__.py +0 -122
  70. ai/chronon/eval/query_parsing.py +0 -19
  71. ai/chronon/eval/sample_tables.py +0 -100
  72. ai/chronon/eval/table_scan.py +0 -186
  73. ai/chronon/orchestration/ttypes.py +0 -4406
  74. ai/chronon/resources/gcp/README.md +0 -174
  75. ai/chronon/resources/gcp/zipline-cli-install.sh +0 -54
  76. awx_zipline_ai-0.2.1.dist-info/RECORD +0 -93
  77. awx_zipline_ai-0.2.1.dist-info/licenses/LICENSE +0 -202
  78. awx_zipline_ai-0.2.1.dist-info/top_level.txt +0 -3
  79. /jars/__init__.py → /__init__.py +0 -0
  80. {awx_zipline_ai-0.2.1.dist-info → awx_zipline_ai-0.3.1.dist-info}/WHEEL +0 -0
  81. {awx_zipline_ai-0.2.1.dist-info → awx_zipline_ai-0.3.1.dist-info}/entry_points.txt +0 -0
  82. {ai/chronon → gen_thrift}/api/__init__.py +0 -0
  83. {ai/chronon/api/common → gen_thrift/api}/constants.py +0 -0
  84. {ai/chronon/api → gen_thrift}/common/__init__.py +0 -0
  85. {ai/chronon/api → gen_thrift/common}/constants.py +0 -0
  86. {ai/chronon/fetcher → gen_thrift/eval}/__init__.py +0 -0
  87. {ai/chronon/fetcher → gen_thrift/eval}/constants.py +0 -0
  88. {ai/chronon/hub → gen_thrift/fetcher}/__init__.py +0 -0
  89. {ai/chronon/hub → gen_thrift/fetcher}/constants.py +0 -0
  90. {ai/chronon → gen_thrift}/fetcher/ttypes.py +0 -0
  91. {ai/chronon/observability → gen_thrift/hub}/__init__.py +0 -0
  92. {ai/chronon/observability → gen_thrift/hub}/constants.py +0 -0
  93. {ai/chronon/orchestration → gen_thrift/observability}/__init__.py +0 -0
  94. {ai/chronon/orchestration → gen_thrift/observability}/constants.py +0 -0
  95. {ai/chronon → gen_thrift}/planner/__init__.py +0 -0
  96. {ai/chronon → gen_thrift}/planner/constants.py +0 -0
@@ -12,7 +12,7 @@ from thrift.TRecursive import fix_spec
12
12
  from uuid import UUID
13
13
 
14
14
  import sys
15
- import ai.chronon.api.common.ttypes
15
+ import gen_thrift.common.ttypes
16
16
 
17
17
  from thrift.transport import TTransport
18
18
  all_structs = []
@@ -64,7 +64,19 @@ class DriftMetric(object):
64
64
  }
65
65
 
66
66
 
67
- class TileKey(object):
67
+ class TileStatsType(object):
68
+ NULL_COUNTS = 1
69
+
70
+ _VALUES_TO_NAMES = {
71
+ 1: "NULL_COUNTS",
72
+ }
73
+
74
+ _NAMES_TO_VALUES = {
75
+ "NULL_COUNTS": 1,
76
+ }
77
+
78
+
79
+ class TileSummaryKey(object):
68
80
  """
69
81
  Attributes:
70
82
  - column
@@ -121,7 +133,7 @@ class TileKey(object):
121
133
  if oprot._fast_encode is not None and self.thrift_spec is not None:
122
134
  oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
123
135
  return
124
- oprot.writeStructBegin('TileKey')
136
+ oprot.writeStructBegin('TileSummaryKey')
125
137
  if self.column is not None:
126
138
  oprot.writeFieldBegin('column', TType.STRING, 1)
127
139
  oprot.writeString(self.column.encode('utf-8') if sys.version_info[0] == 2 else self.column)
@@ -418,6 +430,146 @@ class TileSeriesKey(object):
418
430
  return not (self == other)
419
431
 
420
432
 
433
+ class NullCounts(object):
434
+ """
435
+ Attributes:
436
+ - nullCounts
437
+ - rowCount
438
+
439
+ """
440
+ thrift_spec = None
441
+
442
+
443
+ def __init__(self, nullCounts = None, rowCount = None,):
444
+ self.nullCounts = nullCounts
445
+ self.rowCount = rowCount
446
+
447
+ def read(self, iprot):
448
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
449
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
450
+ return
451
+ iprot.readStructBegin()
452
+ while True:
453
+ (fname, ftype, fid) = iprot.readFieldBegin()
454
+ if ftype == TType.STOP:
455
+ break
456
+ if fid == 1:
457
+ if ftype == TType.MAP:
458
+ self.nullCounts = {}
459
+ (_ktype31, _vtype32, _size30) = iprot.readMapBegin()
460
+ for _i34 in range(_size30):
461
+ _key35 = iprot.readI32()
462
+ _val36 = iprot.readI64()
463
+ self.nullCounts[_key35] = _val36
464
+ iprot.readMapEnd()
465
+ else:
466
+ iprot.skip(ftype)
467
+ elif fid == 2:
468
+ if ftype == TType.I64:
469
+ self.rowCount = iprot.readI64()
470
+ else:
471
+ iprot.skip(ftype)
472
+ else:
473
+ iprot.skip(ftype)
474
+ iprot.readFieldEnd()
475
+ iprot.readStructEnd()
476
+
477
+ def write(self, oprot):
478
+ self.validate()
479
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
480
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
481
+ return
482
+ oprot.writeStructBegin('NullCounts')
483
+ if self.nullCounts is not None:
484
+ oprot.writeFieldBegin('nullCounts', TType.MAP, 1)
485
+ oprot.writeMapBegin(TType.I32, TType.I64, len(self.nullCounts))
486
+ for kiter37, viter38 in self.nullCounts.items():
487
+ oprot.writeI32(kiter37)
488
+ oprot.writeI64(viter38)
489
+ oprot.writeMapEnd()
490
+ oprot.writeFieldEnd()
491
+ if self.rowCount is not None:
492
+ oprot.writeFieldBegin('rowCount', TType.I64, 2)
493
+ oprot.writeI64(self.rowCount)
494
+ oprot.writeFieldEnd()
495
+ oprot.writeFieldStop()
496
+ oprot.writeStructEnd()
497
+
498
+ def validate(self):
499
+ return
500
+
501
+ def __repr__(self):
502
+ L = ['%s=%r' % (key, value)
503
+ for key, value in self.__dict__.items()]
504
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
505
+
506
+ def __eq__(self, other):
507
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
508
+
509
+ def __ne__(self, other):
510
+ return not (self == other)
511
+
512
+
513
+ class TileStats(object):
514
+ """
515
+ Attributes:
516
+ - nullCounts
517
+
518
+ """
519
+ thrift_spec = None
520
+
521
+
522
+ def __init__(self, nullCounts = None,):
523
+ self.nullCounts = nullCounts
524
+
525
+ def read(self, iprot):
526
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
527
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
528
+ return
529
+ iprot.readStructBegin()
530
+ while True:
531
+ (fname, ftype, fid) = iprot.readFieldBegin()
532
+ if ftype == TType.STOP:
533
+ break
534
+ if fid == 1:
535
+ if ftype == TType.STRUCT:
536
+ self.nullCounts = NullCounts()
537
+ self.nullCounts.read(iprot)
538
+ else:
539
+ iprot.skip(ftype)
540
+ else:
541
+ iprot.skip(ftype)
542
+ iprot.readFieldEnd()
543
+ iprot.readStructEnd()
544
+
545
+ def write(self, oprot):
546
+ self.validate()
547
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
548
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
549
+ return
550
+ oprot.writeStructBegin('TileStats')
551
+ if self.nullCounts is not None:
552
+ oprot.writeFieldBegin('nullCounts', TType.STRUCT, 1)
553
+ self.nullCounts.write(oprot)
554
+ oprot.writeFieldEnd()
555
+ oprot.writeFieldStop()
556
+ oprot.writeStructEnd()
557
+
558
+ def validate(self):
559
+ return
560
+
561
+ def __repr__(self):
562
+ L = ['%s=%r' % (key, value)
563
+ for key, value in self.__dict__.items()]
564
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
565
+
566
+ def __eq__(self, other):
567
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
568
+
569
+ def __ne__(self, other):
570
+ return not (self == other)
571
+
572
+
421
573
  class TileSummarySeries(object):
422
574
  """
423
575
  Attributes:
@@ -460,117 +612,117 @@ class TileSummarySeries(object):
460
612
  if fid == 1:
461
613
  if ftype == TType.LIST:
462
614
  self.percentiles = []
463
- (_etype33, _size30) = iprot.readListBegin()
464
- for _i34 in range(_size30):
465
- _elem35 = []
466
- (_etype39, _size36) = iprot.readListBegin()
467
- for _i40 in range(_size36):
468
- _elem41 = iprot.readDouble()
469
- _elem35.append(_elem41)
615
+ (_etype42, _size39) = iprot.readListBegin()
616
+ for _i43 in range(_size39):
617
+ _elem44 = []
618
+ (_etype48, _size45) = iprot.readListBegin()
619
+ for _i49 in range(_size45):
620
+ _elem50 = iprot.readDouble()
621
+ _elem44.append(_elem50)
470
622
  iprot.readListEnd()
471
- self.percentiles.append(_elem35)
623
+ self.percentiles.append(_elem44)
472
624
  iprot.readListEnd()
473
625
  else:
474
626
  iprot.skip(ftype)
475
627
  elif fid == 2:
476
628
  if ftype == TType.MAP:
477
629
  self.histogram = {}
478
- (_ktype43, _vtype44, _size42) = iprot.readMapBegin()
479
- for _i46 in range(_size42):
480
- _key47 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
481
- _val48 = []
482
- (_etype52, _size49) = iprot.readListBegin()
483
- for _i53 in range(_size49):
484
- _elem54 = iprot.readI64()
485
- _val48.append(_elem54)
630
+ (_ktype52, _vtype53, _size51) = iprot.readMapBegin()
631
+ for _i55 in range(_size51):
632
+ _key56 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
633
+ _val57 = []
634
+ (_etype61, _size58) = iprot.readListBegin()
635
+ for _i62 in range(_size58):
636
+ _elem63 = iprot.readI64()
637
+ _val57.append(_elem63)
486
638
  iprot.readListEnd()
487
- self.histogram[_key47] = _val48
639
+ self.histogram[_key56] = _val57
488
640
  iprot.readMapEnd()
489
641
  else:
490
642
  iprot.skip(ftype)
491
643
  elif fid == 3:
492
644
  if ftype == TType.LIST:
493
645
  self.count = []
494
- (_etype58, _size55) = iprot.readListBegin()
495
- for _i59 in range(_size55):
496
- _elem60 = iprot.readI64()
497
- self.count.append(_elem60)
646
+ (_etype67, _size64) = iprot.readListBegin()
647
+ for _i68 in range(_size64):
648
+ _elem69 = iprot.readI64()
649
+ self.count.append(_elem69)
498
650
  iprot.readListEnd()
499
651
  else:
500
652
  iprot.skip(ftype)
501
653
  elif fid == 4:
502
654
  if ftype == TType.LIST:
503
655
  self.nullCount = []
504
- (_etype64, _size61) = iprot.readListBegin()
505
- for _i65 in range(_size61):
506
- _elem66 = iprot.readI64()
507
- self.nullCount.append(_elem66)
656
+ (_etype73, _size70) = iprot.readListBegin()
657
+ for _i74 in range(_size70):
658
+ _elem75 = iprot.readI64()
659
+ self.nullCount.append(_elem75)
508
660
  iprot.readListEnd()
509
661
  else:
510
662
  iprot.skip(ftype)
511
663
  elif fid == 5:
512
664
  if ftype == TType.LIST:
513
665
  self.innerCount = []
514
- (_etype70, _size67) = iprot.readListBegin()
515
- for _i71 in range(_size67):
516
- _elem72 = iprot.readI64()
517
- self.innerCount.append(_elem72)
666
+ (_etype79, _size76) = iprot.readListBegin()
667
+ for _i80 in range(_size76):
668
+ _elem81 = iprot.readI64()
669
+ self.innerCount.append(_elem81)
518
670
  iprot.readListEnd()
519
671
  else:
520
672
  iprot.skip(ftype)
521
673
  elif fid == 6:
522
674
  if ftype == TType.LIST:
523
675
  self.innerNullCount = []
524
- (_etype76, _size73) = iprot.readListBegin()
525
- for _i77 in range(_size73):
526
- _elem78 = iprot.readI64()
527
- self.innerNullCount.append(_elem78)
676
+ (_etype85, _size82) = iprot.readListBegin()
677
+ for _i86 in range(_size82):
678
+ _elem87 = iprot.readI64()
679
+ self.innerNullCount.append(_elem87)
528
680
  iprot.readListEnd()
529
681
  else:
530
682
  iprot.skip(ftype)
531
683
  elif fid == 7:
532
684
  if ftype == TType.LIST:
533
685
  self.lengthPercentiles = []
534
- (_etype82, _size79) = iprot.readListBegin()
535
- for _i83 in range(_size79):
536
- _elem84 = []
537
- (_etype88, _size85) = iprot.readListBegin()
538
- for _i89 in range(_size85):
539
- _elem90 = iprot.readI32()
540
- _elem84.append(_elem90)
686
+ (_etype91, _size88) = iprot.readListBegin()
687
+ for _i92 in range(_size88):
688
+ _elem93 = []
689
+ (_etype97, _size94) = iprot.readListBegin()
690
+ for _i98 in range(_size94):
691
+ _elem99 = iprot.readI32()
692
+ _elem93.append(_elem99)
541
693
  iprot.readListEnd()
542
- self.lengthPercentiles.append(_elem84)
694
+ self.lengthPercentiles.append(_elem93)
543
695
  iprot.readListEnd()
544
696
  else:
545
697
  iprot.skip(ftype)
546
698
  elif fid == 8:
547
699
  if ftype == TType.LIST:
548
700
  self.stringLengthPercentiles = []
549
- (_etype94, _size91) = iprot.readListBegin()
550
- for _i95 in range(_size91):
551
- _elem96 = []
552
- (_etype100, _size97) = iprot.readListBegin()
553
- for _i101 in range(_size97):
554
- _elem102 = iprot.readI32()
555
- _elem96.append(_elem102)
701
+ (_etype103, _size100) = iprot.readListBegin()
702
+ for _i104 in range(_size100):
703
+ _elem105 = []
704
+ (_etype109, _size106) = iprot.readListBegin()
705
+ for _i110 in range(_size106):
706
+ _elem111 = iprot.readI32()
707
+ _elem105.append(_elem111)
556
708
  iprot.readListEnd()
557
- self.stringLengthPercentiles.append(_elem96)
709
+ self.stringLengthPercentiles.append(_elem105)
558
710
  iprot.readListEnd()
559
711
  else:
560
712
  iprot.skip(ftype)
561
713
  elif fid == 200:
562
714
  if ftype == TType.LIST:
563
715
  self.timestamps = []
564
- (_etype106, _size103) = iprot.readListBegin()
565
- for _i107 in range(_size103):
566
- _elem108 = iprot.readI64()
567
- self.timestamps.append(_elem108)
716
+ (_etype115, _size112) = iprot.readListBegin()
717
+ for _i116 in range(_size112):
718
+ _elem117 = iprot.readI64()
719
+ self.timestamps.append(_elem117)
568
720
  iprot.readListEnd()
569
721
  else:
570
722
  iprot.skip(ftype)
571
723
  elif fid == 300:
572
724
  if ftype == TType.STRUCT:
573
- self.key = TileSeriesKey()
725
+ self.key = TileSummaryKey()
574
726
  self.key.read(iprot)
575
727
  else:
576
728
  iprot.skip(ftype)
@@ -588,77 +740,77 @@ class TileSummarySeries(object):
588
740
  if self.percentiles is not None:
589
741
  oprot.writeFieldBegin('percentiles', TType.LIST, 1)
590
742
  oprot.writeListBegin(TType.LIST, len(self.percentiles))
591
- for iter109 in self.percentiles:
592
- oprot.writeListBegin(TType.DOUBLE, len(iter109))
593
- for iter110 in iter109:
594
- oprot.writeDouble(iter110)
743
+ for iter118 in self.percentiles:
744
+ oprot.writeListBegin(TType.DOUBLE, len(iter118))
745
+ for iter119 in iter118:
746
+ oprot.writeDouble(iter119)
595
747
  oprot.writeListEnd()
596
748
  oprot.writeListEnd()
597
749
  oprot.writeFieldEnd()
598
750
  if self.histogram is not None:
599
751
  oprot.writeFieldBegin('histogram', TType.MAP, 2)
600
752
  oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.histogram))
601
- for kiter111, viter112 in self.histogram.items():
602
- oprot.writeString(kiter111.encode('utf-8') if sys.version_info[0] == 2 else kiter111)
603
- oprot.writeListBegin(TType.I64, len(viter112))
604
- for iter113 in viter112:
605
- oprot.writeI64(iter113)
753
+ for kiter120, viter121 in self.histogram.items():
754
+ oprot.writeString(kiter120.encode('utf-8') if sys.version_info[0] == 2 else kiter120)
755
+ oprot.writeListBegin(TType.I64, len(viter121))
756
+ for iter122 in viter121:
757
+ oprot.writeI64(iter122)
606
758
  oprot.writeListEnd()
607
759
  oprot.writeMapEnd()
608
760
  oprot.writeFieldEnd()
609
761
  if self.count is not None:
610
762
  oprot.writeFieldBegin('count', TType.LIST, 3)
611
763
  oprot.writeListBegin(TType.I64, len(self.count))
612
- for iter114 in self.count:
613
- oprot.writeI64(iter114)
764
+ for iter123 in self.count:
765
+ oprot.writeI64(iter123)
614
766
  oprot.writeListEnd()
615
767
  oprot.writeFieldEnd()
616
768
  if self.nullCount is not None:
617
769
  oprot.writeFieldBegin('nullCount', TType.LIST, 4)
618
770
  oprot.writeListBegin(TType.I64, len(self.nullCount))
619
- for iter115 in self.nullCount:
620
- oprot.writeI64(iter115)
771
+ for iter124 in self.nullCount:
772
+ oprot.writeI64(iter124)
621
773
  oprot.writeListEnd()
622
774
  oprot.writeFieldEnd()
623
775
  if self.innerCount is not None:
624
776
  oprot.writeFieldBegin('innerCount', TType.LIST, 5)
625
777
  oprot.writeListBegin(TType.I64, len(self.innerCount))
626
- for iter116 in self.innerCount:
627
- oprot.writeI64(iter116)
778
+ for iter125 in self.innerCount:
779
+ oprot.writeI64(iter125)
628
780
  oprot.writeListEnd()
629
781
  oprot.writeFieldEnd()
630
782
  if self.innerNullCount is not None:
631
783
  oprot.writeFieldBegin('innerNullCount', TType.LIST, 6)
632
784
  oprot.writeListBegin(TType.I64, len(self.innerNullCount))
633
- for iter117 in self.innerNullCount:
634
- oprot.writeI64(iter117)
785
+ for iter126 in self.innerNullCount:
786
+ oprot.writeI64(iter126)
635
787
  oprot.writeListEnd()
636
788
  oprot.writeFieldEnd()
637
789
  if self.lengthPercentiles is not None:
638
790
  oprot.writeFieldBegin('lengthPercentiles', TType.LIST, 7)
639
791
  oprot.writeListBegin(TType.LIST, len(self.lengthPercentiles))
640
- for iter118 in self.lengthPercentiles:
641
- oprot.writeListBegin(TType.I32, len(iter118))
642
- for iter119 in iter118:
643
- oprot.writeI32(iter119)
792
+ for iter127 in self.lengthPercentiles:
793
+ oprot.writeListBegin(TType.I32, len(iter127))
794
+ for iter128 in iter127:
795
+ oprot.writeI32(iter128)
644
796
  oprot.writeListEnd()
645
797
  oprot.writeListEnd()
646
798
  oprot.writeFieldEnd()
647
799
  if self.stringLengthPercentiles is not None:
648
800
  oprot.writeFieldBegin('stringLengthPercentiles', TType.LIST, 8)
649
801
  oprot.writeListBegin(TType.LIST, len(self.stringLengthPercentiles))
650
- for iter120 in self.stringLengthPercentiles:
651
- oprot.writeListBegin(TType.I32, len(iter120))
652
- for iter121 in iter120:
653
- oprot.writeI32(iter121)
802
+ for iter129 in self.stringLengthPercentiles:
803
+ oprot.writeListBegin(TType.I32, len(iter129))
804
+ for iter130 in iter129:
805
+ oprot.writeI32(iter130)
654
806
  oprot.writeListEnd()
655
807
  oprot.writeListEnd()
656
808
  oprot.writeFieldEnd()
657
809
  if self.timestamps is not None:
658
810
  oprot.writeFieldBegin('timestamps', TType.LIST, 200)
659
811
  oprot.writeListBegin(TType.I64, len(self.timestamps))
660
- for iter122 in self.timestamps:
661
- oprot.writeI64(iter122)
812
+ for iter131 in self.timestamps:
813
+ oprot.writeI64(iter131)
662
814
  oprot.writeListEnd()
663
815
  oprot.writeFieldEnd()
664
816
  if self.key is not None:
@@ -861,90 +1013,90 @@ class TileDriftSeries(object):
861
1013
  if fid == 1:
862
1014
  if ftype == TType.LIST:
863
1015
  self.percentileDriftSeries = []
864
- (_etype126, _size123) = iprot.readListBegin()
865
- for _i127 in range(_size123):
866
- _elem128 = iprot.readDouble()
867
- self.percentileDriftSeries.append(_elem128)
1016
+ (_etype135, _size132) = iprot.readListBegin()
1017
+ for _i136 in range(_size132):
1018
+ _elem137 = iprot.readDouble()
1019
+ self.percentileDriftSeries.append(_elem137)
868
1020
  iprot.readListEnd()
869
1021
  else:
870
1022
  iprot.skip(ftype)
871
1023
  elif fid == 2:
872
1024
  if ftype == TType.LIST:
873
1025
  self.histogramDriftSeries = []
874
- (_etype132, _size129) = iprot.readListBegin()
875
- for _i133 in range(_size129):
876
- _elem134 = iprot.readDouble()
877
- self.histogramDriftSeries.append(_elem134)
1026
+ (_etype141, _size138) = iprot.readListBegin()
1027
+ for _i142 in range(_size138):
1028
+ _elem143 = iprot.readDouble()
1029
+ self.histogramDriftSeries.append(_elem143)
878
1030
  iprot.readListEnd()
879
1031
  else:
880
1032
  iprot.skip(ftype)
881
1033
  elif fid == 3:
882
1034
  if ftype == TType.LIST:
883
1035
  self.countChangePercentSeries = []
884
- (_etype138, _size135) = iprot.readListBegin()
885
- for _i139 in range(_size135):
886
- _elem140 = iprot.readDouble()
887
- self.countChangePercentSeries.append(_elem140)
1036
+ (_etype147, _size144) = iprot.readListBegin()
1037
+ for _i148 in range(_size144):
1038
+ _elem149 = iprot.readDouble()
1039
+ self.countChangePercentSeries.append(_elem149)
888
1040
  iprot.readListEnd()
889
1041
  else:
890
1042
  iprot.skip(ftype)
891
1043
  elif fid == 4:
892
1044
  if ftype == TType.LIST:
893
1045
  self.nullRatioChangePercentSeries = []
894
- (_etype144, _size141) = iprot.readListBegin()
895
- for _i145 in range(_size141):
896
- _elem146 = iprot.readDouble()
897
- self.nullRatioChangePercentSeries.append(_elem146)
1046
+ (_etype153, _size150) = iprot.readListBegin()
1047
+ for _i154 in range(_size150):
1048
+ _elem155 = iprot.readDouble()
1049
+ self.nullRatioChangePercentSeries.append(_elem155)
898
1050
  iprot.readListEnd()
899
1051
  else:
900
1052
  iprot.skip(ftype)
901
1053
  elif fid == 5:
902
1054
  if ftype == TType.LIST:
903
1055
  self.innerCountChangePercentSeries = []
904
- (_etype150, _size147) = iprot.readListBegin()
905
- for _i151 in range(_size147):
906
- _elem152 = iprot.readDouble()
907
- self.innerCountChangePercentSeries.append(_elem152)
1056
+ (_etype159, _size156) = iprot.readListBegin()
1057
+ for _i160 in range(_size156):
1058
+ _elem161 = iprot.readDouble()
1059
+ self.innerCountChangePercentSeries.append(_elem161)
908
1060
  iprot.readListEnd()
909
1061
  else:
910
1062
  iprot.skip(ftype)
911
1063
  elif fid == 6:
912
1064
  if ftype == TType.LIST:
913
1065
  self.innerNullCountChangePercentSeries = []
914
- (_etype156, _size153) = iprot.readListBegin()
915
- for _i157 in range(_size153):
916
- _elem158 = iprot.readDouble()
917
- self.innerNullCountChangePercentSeries.append(_elem158)
1066
+ (_etype165, _size162) = iprot.readListBegin()
1067
+ for _i166 in range(_size162):
1068
+ _elem167 = iprot.readDouble()
1069
+ self.innerNullCountChangePercentSeries.append(_elem167)
918
1070
  iprot.readListEnd()
919
1071
  else:
920
1072
  iprot.skip(ftype)
921
1073
  elif fid == 7:
922
1074
  if ftype == TType.LIST:
923
1075
  self.lengthPercentilesDriftSeries = []
924
- (_etype162, _size159) = iprot.readListBegin()
925
- for _i163 in range(_size159):
926
- _elem164 = iprot.readDouble()
927
- self.lengthPercentilesDriftSeries.append(_elem164)
1076
+ (_etype171, _size168) = iprot.readListBegin()
1077
+ for _i172 in range(_size168):
1078
+ _elem173 = iprot.readDouble()
1079
+ self.lengthPercentilesDriftSeries.append(_elem173)
928
1080
  iprot.readListEnd()
929
1081
  else:
930
1082
  iprot.skip(ftype)
931
1083
  elif fid == 8:
932
1084
  if ftype == TType.LIST:
933
1085
  self.stringLengthPercentilesDriftSeries = []
934
- (_etype168, _size165) = iprot.readListBegin()
935
- for _i169 in range(_size165):
936
- _elem170 = iprot.readDouble()
937
- self.stringLengthPercentilesDriftSeries.append(_elem170)
1086
+ (_etype177, _size174) = iprot.readListBegin()
1087
+ for _i178 in range(_size174):
1088
+ _elem179 = iprot.readDouble()
1089
+ self.stringLengthPercentilesDriftSeries.append(_elem179)
938
1090
  iprot.readListEnd()
939
1091
  else:
940
1092
  iprot.skip(ftype)
941
1093
  elif fid == 200:
942
1094
  if ftype == TType.LIST:
943
1095
  self.timestamps = []
944
- (_etype174, _size171) = iprot.readListBegin()
945
- for _i175 in range(_size171):
946
- _elem176 = iprot.readI64()
947
- self.timestamps.append(_elem176)
1096
+ (_etype183, _size180) = iprot.readListBegin()
1097
+ for _i184 in range(_size180):
1098
+ _elem185 = iprot.readI64()
1099
+ self.timestamps.append(_elem185)
948
1100
  iprot.readListEnd()
949
1101
  else:
950
1102
  iprot.skip(ftype)
@@ -968,64 +1120,64 @@ class TileDriftSeries(object):
968
1120
  if self.percentileDriftSeries is not None:
969
1121
  oprot.writeFieldBegin('percentileDriftSeries', TType.LIST, 1)
970
1122
  oprot.writeListBegin(TType.DOUBLE, len(self.percentileDriftSeries))
971
- for iter177 in self.percentileDriftSeries:
972
- oprot.writeDouble(iter177)
1123
+ for iter186 in self.percentileDriftSeries:
1124
+ oprot.writeDouble(iter186)
973
1125
  oprot.writeListEnd()
974
1126
  oprot.writeFieldEnd()
975
1127
  if self.histogramDriftSeries is not None:
976
1128
  oprot.writeFieldBegin('histogramDriftSeries', TType.LIST, 2)
977
1129
  oprot.writeListBegin(TType.DOUBLE, len(self.histogramDriftSeries))
978
- for iter178 in self.histogramDriftSeries:
979
- oprot.writeDouble(iter178)
1130
+ for iter187 in self.histogramDriftSeries:
1131
+ oprot.writeDouble(iter187)
980
1132
  oprot.writeListEnd()
981
1133
  oprot.writeFieldEnd()
982
1134
  if self.countChangePercentSeries is not None:
983
1135
  oprot.writeFieldBegin('countChangePercentSeries', TType.LIST, 3)
984
1136
  oprot.writeListBegin(TType.DOUBLE, len(self.countChangePercentSeries))
985
- for iter179 in self.countChangePercentSeries:
986
- oprot.writeDouble(iter179)
1137
+ for iter188 in self.countChangePercentSeries:
1138
+ oprot.writeDouble(iter188)
987
1139
  oprot.writeListEnd()
988
1140
  oprot.writeFieldEnd()
989
1141
  if self.nullRatioChangePercentSeries is not None:
990
1142
  oprot.writeFieldBegin('nullRatioChangePercentSeries', TType.LIST, 4)
991
1143
  oprot.writeListBegin(TType.DOUBLE, len(self.nullRatioChangePercentSeries))
992
- for iter180 in self.nullRatioChangePercentSeries:
993
- oprot.writeDouble(iter180)
1144
+ for iter189 in self.nullRatioChangePercentSeries:
1145
+ oprot.writeDouble(iter189)
994
1146
  oprot.writeListEnd()
995
1147
  oprot.writeFieldEnd()
996
1148
  if self.innerCountChangePercentSeries is not None:
997
1149
  oprot.writeFieldBegin('innerCountChangePercentSeries', TType.LIST, 5)
998
1150
  oprot.writeListBegin(TType.DOUBLE, len(self.innerCountChangePercentSeries))
999
- for iter181 in self.innerCountChangePercentSeries:
1000
- oprot.writeDouble(iter181)
1151
+ for iter190 in self.innerCountChangePercentSeries:
1152
+ oprot.writeDouble(iter190)
1001
1153
  oprot.writeListEnd()
1002
1154
  oprot.writeFieldEnd()
1003
1155
  if self.innerNullCountChangePercentSeries is not None:
1004
1156
  oprot.writeFieldBegin('innerNullCountChangePercentSeries', TType.LIST, 6)
1005
1157
  oprot.writeListBegin(TType.DOUBLE, len(self.innerNullCountChangePercentSeries))
1006
- for iter182 in self.innerNullCountChangePercentSeries:
1007
- oprot.writeDouble(iter182)
1158
+ for iter191 in self.innerNullCountChangePercentSeries:
1159
+ oprot.writeDouble(iter191)
1008
1160
  oprot.writeListEnd()
1009
1161
  oprot.writeFieldEnd()
1010
1162
  if self.lengthPercentilesDriftSeries is not None:
1011
1163
  oprot.writeFieldBegin('lengthPercentilesDriftSeries', TType.LIST, 7)
1012
1164
  oprot.writeListBegin(TType.DOUBLE, len(self.lengthPercentilesDriftSeries))
1013
- for iter183 in self.lengthPercentilesDriftSeries:
1014
- oprot.writeDouble(iter183)
1165
+ for iter192 in self.lengthPercentilesDriftSeries:
1166
+ oprot.writeDouble(iter192)
1015
1167
  oprot.writeListEnd()
1016
1168
  oprot.writeFieldEnd()
1017
1169
  if self.stringLengthPercentilesDriftSeries is not None:
1018
1170
  oprot.writeFieldBegin('stringLengthPercentilesDriftSeries', TType.LIST, 8)
1019
1171
  oprot.writeListBegin(TType.DOUBLE, len(self.stringLengthPercentilesDriftSeries))
1020
- for iter184 in self.stringLengthPercentilesDriftSeries:
1021
- oprot.writeDouble(iter184)
1172
+ for iter193 in self.stringLengthPercentilesDriftSeries:
1173
+ oprot.writeDouble(iter193)
1022
1174
  oprot.writeListEnd()
1023
1175
  oprot.writeFieldEnd()
1024
1176
  if self.timestamps is not None:
1025
1177
  oprot.writeFieldBegin('timestamps', TType.LIST, 200)
1026
1178
  oprot.writeListBegin(TType.I64, len(self.timestamps))
1027
- for iter185 in self.timestamps:
1028
- oprot.writeI64(iter185)
1179
+ for iter194 in self.timestamps:
1180
+ oprot.writeI64(iter194)
1029
1181
  oprot.writeListEnd()
1030
1182
  oprot.writeFieldEnd()
1031
1183
  if self.key is not None:
@@ -1084,49 +1236,49 @@ class DriftSpec(object):
1084
1236
  if fid == 1:
1085
1237
  if ftype == TType.LIST:
1086
1238
  self.slices = []
1087
- (_etype189, _size186) = iprot.readListBegin()
1088
- for _i190 in range(_size186):
1089
- _elem191 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1090
- self.slices.append(_elem191)
1239
+ (_etype198, _size195) = iprot.readListBegin()
1240
+ for _i199 in range(_size195):
1241
+ _elem200 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1242
+ self.slices.append(_elem200)
1091
1243
  iprot.readListEnd()
1092
1244
  else:
1093
1245
  iprot.skip(ftype)
1094
1246
  elif fid == 2:
1095
1247
  if ftype == TType.MAP:
1096
1248
  self.derivations = {}
1097
- (_ktype193, _vtype194, _size192) = iprot.readMapBegin()
1098
- for _i196 in range(_size192):
1099
- _key197 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1100
- _val198 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1101
- self.derivations[_key197] = _val198
1249
+ (_ktype202, _vtype203, _size201) = iprot.readMapBegin()
1250
+ for _i205 in range(_size201):
1251
+ _key206 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1252
+ _val207 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1253
+ self.derivations[_key206] = _val207
1102
1254
  iprot.readMapEnd()
1103
1255
  else:
1104
1256
  iprot.skip(ftype)
1105
1257
  elif fid == 3:
1106
1258
  if ftype == TType.MAP:
1107
1259
  self.columnCardinalityHints = {}
1108
- (_ktype200, _vtype201, _size199) = iprot.readMapBegin()
1109
- for _i203 in range(_size199):
1110
- _key204 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1111
- _val205 = iprot.readI32()
1112
- self.columnCardinalityHints[_key204] = _val205
1260
+ (_ktype209, _vtype210, _size208) = iprot.readMapBegin()
1261
+ for _i212 in range(_size208):
1262
+ _key213 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1263
+ _val214 = iprot.readI32()
1264
+ self.columnCardinalityHints[_key213] = _val214
1113
1265
  iprot.readMapEnd()
1114
1266
  else:
1115
1267
  iprot.skip(ftype)
1116
1268
  elif fid == 4:
1117
1269
  if ftype == TType.STRUCT:
1118
- self.tileSize = ai.chronon.api.common.ttypes.Window()
1270
+ self.tileSize = gen_thrift.common.ttypes.Window()
1119
1271
  self.tileSize.read(iprot)
1120
1272
  else:
1121
1273
  iprot.skip(ftype)
1122
1274
  elif fid == 5:
1123
1275
  if ftype == TType.LIST:
1124
1276
  self.lookbackWindows = []
1125
- (_etype209, _size206) = iprot.readListBegin()
1126
- for _i210 in range(_size206):
1127
- _elem211 = ai.chronon.api.common.ttypes.Window()
1128
- _elem211.read(iprot)
1129
- self.lookbackWindows.append(_elem211)
1277
+ (_etype218, _size215) = iprot.readListBegin()
1278
+ for _i219 in range(_size215):
1279
+ _elem220 = gen_thrift.common.ttypes.Window()
1280
+ _elem220.read(iprot)
1281
+ self.lookbackWindows.append(_elem220)
1130
1282
  iprot.readListEnd()
1131
1283
  else:
1132
1284
  iprot.skip(ftype)
@@ -1149,24 +1301,24 @@ class DriftSpec(object):
1149
1301
  if self.slices is not None:
1150
1302
  oprot.writeFieldBegin('slices', TType.LIST, 1)
1151
1303
  oprot.writeListBegin(TType.STRING, len(self.slices))
1152
- for iter212 in self.slices:
1153
- oprot.writeString(iter212.encode('utf-8') if sys.version_info[0] == 2 else iter212)
1304
+ for iter221 in self.slices:
1305
+ oprot.writeString(iter221.encode('utf-8') if sys.version_info[0] == 2 else iter221)
1154
1306
  oprot.writeListEnd()
1155
1307
  oprot.writeFieldEnd()
1156
1308
  if self.derivations is not None:
1157
1309
  oprot.writeFieldBegin('derivations', TType.MAP, 2)
1158
1310
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.derivations))
1159
- for kiter213, viter214 in self.derivations.items():
1160
- oprot.writeString(kiter213.encode('utf-8') if sys.version_info[0] == 2 else kiter213)
1161
- oprot.writeString(viter214.encode('utf-8') if sys.version_info[0] == 2 else viter214)
1311
+ for kiter222, viter223 in self.derivations.items():
1312
+ oprot.writeString(kiter222.encode('utf-8') if sys.version_info[0] == 2 else kiter222)
1313
+ oprot.writeString(viter223.encode('utf-8') if sys.version_info[0] == 2 else viter223)
1162
1314
  oprot.writeMapEnd()
1163
1315
  oprot.writeFieldEnd()
1164
1316
  if self.columnCardinalityHints is not None:
1165
1317
  oprot.writeFieldBegin('columnCardinalityHints', TType.MAP, 3)
1166
1318
  oprot.writeMapBegin(TType.STRING, TType.I32, len(self.columnCardinalityHints))
1167
- for kiter215, viter216 in self.columnCardinalityHints.items():
1168
- oprot.writeString(kiter215.encode('utf-8') if sys.version_info[0] == 2 else kiter215)
1169
- oprot.writeI32(viter216)
1319
+ for kiter224, viter225 in self.columnCardinalityHints.items():
1320
+ oprot.writeString(kiter224.encode('utf-8') if sys.version_info[0] == 2 else kiter224)
1321
+ oprot.writeI32(viter225)
1170
1322
  oprot.writeMapEnd()
1171
1323
  oprot.writeFieldEnd()
1172
1324
  if self.tileSize is not None:
@@ -1176,8 +1328,8 @@ class DriftSpec(object):
1176
1328
  if self.lookbackWindows is not None:
1177
1329
  oprot.writeFieldBegin('lookbackWindows', TType.LIST, 5)
1178
1330
  oprot.writeListBegin(TType.STRUCT, len(self.lookbackWindows))
1179
- for iter217 in self.lookbackWindows:
1180
- iter217.write(oprot)
1331
+ for iter226 in self.lookbackWindows:
1332
+ iter226.write(oprot)
1181
1333
  oprot.writeListEnd()
1182
1334
  oprot.writeFieldEnd()
1183
1335
  if self.driftMetric is not None:
@@ -1346,11 +1498,11 @@ class JoinDriftResponse(object):
1346
1498
  if fid == 1:
1347
1499
  if ftype == TType.LIST:
1348
1500
  self.driftSeries = []
1349
- (_etype221, _size218) = iprot.readListBegin()
1350
- for _i222 in range(_size218):
1351
- _elem223 = TileDriftSeries()
1352
- _elem223.read(iprot)
1353
- self.driftSeries.append(_elem223)
1501
+ (_etype230, _size227) = iprot.readListBegin()
1502
+ for _i231 in range(_size227):
1503
+ _elem232 = TileDriftSeries()
1504
+ _elem232.read(iprot)
1505
+ self.driftSeries.append(_elem232)
1354
1506
  iprot.readListEnd()
1355
1507
  else:
1356
1508
  iprot.skip(ftype)
@@ -1368,8 +1520,8 @@ class JoinDriftResponse(object):
1368
1520
  if self.driftSeries is not None:
1369
1521
  oprot.writeFieldBegin('driftSeries', TType.LIST, 1)
1370
1522
  oprot.writeListBegin(TType.STRUCT, len(self.driftSeries))
1371
- for iter224 in self.driftSeries:
1372
- iter224.write(oprot)
1523
+ for iter233 in self.driftSeries:
1524
+ iter233.write(oprot)
1373
1525
  oprot.writeListEnd()
1374
1526
  oprot.writeFieldEnd()
1375
1527
  oprot.writeFieldStop()
@@ -1501,8 +1653,8 @@ class JoinSummaryRequest(object):
1501
1653
 
1502
1654
  def __ne__(self, other):
1503
1655
  return not (self == other)
1504
- all_structs.append(TileKey)
1505
- TileKey.thrift_spec = (
1656
+ all_structs.append(TileSummaryKey)
1657
+ TileSummaryKey.thrift_spec = (
1506
1658
  None, # 0
1507
1659
  (1, TType.STRING, 'column', 'UTF8', None, ), # 1
1508
1660
  (2, TType.STRING, 'slice', 'UTF8', None, ), # 2
@@ -1529,6 +1681,17 @@ TileSeriesKey.thrift_spec = (
1529
1681
  (3, TType.STRING, 'groupName', 'UTF8', None, ), # 3
1530
1682
  (4, TType.STRING, 'nodeName', 'UTF8', None, ), # 4
1531
1683
  )
1684
+ all_structs.append(NullCounts)
1685
+ NullCounts.thrift_spec = (
1686
+ None, # 0
1687
+ (1, TType.MAP, 'nullCounts', (TType.I32, None, TType.I64, None, False), None, ), # 1
1688
+ (2, TType.I64, 'rowCount', None, None, ), # 2
1689
+ )
1690
+ all_structs.append(TileStats)
1691
+ TileStats.thrift_spec = (
1692
+ None, # 0
1693
+ (1, TType.STRUCT, 'nullCounts', [NullCounts, None], None, ), # 1
1694
+ )
1532
1695
  all_structs.append(TileSummarySeries)
1533
1696
  TileSummarySeries.thrift_spec = (
1534
1697
  None, # 0
@@ -1831,7 +1994,7 @@ TileSummarySeries.thrift_spec = (
1831
1994
  None, # 297
1832
1995
  None, # 298
1833
1996
  None, # 299
1834
- (300, TType.STRUCT, 'key', [TileSeriesKey, None], None, ), # 300
1997
+ (300, TType.STRUCT, 'key', [TileSummaryKey, None], None, ), # 300
1835
1998
  )
1836
1999
  all_structs.append(TileDrift)
1837
2000
  TileDrift.thrift_spec = (
@@ -2155,8 +2318,8 @@ DriftSpec.thrift_spec = (
2155
2318
  (1, TType.LIST, 'slices', (TType.STRING, 'UTF8', False), None, ), # 1
2156
2319
  (2, TType.MAP, 'derivations', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2
2157
2320
  (3, TType.MAP, 'columnCardinalityHints', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 3
2158
- (4, TType.STRUCT, 'tileSize', [ai.chronon.api.common.ttypes.Window, None], None, ), # 4
2159
- (5, TType.LIST, 'lookbackWindows', (TType.STRUCT, [ai.chronon.api.common.ttypes.Window, None], False), None, ), # 5
2321
+ (4, TType.STRUCT, 'tileSize', [gen_thrift.common.ttypes.Window, None], None, ), # 4
2322
+ (5, TType.LIST, 'lookbackWindows', (TType.STRUCT, [gen_thrift.common.ttypes.Window, None], False), None, ), # 5
2160
2323
  (6, TType.I32, 'driftMetric', None, 0, ), # 6
2161
2324
  )
2162
2325
  all_structs.append(JoinDriftRequest)