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,8 +12,8 @@ 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
16
- import ai.chronon.observability.ttypes
15
+ import gen_thrift.common.ttypes
16
+ import gen_thrift.observability.ttypes
17
17
 
18
18
  from thrift.transport import TTransport
19
19
  all_structs = []
@@ -121,6 +121,27 @@ class EngineType(object):
121
121
  }
122
122
 
123
123
 
124
+ class ConfType(object):
125
+ GROUP_BY = 0
126
+ JOIN = 1
127
+ STAGING_QUERY = 2
128
+ MODEL = 3
129
+
130
+ _VALUES_TO_NAMES = {
131
+ 0: "GROUP_BY",
132
+ 1: "JOIN",
133
+ 2: "STAGING_QUERY",
134
+ 3: "MODEL",
135
+ }
136
+
137
+ _NAMES_TO_VALUES = {
138
+ "GROUP_BY": 0,
139
+ "JOIN": 1,
140
+ "STAGING_QUERY": 2,
141
+ "MODEL": 3,
142
+ }
143
+
144
+
124
145
  class DataKind(object):
125
146
  BOOLEAN = 0
126
147
  BYTE = 1
@@ -336,13 +357,13 @@ class Query(object):
336
357
  iprot.skip(ftype)
337
358
  elif fid == 22:
338
359
  if ftype == TType.STRUCT:
339
- self.partitionInterval = ai.chronon.api.common.ttypes.Window()
360
+ self.partitionInterval = gen_thrift.common.ttypes.Window()
340
361
  self.partitionInterval.read(iprot)
341
362
  else:
342
363
  iprot.skip(ftype)
343
364
  elif fid == 23:
344
365
  if ftype == TType.STRUCT:
345
- self.partitionLag = ai.chronon.api.common.ttypes.Window()
366
+ self.partitionLag = gen_thrift.common.ttypes.Window()
346
367
  self.partitionLag.read(iprot)
347
368
  else:
348
369
  iprot.skip(ftype)
@@ -472,8 +493,6 @@ class StagingQuery(object):
472
493
 
473
494
  - setups: Spark SQL setup statements. Used typically to register UDFs.
474
495
 
475
- - partitionColumn: Only needed for `max_date` template
476
-
477
496
  - engineType: By default, spark is the compute engine. You can specify an override (eg. bigquery, etc.)
478
497
 
479
498
  - tableDependencies
@@ -483,12 +502,11 @@ class StagingQuery(object):
483
502
  thrift_spec = None
484
503
 
485
504
 
486
- def __init__(self, metaData = None, query = None, startPartition = None, setups = None, partitionColumn = None, engineType = None, tableDependencies = None, recomputeDays = None,):
505
+ def __init__(self, metaData = None, query = None, startPartition = None, setups = None, engineType = None, tableDependencies = None, recomputeDays = None,):
487
506
  self.metaData = metaData
488
507
  self.query = query
489
508
  self.startPartition = startPartition
490
509
  self.setups = setups
491
- self.partitionColumn = partitionColumn
492
510
  self.engineType = engineType
493
511
  self.tableDependencies = tableDependencies
494
512
  self.recomputeDays = recomputeDays
@@ -529,21 +547,16 @@ class StagingQuery(object):
529
547
  else:
530
548
  iprot.skip(ftype)
531
549
  elif fid == 5:
532
- if ftype == TType.STRING:
533
- self.partitionColumn = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
534
- else:
535
- iprot.skip(ftype)
536
- elif fid == 6:
537
550
  if ftype == TType.I32:
538
551
  self.engineType = iprot.readI32()
539
552
  else:
540
553
  iprot.skip(ftype)
541
- elif fid == 7:
554
+ elif fid == 6:
542
555
  if ftype == TType.LIST:
543
556
  self.tableDependencies = []
544
557
  (_etype39, _size36) = iprot.readListBegin()
545
558
  for _i40 in range(_size36):
546
- _elem41 = ai.chronon.api.common.ttypes.TableDependency()
559
+ _elem41 = gen_thrift.common.ttypes.TableDependency()
547
560
  _elem41.read(iprot)
548
561
  self.tableDependencies.append(_elem41)
549
562
  iprot.readListEnd()
@@ -584,16 +597,12 @@ class StagingQuery(object):
584
597
  oprot.writeString(iter42.encode('utf-8') if sys.version_info[0] == 2 else iter42)
585
598
  oprot.writeListEnd()
586
599
  oprot.writeFieldEnd()
587
- if self.partitionColumn is not None:
588
- oprot.writeFieldBegin('partitionColumn', TType.STRING, 5)
589
- oprot.writeString(self.partitionColumn.encode('utf-8') if sys.version_info[0] == 2 else self.partitionColumn)
590
- oprot.writeFieldEnd()
591
600
  if self.engineType is not None:
592
- oprot.writeFieldBegin('engineType', TType.I32, 6)
601
+ oprot.writeFieldBegin('engineType', TType.I32, 5)
593
602
  oprot.writeI32(self.engineType)
594
603
  oprot.writeFieldEnd()
595
604
  if self.tableDependencies is not None:
596
- oprot.writeFieldBegin('tableDependencies', TType.LIST, 7)
605
+ oprot.writeFieldBegin('tableDependencies', TType.LIST, 6)
597
606
  oprot.writeListBegin(TType.STRUCT, len(self.tableDependencies))
598
607
  for iter43 in self.tableDependencies:
599
608
  iter43.write(oprot)
@@ -1137,7 +1146,7 @@ class Aggregation(object):
1137
1146
  self.windows = []
1138
1147
  (_etype54, _size51) = iprot.readListBegin()
1139
1148
  for _i55 in range(_size51):
1140
- _elem56 = ai.chronon.api.common.ttypes.Window()
1149
+ _elem56 = gen_thrift.common.ttypes.Window()
1141
1150
  _elem56.read(iprot)
1142
1151
  self.windows.append(_elem56)
1143
1152
  iprot.readListEnd()
@@ -1264,7 +1273,7 @@ class AggregationPart(object):
1264
1273
  iprot.skip(ftype)
1265
1274
  elif fid == 4:
1266
1275
  if ftype == TType.STRUCT:
1267
- self.window = ai.chronon.api.common.ttypes.Window()
1276
+ self.window = gen_thrift.common.ttypes.Window()
1268
1277
  self.window.read(iprot)
1269
1278
  else:
1270
1279
  iprot.skip(ftype)
@@ -1342,6 +1351,7 @@ class MetaData(object):
1342
1351
  - tableProperties
1343
1352
  - tags
1344
1353
  - columnTags
1354
+ - columnHashes
1345
1355
  - online
1346
1356
  - production
1347
1357
  - sourceFile
@@ -1356,7 +1366,7 @@ class MetaData(object):
1356
1366
  thrift_spec = None
1357
1367
 
1358
1368
 
1359
- def __init__(self, name = None, team = None, version = None, outputNamespace = None, additionalOutputPartitionColumns = None, tableProperties = None, tags = None, columnTags = None, online = None, production = None, sourceFile = None, customJson = None, consistencyCheck = None, samplePercent = None, consistencySamplePercent = None, driftSpec = None, executionInfo = None,):
1369
+ def __init__(self, name = None, team = None, version = None, outputNamespace = None, additionalOutputPartitionColumns = None, tableProperties = None, tags = None, columnTags = None, columnHashes = None, online = None, production = None, sourceFile = None, customJson = None, consistencyCheck = None, samplePercent = None, consistencySamplePercent = None, driftSpec = None, executionInfo = None,):
1360
1370
  self.name = name
1361
1371
  self.team = team
1362
1372
  self.version = version
@@ -1365,6 +1375,7 @@ class MetaData(object):
1365
1375
  self.tableProperties = tableProperties
1366
1376
  self.tags = tags
1367
1377
  self.columnTags = columnTags
1378
+ self.columnHashes = columnHashes
1368
1379
  self.online = online
1369
1380
  self.production = production
1370
1381
  self.sourceFile = sourceFile
@@ -1453,6 +1464,17 @@ class MetaData(object):
1453
1464
  iprot.readMapEnd()
1454
1465
  else:
1455
1466
  iprot.skip(ftype)
1467
+ elif fid == 22:
1468
+ if ftype == TType.MAP:
1469
+ self.columnHashes = {}
1470
+ (_ktype111, _vtype112, _size110) = iprot.readMapBegin()
1471
+ for _i114 in range(_size110):
1472
+ _key115 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1473
+ _val116 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1474
+ self.columnHashes[_key115] = _val116
1475
+ iprot.readMapEnd()
1476
+ else:
1477
+ iprot.skip(ftype)
1456
1478
  elif fid == 100:
1457
1479
  if ftype == TType.BOOL:
1458
1480
  self.online = iprot.readBool()
@@ -1490,13 +1512,13 @@ class MetaData(object):
1490
1512
  iprot.skip(ftype)
1491
1513
  elif fid == 203:
1492
1514
  if ftype == TType.STRUCT:
1493
- self.driftSpec = ai.chronon.observability.ttypes.DriftSpec()
1515
+ self.driftSpec = gen_thrift.observability.ttypes.DriftSpec()
1494
1516
  self.driftSpec.read(iprot)
1495
1517
  else:
1496
1518
  iprot.skip(ftype)
1497
1519
  elif fid == 204:
1498
1520
  if ftype == TType.STRUCT:
1499
- self.executionInfo = ai.chronon.api.common.ttypes.ExecutionInfo()
1521
+ self.executionInfo = gen_thrift.common.ttypes.ExecutionInfo()
1500
1522
  self.executionInfo.read(iprot)
1501
1523
  else:
1502
1524
  iprot.skip(ftype)
@@ -1530,38 +1552,46 @@ class MetaData(object):
1530
1552
  if self.additionalOutputPartitionColumns is not None:
1531
1553
  oprot.writeFieldBegin('additionalOutputPartitionColumns', TType.LIST, 5)
1532
1554
  oprot.writeListBegin(TType.STRING, len(self.additionalOutputPartitionColumns))
1533
- for iter110 in self.additionalOutputPartitionColumns:
1534
- oprot.writeString(iter110.encode('utf-8') if sys.version_info[0] == 2 else iter110)
1555
+ for iter117 in self.additionalOutputPartitionColumns:
1556
+ oprot.writeString(iter117.encode('utf-8') if sys.version_info[0] == 2 else iter117)
1535
1557
  oprot.writeListEnd()
1536
1558
  oprot.writeFieldEnd()
1537
1559
  if self.tableProperties is not None:
1538
1560
  oprot.writeFieldBegin('tableProperties', TType.MAP, 6)
1539
1561
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.tableProperties))
1540
- for kiter111, viter112 in self.tableProperties.items():
1541
- oprot.writeString(kiter111.encode('utf-8') if sys.version_info[0] == 2 else kiter111)
1542
- oprot.writeString(viter112.encode('utf-8') if sys.version_info[0] == 2 else viter112)
1562
+ for kiter118, viter119 in self.tableProperties.items():
1563
+ oprot.writeString(kiter118.encode('utf-8') if sys.version_info[0] == 2 else kiter118)
1564
+ oprot.writeString(viter119.encode('utf-8') if sys.version_info[0] == 2 else viter119)
1543
1565
  oprot.writeMapEnd()
1544
1566
  oprot.writeFieldEnd()
1545
1567
  if self.tags is not None:
1546
1568
  oprot.writeFieldBegin('tags', TType.MAP, 20)
1547
1569
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.tags))
1548
- for kiter113, viter114 in self.tags.items():
1549
- oprot.writeString(kiter113.encode('utf-8') if sys.version_info[0] == 2 else kiter113)
1550
- oprot.writeString(viter114.encode('utf-8') if sys.version_info[0] == 2 else viter114)
1570
+ for kiter120, viter121 in self.tags.items():
1571
+ oprot.writeString(kiter120.encode('utf-8') if sys.version_info[0] == 2 else kiter120)
1572
+ oprot.writeString(viter121.encode('utf-8') if sys.version_info[0] == 2 else viter121)
1551
1573
  oprot.writeMapEnd()
1552
1574
  oprot.writeFieldEnd()
1553
1575
  if self.columnTags is not None:
1554
1576
  oprot.writeFieldBegin('columnTags', TType.MAP, 21)
1555
1577
  oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.columnTags))
1556
- for kiter115, viter116 in self.columnTags.items():
1557
- oprot.writeString(kiter115.encode('utf-8') if sys.version_info[0] == 2 else kiter115)
1558
- oprot.writeMapBegin(TType.STRING, TType.STRING, len(viter116))
1559
- for kiter117, viter118 in viter116.items():
1560
- oprot.writeString(kiter117.encode('utf-8') if sys.version_info[0] == 2 else kiter117)
1561
- oprot.writeString(viter118.encode('utf-8') if sys.version_info[0] == 2 else viter118)
1578
+ for kiter122, viter123 in self.columnTags.items():
1579
+ oprot.writeString(kiter122.encode('utf-8') if sys.version_info[0] == 2 else kiter122)
1580
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(viter123))
1581
+ for kiter124, viter125 in viter123.items():
1582
+ oprot.writeString(kiter124.encode('utf-8') if sys.version_info[0] == 2 else kiter124)
1583
+ oprot.writeString(viter125.encode('utf-8') if sys.version_info[0] == 2 else viter125)
1562
1584
  oprot.writeMapEnd()
1563
1585
  oprot.writeMapEnd()
1564
1586
  oprot.writeFieldEnd()
1587
+ if self.columnHashes is not None:
1588
+ oprot.writeFieldBegin('columnHashes', TType.MAP, 22)
1589
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.columnHashes))
1590
+ for kiter126, viter127 in self.columnHashes.items():
1591
+ oprot.writeString(kiter126.encode('utf-8') if sys.version_info[0] == 2 else kiter126)
1592
+ oprot.writeString(viter127.encode('utf-8') if sys.version_info[0] == 2 else viter127)
1593
+ oprot.writeMapEnd()
1594
+ oprot.writeFieldEnd()
1565
1595
  if self.online is not None:
1566
1596
  oprot.writeFieldBegin('online', TType.BOOL, 100)
1567
1597
  oprot.writeBool(self.online)
@@ -1616,6 +1646,98 @@ class MetaData(object):
1616
1646
  return not (self == other)
1617
1647
 
1618
1648
 
1649
+ class Conf(object):
1650
+ """
1651
+ Attributes:
1652
+ - name
1653
+ - hash
1654
+ - contents
1655
+ - confType
1656
+
1657
+ """
1658
+ thrift_spec = None
1659
+
1660
+
1661
+ def __init__(self, name = None, hash = None, contents = None, confType = None,):
1662
+ self.name = name
1663
+ self.hash = hash
1664
+ self.contents = contents
1665
+ self.confType = confType
1666
+
1667
+ def read(self, iprot):
1668
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1669
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1670
+ return
1671
+ iprot.readStructBegin()
1672
+ while True:
1673
+ (fname, ftype, fid) = iprot.readFieldBegin()
1674
+ if ftype == TType.STOP:
1675
+ break
1676
+ if fid == 1:
1677
+ if ftype == TType.STRING:
1678
+ self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1679
+ else:
1680
+ iprot.skip(ftype)
1681
+ elif fid == 2:
1682
+ if ftype == TType.STRING:
1683
+ self.hash = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1684
+ else:
1685
+ iprot.skip(ftype)
1686
+ elif fid == 3:
1687
+ if ftype == TType.STRING:
1688
+ self.contents = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1689
+ else:
1690
+ iprot.skip(ftype)
1691
+ elif fid == 4:
1692
+ if ftype == TType.I32:
1693
+ self.confType = iprot.readI32()
1694
+ else:
1695
+ iprot.skip(ftype)
1696
+ else:
1697
+ iprot.skip(ftype)
1698
+ iprot.readFieldEnd()
1699
+ iprot.readStructEnd()
1700
+
1701
+ def write(self, oprot):
1702
+ self.validate()
1703
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1704
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1705
+ return
1706
+ oprot.writeStructBegin('Conf')
1707
+ if self.name is not None:
1708
+ oprot.writeFieldBegin('name', TType.STRING, 1)
1709
+ oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
1710
+ oprot.writeFieldEnd()
1711
+ if self.hash is not None:
1712
+ oprot.writeFieldBegin('hash', TType.STRING, 2)
1713
+ oprot.writeString(self.hash.encode('utf-8') if sys.version_info[0] == 2 else self.hash)
1714
+ oprot.writeFieldEnd()
1715
+ if self.contents is not None:
1716
+ oprot.writeFieldBegin('contents', TType.STRING, 3)
1717
+ oprot.writeString(self.contents.encode('utf-8') if sys.version_info[0] == 2 else self.contents)
1718
+ oprot.writeFieldEnd()
1719
+ if self.confType is not None:
1720
+ oprot.writeFieldBegin('confType', TType.I32, 4)
1721
+ oprot.writeI32(self.confType)
1722
+ oprot.writeFieldEnd()
1723
+ oprot.writeFieldStop()
1724
+ oprot.writeStructEnd()
1725
+
1726
+ def validate(self):
1727
+ return
1728
+
1729
+ def __repr__(self):
1730
+ L = ['%s=%r' % (key, value)
1731
+ for key, value in self.__dict__.items()]
1732
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1733
+
1734
+ def __eq__(self, other):
1735
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1736
+
1737
+ def __ne__(self, other):
1738
+ return not (self == other)
1739
+
1740
+
1619
1741
  class GroupBy(object):
1620
1742
  """
1621
1743
  Attributes:
@@ -1658,32 +1780,32 @@ class GroupBy(object):
1658
1780
  elif fid == 2:
1659
1781
  if ftype == TType.LIST:
1660
1782
  self.sources = []
1661
- (_etype122, _size119) = iprot.readListBegin()
1662
- for _i123 in range(_size119):
1663
- _elem124 = Source()
1664
- _elem124.read(iprot)
1665
- self.sources.append(_elem124)
1783
+ (_etype131, _size128) = iprot.readListBegin()
1784
+ for _i132 in range(_size128):
1785
+ _elem133 = Source()
1786
+ _elem133.read(iprot)
1787
+ self.sources.append(_elem133)
1666
1788
  iprot.readListEnd()
1667
1789
  else:
1668
1790
  iprot.skip(ftype)
1669
1791
  elif fid == 3:
1670
1792
  if ftype == TType.LIST:
1671
1793
  self.keyColumns = []
1672
- (_etype128, _size125) = iprot.readListBegin()
1673
- for _i129 in range(_size125):
1674
- _elem130 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1675
- self.keyColumns.append(_elem130)
1794
+ (_etype137, _size134) = iprot.readListBegin()
1795
+ for _i138 in range(_size134):
1796
+ _elem139 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1797
+ self.keyColumns.append(_elem139)
1676
1798
  iprot.readListEnd()
1677
1799
  else:
1678
1800
  iprot.skip(ftype)
1679
1801
  elif fid == 4:
1680
1802
  if ftype == TType.LIST:
1681
1803
  self.aggregations = []
1682
- (_etype134, _size131) = iprot.readListBegin()
1683
- for _i135 in range(_size131):
1684
- _elem136 = Aggregation()
1685
- _elem136.read(iprot)
1686
- self.aggregations.append(_elem136)
1804
+ (_etype143, _size140) = iprot.readListBegin()
1805
+ for _i144 in range(_size140):
1806
+ _elem145 = Aggregation()
1807
+ _elem145.read(iprot)
1808
+ self.aggregations.append(_elem145)
1687
1809
  iprot.readListEnd()
1688
1810
  else:
1689
1811
  iprot.skip(ftype)
@@ -1700,11 +1822,11 @@ class GroupBy(object):
1700
1822
  elif fid == 7:
1701
1823
  if ftype == TType.LIST:
1702
1824
  self.derivations = []
1703
- (_etype140, _size137) = iprot.readListBegin()
1704
- for _i141 in range(_size137):
1705
- _elem142 = Derivation()
1706
- _elem142.read(iprot)
1707
- self.derivations.append(_elem142)
1825
+ (_etype149, _size146) = iprot.readListBegin()
1826
+ for _i150 in range(_size146):
1827
+ _elem151 = Derivation()
1828
+ _elem151.read(iprot)
1829
+ self.derivations.append(_elem151)
1708
1830
  iprot.readListEnd()
1709
1831
  else:
1710
1832
  iprot.skip(ftype)
@@ -1726,22 +1848,22 @@ class GroupBy(object):
1726
1848
  if self.sources is not None:
1727
1849
  oprot.writeFieldBegin('sources', TType.LIST, 2)
1728
1850
  oprot.writeListBegin(TType.STRUCT, len(self.sources))
1729
- for iter143 in self.sources:
1730
- iter143.write(oprot)
1851
+ for iter152 in self.sources:
1852
+ iter152.write(oprot)
1731
1853
  oprot.writeListEnd()
1732
1854
  oprot.writeFieldEnd()
1733
1855
  if self.keyColumns is not None:
1734
1856
  oprot.writeFieldBegin('keyColumns', TType.LIST, 3)
1735
1857
  oprot.writeListBegin(TType.STRING, len(self.keyColumns))
1736
- for iter144 in self.keyColumns:
1737
- oprot.writeString(iter144.encode('utf-8') if sys.version_info[0] == 2 else iter144)
1858
+ for iter153 in self.keyColumns:
1859
+ oprot.writeString(iter153.encode('utf-8') if sys.version_info[0] == 2 else iter153)
1738
1860
  oprot.writeListEnd()
1739
1861
  oprot.writeFieldEnd()
1740
1862
  if self.aggregations is not None:
1741
1863
  oprot.writeFieldBegin('aggregations', TType.LIST, 4)
1742
1864
  oprot.writeListBegin(TType.STRUCT, len(self.aggregations))
1743
- for iter145 in self.aggregations:
1744
- iter145.write(oprot)
1865
+ for iter154 in self.aggregations:
1866
+ iter154.write(oprot)
1745
1867
  oprot.writeListEnd()
1746
1868
  oprot.writeFieldEnd()
1747
1869
  if self.accuracy is not None:
@@ -1755,8 +1877,8 @@ class GroupBy(object):
1755
1877
  if self.derivations is not None:
1756
1878
  oprot.writeFieldBegin('derivations', TType.LIST, 7)
1757
1879
  oprot.writeListBegin(TType.STRUCT, len(self.derivations))
1758
- for iter146 in self.derivations:
1759
- iter146.write(oprot)
1880
+ for iter155 in self.derivations:
1881
+ iter155.write(oprot)
1760
1882
  oprot.writeListEnd()
1761
1883
  oprot.writeFieldEnd()
1762
1884
  oprot.writeFieldStop()
@@ -1813,11 +1935,11 @@ class JoinPart(object):
1813
1935
  elif fid == 2:
1814
1936
  if ftype == TType.MAP:
1815
1937
  self.keyMapping = {}
1816
- (_ktype148, _vtype149, _size147) = iprot.readMapBegin()
1817
- for _i151 in range(_size147):
1818
- _key152 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1819
- _val153 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1820
- self.keyMapping[_key152] = _val153
1938
+ (_ktype157, _vtype158, _size156) = iprot.readMapBegin()
1939
+ for _i160 in range(_size156):
1940
+ _key161 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1941
+ _val162 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1942
+ self.keyMapping[_key161] = _val162
1821
1943
  iprot.readMapEnd()
1822
1944
  else:
1823
1945
  iprot.skip(ftype)
@@ -1849,9 +1971,9 @@ class JoinPart(object):
1849
1971
  if self.keyMapping is not None:
1850
1972
  oprot.writeFieldBegin('keyMapping', TType.MAP, 2)
1851
1973
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.keyMapping))
1852
- for kiter154, viter155 in self.keyMapping.items():
1853
- oprot.writeString(kiter154.encode('utf-8') if sys.version_info[0] == 2 else kiter154)
1854
- oprot.writeString(viter155.encode('utf-8') if sys.version_info[0] == 2 else viter155)
1974
+ for kiter163, viter164 in self.keyMapping.items():
1975
+ oprot.writeString(kiter163.encode('utf-8') if sys.version_info[0] == 2 else kiter163)
1976
+ oprot.writeString(viter164.encode('utf-8') if sys.version_info[0] == 2 else viter164)
1855
1977
  oprot.writeMapEnd()
1856
1978
  oprot.writeFieldEnd()
1857
1979
  if self.prefix is not None:
@@ -1914,11 +2036,11 @@ class ExternalPart(object):
1914
2036
  elif fid == 2:
1915
2037
  if ftype == TType.MAP:
1916
2038
  self.keyMapping = {}
1917
- (_ktype157, _vtype158, _size156) = iprot.readMapBegin()
1918
- for _i160 in range(_size156):
1919
- _key161 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1920
- _val162 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1921
- self.keyMapping[_key161] = _val162
2039
+ (_ktype166, _vtype167, _size165) = iprot.readMapBegin()
2040
+ for _i169 in range(_size165):
2041
+ _key170 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2042
+ _val171 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2043
+ self.keyMapping[_key170] = _val171
1922
2044
  iprot.readMapEnd()
1923
2045
  else:
1924
2046
  iprot.skip(ftype)
@@ -1945,9 +2067,9 @@ class ExternalPart(object):
1945
2067
  if self.keyMapping is not None:
1946
2068
  oprot.writeFieldBegin('keyMapping', TType.MAP, 2)
1947
2069
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.keyMapping))
1948
- for kiter163, viter164 in self.keyMapping.items():
1949
- oprot.writeString(kiter163.encode('utf-8') if sys.version_info[0] == 2 else kiter163)
1950
- oprot.writeString(viter164.encode('utf-8') if sys.version_info[0] == 2 else viter164)
2070
+ for kiter172, viter173 in self.keyMapping.items():
2071
+ oprot.writeString(kiter172.encode('utf-8') if sys.version_info[0] == 2 else kiter172)
2072
+ oprot.writeString(viter173.encode('utf-8') if sys.version_info[0] == 2 else viter173)
1951
2073
  oprot.writeMapEnd()
1952
2074
  oprot.writeFieldEnd()
1953
2075
  if self.prefix is not None:
@@ -2109,38 +2231,38 @@ class Join(object):
2109
2231
  elif fid == 3:
2110
2232
  if ftype == TType.LIST:
2111
2233
  self.joinParts = []
2112
- (_etype168, _size165) = iprot.readListBegin()
2113
- for _i169 in range(_size165):
2114
- _elem170 = JoinPart()
2115
- _elem170.read(iprot)
2116
- self.joinParts.append(_elem170)
2234
+ (_etype177, _size174) = iprot.readListBegin()
2235
+ for _i178 in range(_size174):
2236
+ _elem179 = JoinPart()
2237
+ _elem179.read(iprot)
2238
+ self.joinParts.append(_elem179)
2117
2239
  iprot.readListEnd()
2118
2240
  else:
2119
2241
  iprot.skip(ftype)
2120
2242
  elif fid == 4:
2121
2243
  if ftype == TType.MAP:
2122
2244
  self.skewKeys = {}
2123
- (_ktype172, _vtype173, _size171) = iprot.readMapBegin()
2124
- for _i175 in range(_size171):
2125
- _key176 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2126
- _val177 = []
2127
- (_etype181, _size178) = iprot.readListBegin()
2128
- for _i182 in range(_size178):
2129
- _elem183 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2130
- _val177.append(_elem183)
2245
+ (_ktype181, _vtype182, _size180) = iprot.readMapBegin()
2246
+ for _i184 in range(_size180):
2247
+ _key185 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2248
+ _val186 = []
2249
+ (_etype190, _size187) = iprot.readListBegin()
2250
+ for _i191 in range(_size187):
2251
+ _elem192 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2252
+ _val186.append(_elem192)
2131
2253
  iprot.readListEnd()
2132
- self.skewKeys[_key176] = _val177
2254
+ self.skewKeys[_key185] = _val186
2133
2255
  iprot.readMapEnd()
2134
2256
  else:
2135
2257
  iprot.skip(ftype)
2136
2258
  elif fid == 5:
2137
2259
  if ftype == TType.LIST:
2138
2260
  self.onlineExternalParts = []
2139
- (_etype187, _size184) = iprot.readListBegin()
2140
- for _i188 in range(_size184):
2141
- _elem189 = ExternalPart()
2142
- _elem189.read(iprot)
2143
- self.onlineExternalParts.append(_elem189)
2261
+ (_etype196, _size193) = iprot.readListBegin()
2262
+ for _i197 in range(_size193):
2263
+ _elem198 = ExternalPart()
2264
+ _elem198.read(iprot)
2265
+ self.onlineExternalParts.append(_elem198)
2144
2266
  iprot.readListEnd()
2145
2267
  else:
2146
2268
  iprot.skip(ftype)
@@ -2153,32 +2275,32 @@ class Join(object):
2153
2275
  elif fid == 7:
2154
2276
  if ftype == TType.LIST:
2155
2277
  self.bootstrapParts = []
2156
- (_etype193, _size190) = iprot.readListBegin()
2157
- for _i194 in range(_size190):
2158
- _elem195 = BootstrapPart()
2159
- _elem195.read(iprot)
2160
- self.bootstrapParts.append(_elem195)
2278
+ (_etype202, _size199) = iprot.readListBegin()
2279
+ for _i203 in range(_size199):
2280
+ _elem204 = BootstrapPart()
2281
+ _elem204.read(iprot)
2282
+ self.bootstrapParts.append(_elem204)
2161
2283
  iprot.readListEnd()
2162
2284
  else:
2163
2285
  iprot.skip(ftype)
2164
2286
  elif fid == 8:
2165
2287
  if ftype == TType.LIST:
2166
2288
  self.rowIds = []
2167
- (_etype199, _size196) = iprot.readListBegin()
2168
- for _i200 in range(_size196):
2169
- _elem201 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2170
- self.rowIds.append(_elem201)
2289
+ (_etype208, _size205) = iprot.readListBegin()
2290
+ for _i209 in range(_size205):
2291
+ _elem210 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2292
+ self.rowIds.append(_elem210)
2171
2293
  iprot.readListEnd()
2172
2294
  else:
2173
2295
  iprot.skip(ftype)
2174
2296
  elif fid == 9:
2175
2297
  if ftype == TType.LIST:
2176
2298
  self.derivations = []
2177
- (_etype205, _size202) = iprot.readListBegin()
2178
- for _i206 in range(_size202):
2179
- _elem207 = Derivation()
2180
- _elem207.read(iprot)
2181
- self.derivations.append(_elem207)
2299
+ (_etype214, _size211) = iprot.readListBegin()
2300
+ for _i215 in range(_size211):
2301
+ _elem216 = Derivation()
2302
+ _elem216.read(iprot)
2303
+ self.derivations.append(_elem216)
2182
2304
  iprot.readListEnd()
2183
2305
  else:
2184
2306
  iprot.skip(ftype)
@@ -2209,26 +2331,26 @@ class Join(object):
2209
2331
  if self.joinParts is not None:
2210
2332
  oprot.writeFieldBegin('joinParts', TType.LIST, 3)
2211
2333
  oprot.writeListBegin(TType.STRUCT, len(self.joinParts))
2212
- for iter208 in self.joinParts:
2213
- iter208.write(oprot)
2334
+ for iter217 in self.joinParts:
2335
+ iter217.write(oprot)
2214
2336
  oprot.writeListEnd()
2215
2337
  oprot.writeFieldEnd()
2216
2338
  if self.skewKeys is not None:
2217
2339
  oprot.writeFieldBegin('skewKeys', TType.MAP, 4)
2218
2340
  oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.skewKeys))
2219
- for kiter209, viter210 in self.skewKeys.items():
2220
- oprot.writeString(kiter209.encode('utf-8') if sys.version_info[0] == 2 else kiter209)
2221
- oprot.writeListBegin(TType.STRING, len(viter210))
2222
- for iter211 in viter210:
2223
- oprot.writeString(iter211.encode('utf-8') if sys.version_info[0] == 2 else iter211)
2341
+ for kiter218, viter219 in self.skewKeys.items():
2342
+ oprot.writeString(kiter218.encode('utf-8') if sys.version_info[0] == 2 else kiter218)
2343
+ oprot.writeListBegin(TType.STRING, len(viter219))
2344
+ for iter220 in viter219:
2345
+ oprot.writeString(iter220.encode('utf-8') if sys.version_info[0] == 2 else iter220)
2224
2346
  oprot.writeListEnd()
2225
2347
  oprot.writeMapEnd()
2226
2348
  oprot.writeFieldEnd()
2227
2349
  if self.onlineExternalParts is not None:
2228
2350
  oprot.writeFieldBegin('onlineExternalParts', TType.LIST, 5)
2229
2351
  oprot.writeListBegin(TType.STRUCT, len(self.onlineExternalParts))
2230
- for iter212 in self.onlineExternalParts:
2231
- iter212.write(oprot)
2352
+ for iter221 in self.onlineExternalParts:
2353
+ iter221.write(oprot)
2232
2354
  oprot.writeListEnd()
2233
2355
  oprot.writeFieldEnd()
2234
2356
  if self.labelParts is not None:
@@ -2238,22 +2360,22 @@ class Join(object):
2238
2360
  if self.bootstrapParts is not None:
2239
2361
  oprot.writeFieldBegin('bootstrapParts', TType.LIST, 7)
2240
2362
  oprot.writeListBegin(TType.STRUCT, len(self.bootstrapParts))
2241
- for iter213 in self.bootstrapParts:
2242
- iter213.write(oprot)
2363
+ for iter222 in self.bootstrapParts:
2364
+ iter222.write(oprot)
2243
2365
  oprot.writeListEnd()
2244
2366
  oprot.writeFieldEnd()
2245
2367
  if self.rowIds is not None:
2246
2368
  oprot.writeFieldBegin('rowIds', TType.LIST, 8)
2247
2369
  oprot.writeListBegin(TType.STRING, len(self.rowIds))
2248
- for iter214 in self.rowIds:
2249
- oprot.writeString(iter214.encode('utf-8') if sys.version_info[0] == 2 else iter214)
2370
+ for iter223 in self.rowIds:
2371
+ oprot.writeString(iter223.encode('utf-8') if sys.version_info[0] == 2 else iter223)
2250
2372
  oprot.writeListEnd()
2251
2373
  oprot.writeFieldEnd()
2252
2374
  if self.derivations is not None:
2253
2375
  oprot.writeFieldBegin('derivations', TType.LIST, 9)
2254
2376
  oprot.writeListBegin(TType.STRUCT, len(self.derivations))
2255
- for iter215 in self.derivations:
2256
- iter215.write(oprot)
2377
+ for iter224 in self.derivations:
2378
+ iter224.write(oprot)
2257
2379
  oprot.writeListEnd()
2258
2380
  oprot.writeFieldEnd()
2259
2381
  if self.useLongNames is not None:
@@ -2325,10 +2447,10 @@ class BootstrapPart(object):
2325
2447
  elif fid == 4:
2326
2448
  if ftype == TType.LIST:
2327
2449
  self.keyColumns = []
2328
- (_etype219, _size216) = iprot.readListBegin()
2329
- for _i220 in range(_size216):
2330
- _elem221 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2331
- self.keyColumns.append(_elem221)
2450
+ (_etype228, _size225) = iprot.readListBegin()
2451
+ for _i229 in range(_size225):
2452
+ _elem230 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2453
+ self.keyColumns.append(_elem230)
2332
2454
  iprot.readListEnd()
2333
2455
  else:
2334
2456
  iprot.skip(ftype)
@@ -2358,8 +2480,8 @@ class BootstrapPart(object):
2358
2480
  if self.keyColumns is not None:
2359
2481
  oprot.writeFieldBegin('keyColumns', TType.LIST, 4)
2360
2482
  oprot.writeListBegin(TType.STRING, len(self.keyColumns))
2361
- for iter222 in self.keyColumns:
2362
- oprot.writeString(iter222.encode('utf-8') if sys.version_info[0] == 2 else iter222)
2483
+ for iter231 in self.keyColumns:
2484
+ oprot.writeString(iter231.encode('utf-8') if sys.version_info[0] == 2 else iter231)
2363
2485
  oprot.writeListEnd()
2364
2486
  oprot.writeFieldEnd()
2365
2487
  oprot.writeFieldStop()
@@ -2410,11 +2532,11 @@ class LabelParts(object):
2410
2532
  if fid == 1:
2411
2533
  if ftype == TType.LIST:
2412
2534
  self.labels = []
2413
- (_etype226, _size223) = iprot.readListBegin()
2414
- for _i227 in range(_size223):
2415
- _elem228 = JoinPart()
2416
- _elem228.read(iprot)
2417
- self.labels.append(_elem228)
2535
+ (_etype235, _size232) = iprot.readListBegin()
2536
+ for _i236 in range(_size232):
2537
+ _elem237 = JoinPart()
2538
+ _elem237.read(iprot)
2539
+ self.labels.append(_elem237)
2418
2540
  iprot.readListEnd()
2419
2541
  else:
2420
2542
  iprot.skip(ftype)
@@ -2448,8 +2570,8 @@ class LabelParts(object):
2448
2570
  if self.labels is not None:
2449
2571
  oprot.writeFieldBegin('labels', TType.LIST, 1)
2450
2572
  oprot.writeListBegin(TType.STRUCT, len(self.labels))
2451
- for iter229 in self.labels:
2452
- iter229.write(oprot)
2573
+ for iter238 in self.labels:
2574
+ iter238.write(oprot)
2453
2575
  oprot.writeListEnd()
2454
2576
  oprot.writeFieldEnd()
2455
2577
  if self.leftStartOffset is not None:
@@ -2701,11 +2823,11 @@ class TDataType(object):
2701
2823
  elif fid == 2:
2702
2824
  if ftype == TType.LIST:
2703
2825
  self.params = []
2704
- (_etype233, _size230) = iprot.readListBegin()
2705
- for _i234 in range(_size230):
2706
- _elem235 = DataField()
2707
- _elem235.read(iprot)
2708
- self.params.append(_elem235)
2826
+ (_etype242, _size239) = iprot.readListBegin()
2827
+ for _i243 in range(_size239):
2828
+ _elem244 = DataField()
2829
+ _elem244.read(iprot)
2830
+ self.params.append(_elem244)
2709
2831
  iprot.readListEnd()
2710
2832
  else:
2711
2833
  iprot.skip(ftype)
@@ -2732,8 +2854,8 @@ class TDataType(object):
2732
2854
  if self.params is not None:
2733
2855
  oprot.writeFieldBegin('params', TType.LIST, 2)
2734
2856
  oprot.writeListBegin(TType.STRUCT, len(self.params))
2735
- for iter236 in self.params:
2736
- iter236.write(oprot)
2857
+ for iter245 in self.params:
2858
+ iter245.write(oprot)
2737
2859
  oprot.writeListEnd()
2738
2860
  oprot.writeFieldEnd()
2739
2861
  if self.name is not None:
@@ -2794,10 +2916,10 @@ class DataSpec(object):
2794
2916
  elif fid == 2:
2795
2917
  if ftype == TType.LIST:
2796
2918
  self.partitionColumns = []
2797
- (_etype240, _size237) = iprot.readListBegin()
2798
- for _i241 in range(_size237):
2799
- _elem242 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2800
- self.partitionColumns.append(_elem242)
2919
+ (_etype249, _size246) = iprot.readListBegin()
2920
+ for _i250 in range(_size246):
2921
+ _elem251 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2922
+ self.partitionColumns.append(_elem251)
2801
2923
  iprot.readListEnd()
2802
2924
  else:
2803
2925
  iprot.skip(ftype)
@@ -2809,11 +2931,11 @@ class DataSpec(object):
2809
2931
  elif fid == 4:
2810
2932
  if ftype == TType.MAP:
2811
2933
  self.props = {}
2812
- (_ktype244, _vtype245, _size243) = iprot.readMapBegin()
2813
- for _i247 in range(_size243):
2814
- _key248 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2815
- _val249 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2816
- self.props[_key248] = _val249
2934
+ (_ktype253, _vtype254, _size252) = iprot.readMapBegin()
2935
+ for _i256 in range(_size252):
2936
+ _key257 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2937
+ _val258 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2938
+ self.props[_key257] = _val258
2817
2939
  iprot.readMapEnd()
2818
2940
  else:
2819
2941
  iprot.skip(ftype)
@@ -2835,8 +2957,8 @@ class DataSpec(object):
2835
2957
  if self.partitionColumns is not None:
2836
2958
  oprot.writeFieldBegin('partitionColumns', TType.LIST, 2)
2837
2959
  oprot.writeListBegin(TType.STRING, len(self.partitionColumns))
2838
- for iter250 in self.partitionColumns:
2839
- oprot.writeString(iter250.encode('utf-8') if sys.version_info[0] == 2 else iter250)
2960
+ for iter259 in self.partitionColumns:
2961
+ oprot.writeString(iter259.encode('utf-8') if sys.version_info[0] == 2 else iter259)
2840
2962
  oprot.writeListEnd()
2841
2963
  oprot.writeFieldEnd()
2842
2964
  if self.retentionDays is not None:
@@ -2846,9 +2968,9 @@ class DataSpec(object):
2846
2968
  if self.props is not None:
2847
2969
  oprot.writeFieldBegin('props', TType.MAP, 4)
2848
2970
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.props))
2849
- for kiter251, viter252 in self.props.items():
2850
- oprot.writeString(kiter251.encode('utf-8') if sys.version_info[0] == 2 else kiter251)
2851
- oprot.writeString(viter252.encode('utf-8') if sys.version_info[0] == 2 else viter252)
2971
+ for kiter260, viter261 in self.props.items():
2972
+ oprot.writeString(kiter260.encode('utf-8') if sys.version_info[0] == 2 else kiter260)
2973
+ oprot.writeString(viter261.encode('utf-8') if sys.version_info[0] == 2 else viter261)
2852
2974
  oprot.writeMapEnd()
2853
2975
  oprot.writeFieldEnd()
2854
2976
  oprot.writeFieldStop()
@@ -2924,11 +3046,11 @@ class Model(object):
2924
3046
  elif fid == 5:
2925
3047
  if ftype == TType.MAP:
2926
3048
  self.modelParams = {}
2927
- (_ktype254, _vtype255, _size253) = iprot.readMapBegin()
2928
- for _i257 in range(_size253):
2929
- _key258 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2930
- _val259 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
2931
- self.modelParams[_key258] = _val259
3049
+ (_ktype263, _vtype264, _size262) = iprot.readMapBegin()
3050
+ for _i266 in range(_size262):
3051
+ _key267 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3052
+ _val268 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3053
+ self.modelParams[_key267] = _val268
2932
3054
  iprot.readMapEnd()
2933
3055
  else:
2934
3056
  iprot.skip(ftype)
@@ -2962,9 +3084,9 @@ class Model(object):
2962
3084
  if self.modelParams is not None:
2963
3085
  oprot.writeFieldBegin('modelParams', TType.MAP, 5)
2964
3086
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.modelParams))
2965
- for kiter260, viter261 in self.modelParams.items():
2966
- oprot.writeString(kiter260.encode('utf-8') if sys.version_info[0] == 2 else kiter260)
2967
- oprot.writeString(viter261.encode('utf-8') if sys.version_info[0] == 2 else viter261)
3087
+ for kiter269, viter270 in self.modelParams.items():
3088
+ oprot.writeString(kiter269.encode('utf-8') if sys.version_info[0] == 2 else kiter269)
3089
+ oprot.writeString(viter270.encode('utf-8') if sys.version_info[0] == 2 else viter270)
2968
3090
  oprot.writeMapEnd()
2969
3091
  oprot.writeFieldEnd()
2970
3092
  oprot.writeFieldStop()
@@ -3043,29 +3165,29 @@ class Team(object):
3043
3165
  elif fid == 11:
3044
3166
  if ftype == TType.MAP:
3045
3167
  self.tableProperties = {}
3046
- (_ktype263, _vtype264, _size262) = iprot.readMapBegin()
3047
- for _i266 in range(_size262):
3048
- _key267 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3049
- _val268 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3050
- self.tableProperties[_key267] = _val268
3168
+ (_ktype272, _vtype273, _size271) = iprot.readMapBegin()
3169
+ for _i275 in range(_size271):
3170
+ _key276 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3171
+ _val277 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
3172
+ self.tableProperties[_key276] = _val277
3051
3173
  iprot.readMapEnd()
3052
3174
  else:
3053
3175
  iprot.skip(ftype)
3054
3176
  elif fid == 20:
3055
3177
  if ftype == TType.STRUCT:
3056
- self.env = ai.chronon.api.common.ttypes.EnvironmentVariables()
3178
+ self.env = gen_thrift.common.ttypes.EnvironmentVariables()
3057
3179
  self.env.read(iprot)
3058
3180
  else:
3059
3181
  iprot.skip(ftype)
3060
3182
  elif fid == 21:
3061
3183
  if ftype == TType.STRUCT:
3062
- self.conf = ai.chronon.api.common.ttypes.ConfigProperties()
3184
+ self.conf = gen_thrift.common.ttypes.ConfigProperties()
3063
3185
  self.conf.read(iprot)
3064
3186
  else:
3065
3187
  iprot.skip(ftype)
3066
3188
  elif fid == 22:
3067
3189
  if ftype == TType.STRUCT:
3068
- self.clusterConf = ai.chronon.api.common.ttypes.ClusterConfigProperties()
3190
+ self.clusterConf = gen_thrift.common.ttypes.ClusterConfigProperties()
3069
3191
  self.clusterConf.read(iprot)
3070
3192
  else:
3071
3193
  iprot.skip(ftype)
@@ -3099,9 +3221,9 @@ class Team(object):
3099
3221
  if self.tableProperties is not None:
3100
3222
  oprot.writeFieldBegin('tableProperties', TType.MAP, 11)
3101
3223
  oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.tableProperties))
3102
- for kiter269, viter270 in self.tableProperties.items():
3103
- oprot.writeString(kiter269.encode('utf-8') if sys.version_info[0] == 2 else kiter269)
3104
- oprot.writeString(viter270.encode('utf-8') if sys.version_info[0] == 2 else viter270)
3224
+ for kiter278, viter279 in self.tableProperties.items():
3225
+ oprot.writeString(kiter278.encode('utf-8') if sys.version_info[0] == 2 else kiter278)
3226
+ oprot.writeString(viter279.encode('utf-8') if sys.version_info[0] == 2 else viter279)
3105
3227
  oprot.writeMapEnd()
3106
3228
  oprot.writeFieldEnd()
3107
3229
  if self.env is not None:
@@ -3156,8 +3278,8 @@ Query.thrift_spec = (
3156
3278
  None, # 19
3157
3279
  (20, TType.STRING, 'partitionColumn', 'UTF8', None, ), # 20
3158
3280
  (21, TType.STRING, 'partitionFormat', 'UTF8', None, ), # 21
3159
- (22, TType.STRUCT, 'partitionInterval', [ai.chronon.api.common.ttypes.Window, None], None, ), # 22
3160
- (23, TType.STRUCT, 'partitionLag', [ai.chronon.api.common.ttypes.Window, None], None, ), # 23
3281
+ (22, TType.STRUCT, 'partitionInterval', [gen_thrift.common.ttypes.Window, None], None, ), # 22
3282
+ (23, TType.STRUCT, 'partitionLag', [gen_thrift.common.ttypes.Window, None], None, ), # 23
3161
3283
  (24, TType.LIST, 'subPartitionsToWaitFor', (TType.STRING, 'UTF8', False), None, ), # 24
3162
3284
  )
3163
3285
  all_structs.append(StagingQuery)
@@ -3167,9 +3289,9 @@ StagingQuery.thrift_spec = (
3167
3289
  (2, TType.STRING, 'query', 'UTF8', None, ), # 2
3168
3290
  (3, TType.STRING, 'startPartition', 'UTF8', None, ), # 3
3169
3291
  (4, TType.LIST, 'setups', (TType.STRING, 'UTF8', False), None, ), # 4
3170
- (5, TType.STRING, 'partitionColumn', 'UTF8', None, ), # 5
3171
- (6, TType.I32, 'engineType', None, None, ), # 6
3172
- (7, TType.LIST, 'tableDependencies', (TType.STRUCT, [ai.chronon.api.common.ttypes.TableDependency, None], False), None, ), # 7
3292
+ (5, TType.I32, 'engineType', None, None, ), # 5
3293
+ (6, TType.LIST, 'tableDependencies', (TType.STRUCT, [gen_thrift.common.ttypes.TableDependency, None], False), None, ), # 6
3294
+ None, # 7
3173
3295
  None, # 8
3174
3296
  None, # 9
3175
3297
  None, # 10
@@ -3226,7 +3348,7 @@ Aggregation.thrift_spec = (
3226
3348
  (1, TType.STRING, 'inputColumn', 'UTF8', None, ), # 1
3227
3349
  (2, TType.I32, 'operation', None, None, ), # 2
3228
3350
  (3, TType.MAP, 'argMap', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 3
3229
- (4, TType.LIST, 'windows', (TType.STRUCT, [ai.chronon.api.common.ttypes.Window, None], False), None, ), # 4
3351
+ (4, TType.LIST, 'windows', (TType.STRUCT, [gen_thrift.common.ttypes.Window, None], False), None, ), # 4
3230
3352
  (5, TType.LIST, 'buckets', (TType.STRING, 'UTF8', False), None, ), # 5
3231
3353
  )
3232
3354
  all_structs.append(AggregationPart)
@@ -3235,7 +3357,7 @@ AggregationPart.thrift_spec = (
3235
3357
  (1, TType.STRING, 'inputColumn', 'UTF8', None, ), # 1
3236
3358
  (2, TType.I32, 'operation', None, None, ), # 2
3237
3359
  (3, TType.MAP, 'argMap', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 3
3238
- (4, TType.STRUCT, 'window', [ai.chronon.api.common.ttypes.Window, None], None, ), # 4
3360
+ (4, TType.STRUCT, 'window', [gen_thrift.common.ttypes.Window, None], None, ), # 4
3239
3361
  (5, TType.STRING, 'bucket', 'UTF8', None, ), # 5
3240
3362
  )
3241
3363
  all_structs.append(MetaData)
@@ -3262,7 +3384,7 @@ MetaData.thrift_spec = (
3262
3384
  None, # 19
3263
3385
  (20, TType.MAP, 'tags', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 20
3264
3386
  (21, TType.MAP, 'columnTags', (TType.STRING, 'UTF8', TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 21
3265
- None, # 22
3387
+ (22, TType.MAP, 'columnHashes', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 22
3266
3388
  None, # 23
3267
3389
  None, # 24
3268
3390
  None, # 25
@@ -3443,8 +3565,16 @@ MetaData.thrift_spec = (
3443
3565
  (200, TType.BOOL, 'consistencyCheck', None, None, ), # 200
3444
3566
  (201, TType.DOUBLE, 'samplePercent', None, None, ), # 201
3445
3567
  (202, TType.DOUBLE, 'consistencySamplePercent', None, None, ), # 202
3446
- (203, TType.STRUCT, 'driftSpec', [ai.chronon.observability.ttypes.DriftSpec, None], None, ), # 203
3447
- (204, TType.STRUCT, 'executionInfo', [ai.chronon.api.common.ttypes.ExecutionInfo, None], None, ), # 204
3568
+ (203, TType.STRUCT, 'driftSpec', [gen_thrift.observability.ttypes.DriftSpec, None], None, ), # 203
3569
+ (204, TType.STRUCT, 'executionInfo', [gen_thrift.common.ttypes.ExecutionInfo, None], None, ), # 204
3570
+ )
3571
+ all_structs.append(Conf)
3572
+ Conf.thrift_spec = (
3573
+ None, # 0
3574
+ (1, TType.STRING, 'name', 'UTF8', None, ), # 1
3575
+ (2, TType.STRING, 'hash', 'UTF8', None, ), # 2
3576
+ (3, TType.STRING, 'contents', 'UTF8', None, ), # 3
3577
+ (4, TType.I32, 'confType', None, None, ), # 4
3448
3578
  )
3449
3579
  all_structs.append(GroupBy)
3450
3580
  GroupBy.thrift_spec = (
@@ -3616,9 +3746,9 @@ Team.thrift_spec = (
3616
3746
  None, # 17
3617
3747
  None, # 18
3618
3748
  None, # 19
3619
- (20, TType.STRUCT, 'env', [ai.chronon.api.common.ttypes.EnvironmentVariables, None], None, ), # 20
3620
- (21, TType.STRUCT, 'conf', [ai.chronon.api.common.ttypes.ConfigProperties, None], None, ), # 21
3621
- (22, TType.STRUCT, 'clusterConf', [ai.chronon.api.common.ttypes.ClusterConfigProperties, None], None, ), # 22
3749
+ (20, TType.STRUCT, 'env', [gen_thrift.common.ttypes.EnvironmentVariables, None], None, ), # 20
3750
+ (21, TType.STRUCT, 'conf', [gen_thrift.common.ttypes.ConfigProperties, None], None, ), # 21
3751
+ (22, TType.STRUCT, 'clusterConf', [gen_thrift.common.ttypes.ClusterConfigProperties, None], None, ), # 22
3622
3752
  )
3623
3753
  fix_spec(all_structs)
3624
3754
  del all_structs