awx-zipline-ai 0.2.0__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 (93) hide show
  1. agent/__init__.py +1 -0
  2. agent/constants.py +15 -0
  3. agent/ttypes.py +1684 -0
  4. ai/__init__.py +0 -0
  5. ai/chronon/__init__.py +0 -0
  6. ai/chronon/airflow_helpers.py +251 -0
  7. ai/chronon/api/__init__.py +1 -0
  8. ai/chronon/api/common/__init__.py +1 -0
  9. ai/chronon/api/common/constants.py +15 -0
  10. ai/chronon/api/common/ttypes.py +1844 -0
  11. ai/chronon/api/constants.py +15 -0
  12. ai/chronon/api/ttypes.py +3624 -0
  13. ai/chronon/cli/compile/column_hashing.py +313 -0
  14. ai/chronon/cli/compile/compile_context.py +177 -0
  15. ai/chronon/cli/compile/compiler.py +160 -0
  16. ai/chronon/cli/compile/conf_validator.py +590 -0
  17. ai/chronon/cli/compile/display/class_tracker.py +112 -0
  18. ai/chronon/cli/compile/display/compile_status.py +95 -0
  19. ai/chronon/cli/compile/display/compiled_obj.py +12 -0
  20. ai/chronon/cli/compile/display/console.py +3 -0
  21. ai/chronon/cli/compile/display/diff_result.py +46 -0
  22. ai/chronon/cli/compile/fill_templates.py +40 -0
  23. ai/chronon/cli/compile/parse_configs.py +141 -0
  24. ai/chronon/cli/compile/parse_teams.py +238 -0
  25. ai/chronon/cli/compile/serializer.py +115 -0
  26. ai/chronon/cli/git_utils.py +156 -0
  27. ai/chronon/cli/logger.py +61 -0
  28. ai/chronon/constants.py +3 -0
  29. ai/chronon/eval/__init__.py +122 -0
  30. ai/chronon/eval/query_parsing.py +19 -0
  31. ai/chronon/eval/sample_tables.py +100 -0
  32. ai/chronon/eval/table_scan.py +186 -0
  33. ai/chronon/fetcher/__init__.py +1 -0
  34. ai/chronon/fetcher/constants.py +15 -0
  35. ai/chronon/fetcher/ttypes.py +127 -0
  36. ai/chronon/group_by.py +692 -0
  37. ai/chronon/hub/__init__.py +1 -0
  38. ai/chronon/hub/constants.py +15 -0
  39. ai/chronon/hub/ttypes.py +1228 -0
  40. ai/chronon/join.py +566 -0
  41. ai/chronon/logger.py +24 -0
  42. ai/chronon/model.py +35 -0
  43. ai/chronon/observability/__init__.py +1 -0
  44. ai/chronon/observability/constants.py +15 -0
  45. ai/chronon/observability/ttypes.py +2192 -0
  46. ai/chronon/orchestration/__init__.py +1 -0
  47. ai/chronon/orchestration/constants.py +15 -0
  48. ai/chronon/orchestration/ttypes.py +4406 -0
  49. ai/chronon/planner/__init__.py +1 -0
  50. ai/chronon/planner/constants.py +15 -0
  51. ai/chronon/planner/ttypes.py +1686 -0
  52. ai/chronon/query.py +126 -0
  53. ai/chronon/repo/__init__.py +40 -0
  54. ai/chronon/repo/aws.py +298 -0
  55. ai/chronon/repo/cluster.py +65 -0
  56. ai/chronon/repo/compile.py +56 -0
  57. ai/chronon/repo/constants.py +164 -0
  58. ai/chronon/repo/default_runner.py +291 -0
  59. ai/chronon/repo/explore.py +421 -0
  60. ai/chronon/repo/extract_objects.py +137 -0
  61. ai/chronon/repo/gcp.py +585 -0
  62. ai/chronon/repo/gitpython_utils.py +14 -0
  63. ai/chronon/repo/hub_runner.py +171 -0
  64. ai/chronon/repo/hub_uploader.py +108 -0
  65. ai/chronon/repo/init.py +53 -0
  66. ai/chronon/repo/join_backfill.py +105 -0
  67. ai/chronon/repo/run.py +293 -0
  68. ai/chronon/repo/serializer.py +141 -0
  69. ai/chronon/repo/team_json_utils.py +46 -0
  70. ai/chronon/repo/utils.py +472 -0
  71. ai/chronon/repo/zipline.py +51 -0
  72. ai/chronon/repo/zipline_hub.py +105 -0
  73. ai/chronon/resources/gcp/README.md +174 -0
  74. ai/chronon/resources/gcp/group_bys/test/__init__.py +0 -0
  75. ai/chronon/resources/gcp/group_bys/test/data.py +34 -0
  76. ai/chronon/resources/gcp/joins/test/__init__.py +0 -0
  77. ai/chronon/resources/gcp/joins/test/data.py +30 -0
  78. ai/chronon/resources/gcp/sources/test/__init__.py +0 -0
  79. ai/chronon/resources/gcp/sources/test/data.py +23 -0
  80. ai/chronon/resources/gcp/teams.py +70 -0
  81. ai/chronon/resources/gcp/zipline-cli-install.sh +54 -0
  82. ai/chronon/source.py +88 -0
  83. ai/chronon/staging_query.py +185 -0
  84. ai/chronon/types.py +57 -0
  85. ai/chronon/utils.py +557 -0
  86. ai/chronon/windows.py +50 -0
  87. awx_zipline_ai-0.2.0.dist-info/METADATA +173 -0
  88. awx_zipline_ai-0.2.0.dist-info/RECORD +93 -0
  89. awx_zipline_ai-0.2.0.dist-info/WHEEL +5 -0
  90. awx_zipline_ai-0.2.0.dist-info/entry_points.txt +2 -0
  91. awx_zipline_ai-0.2.0.dist-info/licenses/LICENSE +202 -0
  92. awx_zipline_ai-0.2.0.dist-info/top_level.txt +3 -0
  93. jars/__init__.py +0 -0
@@ -0,0 +1,1686 @@
1
+ #
2
+ # Autogenerated by Thrift Compiler (0.22.0)
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+ # options string: py
7
+ #
8
+
9
+ from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
10
+ from thrift.protocol.TProtocol import TProtocolException
11
+ from thrift.TRecursive import fix_spec
12
+ from uuid import UUID
13
+
14
+ import sys
15
+ import ai.chronon.api.common.ttypes
16
+ import ai.chronon.api.ttypes
17
+
18
+ from thrift.transport import TTransport
19
+ all_structs = []
20
+
21
+
22
+ class Mode(object):
23
+ BACKFILL = 0
24
+ DEPLOY = 1
25
+ MONITOR = 2
26
+
27
+ _VALUES_TO_NAMES = {
28
+ 0: "BACKFILL",
29
+ 1: "DEPLOY",
30
+ 2: "MONITOR",
31
+ }
32
+
33
+ _NAMES_TO_VALUES = {
34
+ "BACKFILL": 0,
35
+ "DEPLOY": 1,
36
+ "MONITOR": 2,
37
+ }
38
+
39
+
40
+ class SourceWithFilterNode(object):
41
+ """
42
+ Attributes:
43
+ - source
44
+ - excludeKeys
45
+
46
+ """
47
+ thrift_spec = None
48
+
49
+
50
+ def __init__(self, source = None, excludeKeys = None,):
51
+ self.source = source
52
+ self.excludeKeys = excludeKeys
53
+
54
+ def read(self, iprot):
55
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
56
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
57
+ return
58
+ iprot.readStructBegin()
59
+ while True:
60
+ (fname, ftype, fid) = iprot.readFieldBegin()
61
+ if ftype == TType.STOP:
62
+ break
63
+ if fid == 2:
64
+ if ftype == TType.STRUCT:
65
+ self.source = ai.chronon.api.ttypes.Source()
66
+ self.source.read(iprot)
67
+ else:
68
+ iprot.skip(ftype)
69
+ elif fid == 3:
70
+ if ftype == TType.MAP:
71
+ self.excludeKeys = {}
72
+ (_ktype1, _vtype2, _size0) = iprot.readMapBegin()
73
+ for _i4 in range(_size0):
74
+ _key5 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
75
+ _val6 = []
76
+ (_etype10, _size7) = iprot.readListBegin()
77
+ for _i11 in range(_size7):
78
+ _elem12 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
79
+ _val6.append(_elem12)
80
+ iprot.readListEnd()
81
+ self.excludeKeys[_key5] = _val6
82
+ iprot.readMapEnd()
83
+ else:
84
+ iprot.skip(ftype)
85
+ else:
86
+ iprot.skip(ftype)
87
+ iprot.readFieldEnd()
88
+ iprot.readStructEnd()
89
+
90
+ def write(self, oprot):
91
+ self.validate()
92
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
93
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
94
+ return
95
+ oprot.writeStructBegin('SourceWithFilterNode')
96
+ if self.source is not None:
97
+ oprot.writeFieldBegin('source', TType.STRUCT, 2)
98
+ self.source.write(oprot)
99
+ oprot.writeFieldEnd()
100
+ if self.excludeKeys is not None:
101
+ oprot.writeFieldBegin('excludeKeys', TType.MAP, 3)
102
+ oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.excludeKeys))
103
+ for kiter13, viter14 in self.excludeKeys.items():
104
+ oprot.writeString(kiter13.encode('utf-8') if sys.version_info[0] == 2 else kiter13)
105
+ oprot.writeListBegin(TType.STRING, len(viter14))
106
+ for iter15 in viter14:
107
+ oprot.writeString(iter15.encode('utf-8') if sys.version_info[0] == 2 else iter15)
108
+ oprot.writeListEnd()
109
+ oprot.writeMapEnd()
110
+ oprot.writeFieldEnd()
111
+ oprot.writeFieldStop()
112
+ oprot.writeStructEnd()
113
+
114
+ def validate(self):
115
+ return
116
+
117
+ def __repr__(self):
118
+ L = ['%s=%r' % (key, value)
119
+ for key, value in self.__dict__.items()]
120
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
121
+
122
+ def __eq__(self, other):
123
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
124
+
125
+ def __ne__(self, other):
126
+ return not (self == other)
127
+
128
+
129
+ class JoinBootstrapNode(object):
130
+ """
131
+ Attributes:
132
+ - join
133
+
134
+ """
135
+ thrift_spec = None
136
+
137
+
138
+ def __init__(self, join = None,):
139
+ self.join = join
140
+
141
+ def read(self, iprot):
142
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
143
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
144
+ return
145
+ iprot.readStructBegin()
146
+ while True:
147
+ (fname, ftype, fid) = iprot.readFieldBegin()
148
+ if ftype == TType.STOP:
149
+ break
150
+ if fid == 2:
151
+ if ftype == TType.STRUCT:
152
+ self.join = ai.chronon.api.ttypes.Join()
153
+ self.join.read(iprot)
154
+ else:
155
+ iprot.skip(ftype)
156
+ else:
157
+ iprot.skip(ftype)
158
+ iprot.readFieldEnd()
159
+ iprot.readStructEnd()
160
+
161
+ def write(self, oprot):
162
+ self.validate()
163
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
164
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
165
+ return
166
+ oprot.writeStructBegin('JoinBootstrapNode')
167
+ if self.join is not None:
168
+ oprot.writeFieldBegin('join', TType.STRUCT, 2)
169
+ self.join.write(oprot)
170
+ oprot.writeFieldEnd()
171
+ oprot.writeFieldStop()
172
+ oprot.writeStructEnd()
173
+
174
+ def validate(self):
175
+ return
176
+
177
+ def __repr__(self):
178
+ L = ['%s=%r' % (key, value)
179
+ for key, value in self.__dict__.items()]
180
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
181
+
182
+ def __eq__(self, other):
183
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
184
+
185
+ def __ne__(self, other):
186
+ return not (self == other)
187
+
188
+
189
+ class JoinMergeNode(object):
190
+ """
191
+ Attributes:
192
+ - join
193
+
194
+ """
195
+ thrift_spec = None
196
+
197
+
198
+ def __init__(self, join = None,):
199
+ self.join = join
200
+
201
+ def read(self, iprot):
202
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
203
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
204
+ return
205
+ iprot.readStructBegin()
206
+ while True:
207
+ (fname, ftype, fid) = iprot.readFieldBegin()
208
+ if ftype == TType.STOP:
209
+ break
210
+ if fid == 2:
211
+ if ftype == TType.STRUCT:
212
+ self.join = ai.chronon.api.ttypes.Join()
213
+ self.join.read(iprot)
214
+ else:
215
+ iprot.skip(ftype)
216
+ else:
217
+ iprot.skip(ftype)
218
+ iprot.readFieldEnd()
219
+ iprot.readStructEnd()
220
+
221
+ def write(self, oprot):
222
+ self.validate()
223
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
224
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
225
+ return
226
+ oprot.writeStructBegin('JoinMergeNode')
227
+ if self.join is not None:
228
+ oprot.writeFieldBegin('join', TType.STRUCT, 2)
229
+ self.join.write(oprot)
230
+ oprot.writeFieldEnd()
231
+ oprot.writeFieldStop()
232
+ oprot.writeStructEnd()
233
+
234
+ def validate(self):
235
+ return
236
+
237
+ def __repr__(self):
238
+ L = ['%s=%r' % (key, value)
239
+ for key, value in self.__dict__.items()]
240
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
241
+
242
+ def __eq__(self, other):
243
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
244
+
245
+ def __ne__(self, other):
246
+ return not (self == other)
247
+
248
+
249
+ class JoinDerivationNode(object):
250
+ """
251
+ Attributes:
252
+ - join
253
+
254
+ """
255
+ thrift_spec = None
256
+
257
+
258
+ def __init__(self, join = None,):
259
+ self.join = join
260
+
261
+ def read(self, iprot):
262
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
263
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
264
+ return
265
+ iprot.readStructBegin()
266
+ while True:
267
+ (fname, ftype, fid) = iprot.readFieldBegin()
268
+ if ftype == TType.STOP:
269
+ break
270
+ if fid == 2:
271
+ if ftype == TType.STRUCT:
272
+ self.join = ai.chronon.api.ttypes.Join()
273
+ self.join.read(iprot)
274
+ else:
275
+ iprot.skip(ftype)
276
+ else:
277
+ iprot.skip(ftype)
278
+ iprot.readFieldEnd()
279
+ iprot.readStructEnd()
280
+
281
+ def write(self, oprot):
282
+ self.validate()
283
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
284
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
285
+ return
286
+ oprot.writeStructBegin('JoinDerivationNode')
287
+ if self.join is not None:
288
+ oprot.writeFieldBegin('join', TType.STRUCT, 2)
289
+ self.join.write(oprot)
290
+ oprot.writeFieldEnd()
291
+ oprot.writeFieldStop()
292
+ oprot.writeStructEnd()
293
+
294
+ def validate(self):
295
+ return
296
+
297
+ def __repr__(self):
298
+ L = ['%s=%r' % (key, value)
299
+ for key, value in self.__dict__.items()]
300
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
301
+
302
+ def __eq__(self, other):
303
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
304
+
305
+ def __ne__(self, other):
306
+ return not (self == other)
307
+
308
+
309
+ class JoinPartNode(object):
310
+ """
311
+ Attributes:
312
+ - leftSourceTable
313
+ - leftDataModel
314
+ - joinPart
315
+ - skewKeys
316
+
317
+ """
318
+ thrift_spec = None
319
+
320
+
321
+ def __init__(self, leftSourceTable = None, leftDataModel = None, joinPart = None, skewKeys = None,):
322
+ self.leftSourceTable = leftSourceTable
323
+ self.leftDataModel = leftDataModel
324
+ self.joinPart = joinPart
325
+ self.skewKeys = skewKeys
326
+
327
+ def read(self, iprot):
328
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
329
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
330
+ return
331
+ iprot.readStructBegin()
332
+ while True:
333
+ (fname, ftype, fid) = iprot.readFieldBegin()
334
+ if ftype == TType.STOP:
335
+ break
336
+ if fid == 2:
337
+ if ftype == TType.STRING:
338
+ self.leftSourceTable = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
339
+ else:
340
+ iprot.skip(ftype)
341
+ elif fid == 3:
342
+ if ftype == TType.I32:
343
+ self.leftDataModel = iprot.readI32()
344
+ else:
345
+ iprot.skip(ftype)
346
+ elif fid == 4:
347
+ if ftype == TType.STRUCT:
348
+ self.joinPart = ai.chronon.api.ttypes.JoinPart()
349
+ self.joinPart.read(iprot)
350
+ else:
351
+ iprot.skip(ftype)
352
+ elif fid == 5:
353
+ if ftype == TType.MAP:
354
+ self.skewKeys = {}
355
+ (_ktype17, _vtype18, _size16) = iprot.readMapBegin()
356
+ for _i20 in range(_size16):
357
+ _key21 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
358
+ _val22 = []
359
+ (_etype26, _size23) = iprot.readListBegin()
360
+ for _i27 in range(_size23):
361
+ _elem28 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
362
+ _val22.append(_elem28)
363
+ iprot.readListEnd()
364
+ self.skewKeys[_key21] = _val22
365
+ iprot.readMapEnd()
366
+ else:
367
+ iprot.skip(ftype)
368
+ else:
369
+ iprot.skip(ftype)
370
+ iprot.readFieldEnd()
371
+ iprot.readStructEnd()
372
+
373
+ def write(self, oprot):
374
+ self.validate()
375
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
376
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
377
+ return
378
+ oprot.writeStructBegin('JoinPartNode')
379
+ if self.leftSourceTable is not None:
380
+ oprot.writeFieldBegin('leftSourceTable', TType.STRING, 2)
381
+ oprot.writeString(self.leftSourceTable.encode('utf-8') if sys.version_info[0] == 2 else self.leftSourceTable)
382
+ oprot.writeFieldEnd()
383
+ if self.leftDataModel is not None:
384
+ oprot.writeFieldBegin('leftDataModel', TType.I32, 3)
385
+ oprot.writeI32(self.leftDataModel)
386
+ oprot.writeFieldEnd()
387
+ if self.joinPart is not None:
388
+ oprot.writeFieldBegin('joinPart', TType.STRUCT, 4)
389
+ self.joinPart.write(oprot)
390
+ oprot.writeFieldEnd()
391
+ if self.skewKeys is not None:
392
+ oprot.writeFieldBegin('skewKeys', TType.MAP, 5)
393
+ oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.skewKeys))
394
+ for kiter29, viter30 in self.skewKeys.items():
395
+ oprot.writeString(kiter29.encode('utf-8') if sys.version_info[0] == 2 else kiter29)
396
+ oprot.writeListBegin(TType.STRING, len(viter30))
397
+ for iter31 in viter30:
398
+ oprot.writeString(iter31.encode('utf-8') if sys.version_info[0] == 2 else iter31)
399
+ oprot.writeListEnd()
400
+ oprot.writeMapEnd()
401
+ oprot.writeFieldEnd()
402
+ oprot.writeFieldStop()
403
+ oprot.writeStructEnd()
404
+
405
+ def validate(self):
406
+ return
407
+
408
+ def __repr__(self):
409
+ L = ['%s=%r' % (key, value)
410
+ for key, value in self.__dict__.items()]
411
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
412
+
413
+ def __eq__(self, other):
414
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
415
+
416
+ def __ne__(self, other):
417
+ return not (self == other)
418
+
419
+
420
+ class LabelJoinNode(object):
421
+ """
422
+ Attributes:
423
+ - join
424
+
425
+ """
426
+ thrift_spec = None
427
+
428
+
429
+ def __init__(self, join = None,):
430
+ self.join = join
431
+
432
+ def read(self, iprot):
433
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
434
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
435
+ return
436
+ iprot.readStructBegin()
437
+ while True:
438
+ (fname, ftype, fid) = iprot.readFieldBegin()
439
+ if ftype == TType.STOP:
440
+ break
441
+ if fid == 2:
442
+ if ftype == TType.STRUCT:
443
+ self.join = ai.chronon.api.ttypes.Join()
444
+ self.join.read(iprot)
445
+ else:
446
+ iprot.skip(ftype)
447
+ else:
448
+ iprot.skip(ftype)
449
+ iprot.readFieldEnd()
450
+ iprot.readStructEnd()
451
+
452
+ def write(self, oprot):
453
+ self.validate()
454
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
455
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
456
+ return
457
+ oprot.writeStructBegin('LabelJoinNode')
458
+ if self.join is not None:
459
+ oprot.writeFieldBegin('join', TType.STRUCT, 2)
460
+ self.join.write(oprot)
461
+ oprot.writeFieldEnd()
462
+ oprot.writeFieldStop()
463
+ oprot.writeStructEnd()
464
+
465
+ def validate(self):
466
+ return
467
+
468
+ def __repr__(self):
469
+ L = ['%s=%r' % (key, value)
470
+ for key, value in self.__dict__.items()]
471
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
472
+
473
+ def __eq__(self, other):
474
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
475
+
476
+ def __ne__(self, other):
477
+ return not (self == other)
478
+
479
+
480
+ class MonolithJoinNode(object):
481
+ """
482
+ Attributes:
483
+ - join
484
+
485
+ """
486
+ thrift_spec = None
487
+
488
+
489
+ def __init__(self, join = None,):
490
+ self.join = join
491
+
492
+ def read(self, iprot):
493
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
494
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
495
+ return
496
+ iprot.readStructBegin()
497
+ while True:
498
+ (fname, ftype, fid) = iprot.readFieldBegin()
499
+ if ftype == TType.STOP:
500
+ break
501
+ if fid == 1:
502
+ if ftype == TType.STRUCT:
503
+ self.join = ai.chronon.api.ttypes.Join()
504
+ self.join.read(iprot)
505
+ else:
506
+ iprot.skip(ftype)
507
+ else:
508
+ iprot.skip(ftype)
509
+ iprot.readFieldEnd()
510
+ iprot.readStructEnd()
511
+
512
+ def write(self, oprot):
513
+ self.validate()
514
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
515
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
516
+ return
517
+ oprot.writeStructBegin('MonolithJoinNode')
518
+ if self.join is not None:
519
+ oprot.writeFieldBegin('join', TType.STRUCT, 1)
520
+ self.join.write(oprot)
521
+ oprot.writeFieldEnd()
522
+ oprot.writeFieldStop()
523
+ oprot.writeStructEnd()
524
+
525
+ def validate(self):
526
+ return
527
+
528
+ def __repr__(self):
529
+ L = ['%s=%r' % (key, value)
530
+ for key, value in self.__dict__.items()]
531
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
532
+
533
+ def __eq__(self, other):
534
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
535
+
536
+ def __ne__(self, other):
537
+ return not (self == other)
538
+
539
+
540
+ class StagingQueryNode(object):
541
+ """
542
+ Attributes:
543
+ - stagingQuery
544
+
545
+ """
546
+ thrift_spec = None
547
+
548
+
549
+ def __init__(self, stagingQuery = None,):
550
+ self.stagingQuery = stagingQuery
551
+
552
+ def read(self, iprot):
553
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
554
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
555
+ return
556
+ iprot.readStructBegin()
557
+ while True:
558
+ (fname, ftype, fid) = iprot.readFieldBegin()
559
+ if ftype == TType.STOP:
560
+ break
561
+ if fid == 2:
562
+ if ftype == TType.STRUCT:
563
+ self.stagingQuery = ai.chronon.api.ttypes.StagingQuery()
564
+ self.stagingQuery.read(iprot)
565
+ else:
566
+ iprot.skip(ftype)
567
+ else:
568
+ iprot.skip(ftype)
569
+ iprot.readFieldEnd()
570
+ iprot.readStructEnd()
571
+
572
+ def write(self, oprot):
573
+ self.validate()
574
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
575
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
576
+ return
577
+ oprot.writeStructBegin('StagingQueryNode')
578
+ if self.stagingQuery is not None:
579
+ oprot.writeFieldBegin('stagingQuery', TType.STRUCT, 2)
580
+ self.stagingQuery.write(oprot)
581
+ oprot.writeFieldEnd()
582
+ oprot.writeFieldStop()
583
+ oprot.writeStructEnd()
584
+
585
+ def validate(self):
586
+ return
587
+
588
+ def __repr__(self):
589
+ L = ['%s=%r' % (key, value)
590
+ for key, value in self.__dict__.items()]
591
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
592
+
593
+ def __eq__(self, other):
594
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
595
+
596
+ def __ne__(self, other):
597
+ return not (self == other)
598
+
599
+
600
+ class GroupByBackfillNode(object):
601
+ """
602
+ Attributes:
603
+ - groupBy
604
+
605
+ """
606
+ thrift_spec = None
607
+
608
+
609
+ def __init__(self, groupBy = None,):
610
+ self.groupBy = groupBy
611
+
612
+ def read(self, iprot):
613
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
614
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
615
+ return
616
+ iprot.readStructBegin()
617
+ while True:
618
+ (fname, ftype, fid) = iprot.readFieldBegin()
619
+ if ftype == TType.STOP:
620
+ break
621
+ if fid == 2:
622
+ if ftype == TType.STRUCT:
623
+ self.groupBy = ai.chronon.api.ttypes.GroupBy()
624
+ self.groupBy.read(iprot)
625
+ else:
626
+ iprot.skip(ftype)
627
+ else:
628
+ iprot.skip(ftype)
629
+ iprot.readFieldEnd()
630
+ iprot.readStructEnd()
631
+
632
+ def write(self, oprot):
633
+ self.validate()
634
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
635
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
636
+ return
637
+ oprot.writeStructBegin('GroupByBackfillNode')
638
+ if self.groupBy is not None:
639
+ oprot.writeFieldBegin('groupBy', TType.STRUCT, 2)
640
+ self.groupBy.write(oprot)
641
+ oprot.writeFieldEnd()
642
+ oprot.writeFieldStop()
643
+ oprot.writeStructEnd()
644
+
645
+ def validate(self):
646
+ return
647
+
648
+ def __repr__(self):
649
+ L = ['%s=%r' % (key, value)
650
+ for key, value in self.__dict__.items()]
651
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
652
+
653
+ def __eq__(self, other):
654
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
655
+
656
+ def __ne__(self, other):
657
+ return not (self == other)
658
+
659
+
660
+ class GroupByUploadNode(object):
661
+ """
662
+ Attributes:
663
+ - groupBy
664
+
665
+ """
666
+ thrift_spec = None
667
+
668
+
669
+ def __init__(self, groupBy = None,):
670
+ self.groupBy = groupBy
671
+
672
+ def read(self, iprot):
673
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
674
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
675
+ return
676
+ iprot.readStructBegin()
677
+ while True:
678
+ (fname, ftype, fid) = iprot.readFieldBegin()
679
+ if ftype == TType.STOP:
680
+ break
681
+ if fid == 2:
682
+ if ftype == TType.STRUCT:
683
+ self.groupBy = ai.chronon.api.ttypes.GroupBy()
684
+ self.groupBy.read(iprot)
685
+ else:
686
+ iprot.skip(ftype)
687
+ else:
688
+ iprot.skip(ftype)
689
+ iprot.readFieldEnd()
690
+ iprot.readStructEnd()
691
+
692
+ def write(self, oprot):
693
+ self.validate()
694
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
695
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
696
+ return
697
+ oprot.writeStructBegin('GroupByUploadNode')
698
+ if self.groupBy is not None:
699
+ oprot.writeFieldBegin('groupBy', TType.STRUCT, 2)
700
+ self.groupBy.write(oprot)
701
+ oprot.writeFieldEnd()
702
+ oprot.writeFieldStop()
703
+ oprot.writeStructEnd()
704
+
705
+ def validate(self):
706
+ return
707
+
708
+ def __repr__(self):
709
+ L = ['%s=%r' % (key, value)
710
+ for key, value in self.__dict__.items()]
711
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
712
+
713
+ def __eq__(self, other):
714
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
715
+
716
+ def __ne__(self, other):
717
+ return not (self == other)
718
+
719
+
720
+ class GroupByUploadToKVNode(object):
721
+ """
722
+ Attributes:
723
+ - groupBy
724
+
725
+ """
726
+ thrift_spec = None
727
+
728
+
729
+ def __init__(self, groupBy = None,):
730
+ self.groupBy = groupBy
731
+
732
+ def read(self, iprot):
733
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
734
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
735
+ return
736
+ iprot.readStructBegin()
737
+ while True:
738
+ (fname, ftype, fid) = iprot.readFieldBegin()
739
+ if ftype == TType.STOP:
740
+ break
741
+ if fid == 2:
742
+ if ftype == TType.STRUCT:
743
+ self.groupBy = ai.chronon.api.ttypes.GroupBy()
744
+ self.groupBy.read(iprot)
745
+ else:
746
+ iprot.skip(ftype)
747
+ else:
748
+ iprot.skip(ftype)
749
+ iprot.readFieldEnd()
750
+ iprot.readStructEnd()
751
+
752
+ def write(self, oprot):
753
+ self.validate()
754
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
755
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
756
+ return
757
+ oprot.writeStructBegin('GroupByUploadToKVNode')
758
+ if self.groupBy is not None:
759
+ oprot.writeFieldBegin('groupBy', TType.STRUCT, 2)
760
+ self.groupBy.write(oprot)
761
+ oprot.writeFieldEnd()
762
+ oprot.writeFieldStop()
763
+ oprot.writeStructEnd()
764
+
765
+ def validate(self):
766
+ return
767
+
768
+ def __repr__(self):
769
+ L = ['%s=%r' % (key, value)
770
+ for key, value in self.__dict__.items()]
771
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
772
+
773
+ def __eq__(self, other):
774
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
775
+
776
+ def __ne__(self, other):
777
+ return not (self == other)
778
+
779
+
780
+ class GroupByStreamingNode(object):
781
+ """
782
+ Attributes:
783
+ - groupBy
784
+
785
+ """
786
+ thrift_spec = None
787
+
788
+
789
+ def __init__(self, groupBy = None,):
790
+ self.groupBy = groupBy
791
+
792
+ def read(self, iprot):
793
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
794
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
795
+ return
796
+ iprot.readStructBegin()
797
+ while True:
798
+ (fname, ftype, fid) = iprot.readFieldBegin()
799
+ if ftype == TType.STOP:
800
+ break
801
+ if fid == 2:
802
+ if ftype == TType.STRUCT:
803
+ self.groupBy = ai.chronon.api.ttypes.GroupBy()
804
+ self.groupBy.read(iprot)
805
+ else:
806
+ iprot.skip(ftype)
807
+ else:
808
+ iprot.skip(ftype)
809
+ iprot.readFieldEnd()
810
+ iprot.readStructEnd()
811
+
812
+ def write(self, oprot):
813
+ self.validate()
814
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
815
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
816
+ return
817
+ oprot.writeStructBegin('GroupByStreamingNode')
818
+ if self.groupBy is not None:
819
+ oprot.writeFieldBegin('groupBy', TType.STRUCT, 2)
820
+ self.groupBy.write(oprot)
821
+ oprot.writeFieldEnd()
822
+ oprot.writeFieldStop()
823
+ oprot.writeStructEnd()
824
+
825
+ def validate(self):
826
+ return
827
+
828
+ def __repr__(self):
829
+ L = ['%s=%r' % (key, value)
830
+ for key, value in self.__dict__.items()]
831
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
832
+
833
+ def __eq__(self, other):
834
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
835
+
836
+ def __ne__(self, other):
837
+ return not (self == other)
838
+
839
+
840
+ class JoinMetadataUpload(object):
841
+ """
842
+ Attributes:
843
+ - join
844
+
845
+ """
846
+ thrift_spec = None
847
+
848
+
849
+ def __init__(self, join = None,):
850
+ self.join = join
851
+
852
+ def read(self, iprot):
853
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
854
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
855
+ return
856
+ iprot.readStructBegin()
857
+ while True:
858
+ (fname, ftype, fid) = iprot.readFieldBegin()
859
+ if ftype == TType.STOP:
860
+ break
861
+ if fid == 2:
862
+ if ftype == TType.STRUCT:
863
+ self.join = ai.chronon.api.ttypes.Join()
864
+ self.join.read(iprot)
865
+ else:
866
+ iprot.skip(ftype)
867
+ else:
868
+ iprot.skip(ftype)
869
+ iprot.readFieldEnd()
870
+ iprot.readStructEnd()
871
+
872
+ def write(self, oprot):
873
+ self.validate()
874
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
875
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
876
+ return
877
+ oprot.writeStructBegin('JoinMetadataUpload')
878
+ if self.join is not None:
879
+ oprot.writeFieldBegin('join', TType.STRUCT, 2)
880
+ self.join.write(oprot)
881
+ oprot.writeFieldEnd()
882
+ oprot.writeFieldStop()
883
+ oprot.writeStructEnd()
884
+
885
+ def validate(self):
886
+ return
887
+
888
+ def __repr__(self):
889
+ L = ['%s=%r' % (key, value)
890
+ for key, value in self.__dict__.items()]
891
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
892
+
893
+ def __eq__(self, other):
894
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
895
+
896
+ def __ne__(self, other):
897
+ return not (self == other)
898
+
899
+
900
+ class ExternalSourceSensorNode(object):
901
+ """
902
+ Attributes:
903
+ - metaData
904
+ - sourceName
905
+
906
+ """
907
+ thrift_spec = None
908
+
909
+
910
+ def __init__(self, metaData = None, sourceName = None,):
911
+ self.metaData = metaData
912
+ self.sourceName = sourceName
913
+
914
+ def read(self, iprot):
915
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
916
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
917
+ return
918
+ iprot.readStructBegin()
919
+ while True:
920
+ (fname, ftype, fid) = iprot.readFieldBegin()
921
+ if ftype == TType.STOP:
922
+ break
923
+ if fid == 1:
924
+ if ftype == TType.STRUCT:
925
+ self.metaData = ai.chronon.api.ttypes.MetaData()
926
+ self.metaData.read(iprot)
927
+ else:
928
+ iprot.skip(ftype)
929
+ elif fid == 2:
930
+ if ftype == TType.STRING:
931
+ self.sourceName = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
932
+ else:
933
+ iprot.skip(ftype)
934
+ else:
935
+ iprot.skip(ftype)
936
+ iprot.readFieldEnd()
937
+ iprot.readStructEnd()
938
+
939
+ def write(self, oprot):
940
+ self.validate()
941
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
942
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
943
+ return
944
+ oprot.writeStructBegin('ExternalSourceSensorNode')
945
+ if self.metaData is not None:
946
+ oprot.writeFieldBegin('metaData', TType.STRUCT, 1)
947
+ self.metaData.write(oprot)
948
+ oprot.writeFieldEnd()
949
+ if self.sourceName is not None:
950
+ oprot.writeFieldBegin('sourceName', TType.STRING, 2)
951
+ oprot.writeString(self.sourceName.encode('utf-8') if sys.version_info[0] == 2 else self.sourceName)
952
+ oprot.writeFieldEnd()
953
+ oprot.writeFieldStop()
954
+ oprot.writeStructEnd()
955
+
956
+ def validate(self):
957
+ return
958
+
959
+ def __repr__(self):
960
+ L = ['%s=%r' % (key, value)
961
+ for key, value in self.__dict__.items()]
962
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
963
+
964
+ def __eq__(self, other):
965
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
966
+
967
+ def __ne__(self, other):
968
+ return not (self == other)
969
+
970
+
971
+ class NodeContent(object):
972
+ """
973
+ Attributes:
974
+ - sourceWithFilter
975
+ - joinBootstrap
976
+ - joinPart
977
+ - joinMerge
978
+ - joinDerivation
979
+ - labelJoin
980
+ - monolithJoin
981
+ - stagingQuery
982
+ - joinMetadataUpload
983
+ - externalSourceSensor
984
+ - groupByBackfill
985
+ - groupByUpload
986
+ - groupByStreaming
987
+ - groupByUploadToKV
988
+ - stagingQueryBackfill
989
+
990
+ """
991
+ thrift_spec = None
992
+
993
+
994
+ def __init__(self, sourceWithFilter = None, joinBootstrap = None, joinPart = None, joinMerge = None, joinDerivation = None, labelJoin = None, monolithJoin = None, stagingQuery = None, joinMetadataUpload = None, externalSourceSensor = None, groupByBackfill = None, groupByUpload = None, groupByStreaming = None, groupByUploadToKV = None, stagingQueryBackfill = None,):
995
+ self.sourceWithFilter = sourceWithFilter
996
+ self.joinBootstrap = joinBootstrap
997
+ self.joinPart = joinPart
998
+ self.joinMerge = joinMerge
999
+ self.joinDerivation = joinDerivation
1000
+ self.labelJoin = labelJoin
1001
+ self.monolithJoin = monolithJoin
1002
+ self.stagingQuery = stagingQuery
1003
+ self.joinMetadataUpload = joinMetadataUpload
1004
+ self.externalSourceSensor = externalSourceSensor
1005
+ self.groupByBackfill = groupByBackfill
1006
+ self.groupByUpload = groupByUpload
1007
+ self.groupByStreaming = groupByStreaming
1008
+ self.groupByUploadToKV = groupByUploadToKV
1009
+ self.stagingQueryBackfill = stagingQueryBackfill
1010
+
1011
+ def read(self, iprot):
1012
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1013
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1014
+ return
1015
+ iprot.readStructBegin()
1016
+ while True:
1017
+ (fname, ftype, fid) = iprot.readFieldBegin()
1018
+ if ftype == TType.STOP:
1019
+ break
1020
+ if fid == 1:
1021
+ if ftype == TType.STRUCT:
1022
+ self.sourceWithFilter = SourceWithFilterNode()
1023
+ self.sourceWithFilter.read(iprot)
1024
+ else:
1025
+ iprot.skip(ftype)
1026
+ elif fid == 2:
1027
+ if ftype == TType.STRUCT:
1028
+ self.joinBootstrap = JoinBootstrapNode()
1029
+ self.joinBootstrap.read(iprot)
1030
+ else:
1031
+ iprot.skip(ftype)
1032
+ elif fid == 3:
1033
+ if ftype == TType.STRUCT:
1034
+ self.joinPart = JoinPartNode()
1035
+ self.joinPart.read(iprot)
1036
+ else:
1037
+ iprot.skip(ftype)
1038
+ elif fid == 4:
1039
+ if ftype == TType.STRUCT:
1040
+ self.joinMerge = JoinMergeNode()
1041
+ self.joinMerge.read(iprot)
1042
+ else:
1043
+ iprot.skip(ftype)
1044
+ elif fid == 5:
1045
+ if ftype == TType.STRUCT:
1046
+ self.joinDerivation = JoinDerivationNode()
1047
+ self.joinDerivation.read(iprot)
1048
+ else:
1049
+ iprot.skip(ftype)
1050
+ elif fid == 6:
1051
+ if ftype == TType.STRUCT:
1052
+ self.labelJoin = LabelJoinNode()
1053
+ self.labelJoin.read(iprot)
1054
+ else:
1055
+ iprot.skip(ftype)
1056
+ elif fid == 7:
1057
+ if ftype == TType.STRUCT:
1058
+ self.monolithJoin = MonolithJoinNode()
1059
+ self.monolithJoin.read(iprot)
1060
+ else:
1061
+ iprot.skip(ftype)
1062
+ elif fid == 8:
1063
+ if ftype == TType.STRUCT:
1064
+ self.stagingQuery = StagingQueryNode()
1065
+ self.stagingQuery.read(iprot)
1066
+ else:
1067
+ iprot.skip(ftype)
1068
+ elif fid == 10:
1069
+ if ftype == TType.STRUCT:
1070
+ self.joinMetadataUpload = JoinMetadataUpload()
1071
+ self.joinMetadataUpload.read(iprot)
1072
+ else:
1073
+ iprot.skip(ftype)
1074
+ elif fid == 11:
1075
+ if ftype == TType.STRUCT:
1076
+ self.externalSourceSensor = ExternalSourceSensorNode()
1077
+ self.externalSourceSensor.read(iprot)
1078
+ else:
1079
+ iprot.skip(ftype)
1080
+ elif fid == 100:
1081
+ if ftype == TType.STRUCT:
1082
+ self.groupByBackfill = GroupByBackfillNode()
1083
+ self.groupByBackfill.read(iprot)
1084
+ else:
1085
+ iprot.skip(ftype)
1086
+ elif fid == 101:
1087
+ if ftype == TType.STRUCT:
1088
+ self.groupByUpload = GroupByUploadNode()
1089
+ self.groupByUpload.read(iprot)
1090
+ else:
1091
+ iprot.skip(ftype)
1092
+ elif fid == 102:
1093
+ if ftype == TType.STRUCT:
1094
+ self.groupByStreaming = GroupByStreamingNode()
1095
+ self.groupByStreaming.read(iprot)
1096
+ else:
1097
+ iprot.skip(ftype)
1098
+ elif fid == 103:
1099
+ if ftype == TType.STRUCT:
1100
+ self.groupByUploadToKV = GroupByUploadToKVNode()
1101
+ self.groupByUploadToKV.read(iprot)
1102
+ else:
1103
+ iprot.skip(ftype)
1104
+ elif fid == 200:
1105
+ if ftype == TType.STRUCT:
1106
+ self.stagingQueryBackfill = ai.chronon.api.ttypes.StagingQuery()
1107
+ self.stagingQueryBackfill.read(iprot)
1108
+ else:
1109
+ iprot.skip(ftype)
1110
+ else:
1111
+ iprot.skip(ftype)
1112
+ iprot.readFieldEnd()
1113
+ iprot.readStructEnd()
1114
+
1115
+ def write(self, oprot):
1116
+ self.validate()
1117
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1118
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1119
+ return
1120
+ oprot.writeStructBegin('NodeContent')
1121
+ if self.sourceWithFilter is not None:
1122
+ oprot.writeFieldBegin('sourceWithFilter', TType.STRUCT, 1)
1123
+ self.sourceWithFilter.write(oprot)
1124
+ oprot.writeFieldEnd()
1125
+ if self.joinBootstrap is not None:
1126
+ oprot.writeFieldBegin('joinBootstrap', TType.STRUCT, 2)
1127
+ self.joinBootstrap.write(oprot)
1128
+ oprot.writeFieldEnd()
1129
+ if self.joinPart is not None:
1130
+ oprot.writeFieldBegin('joinPart', TType.STRUCT, 3)
1131
+ self.joinPart.write(oprot)
1132
+ oprot.writeFieldEnd()
1133
+ if self.joinMerge is not None:
1134
+ oprot.writeFieldBegin('joinMerge', TType.STRUCT, 4)
1135
+ self.joinMerge.write(oprot)
1136
+ oprot.writeFieldEnd()
1137
+ if self.joinDerivation is not None:
1138
+ oprot.writeFieldBegin('joinDerivation', TType.STRUCT, 5)
1139
+ self.joinDerivation.write(oprot)
1140
+ oprot.writeFieldEnd()
1141
+ if self.labelJoin is not None:
1142
+ oprot.writeFieldBegin('labelJoin', TType.STRUCT, 6)
1143
+ self.labelJoin.write(oprot)
1144
+ oprot.writeFieldEnd()
1145
+ if self.monolithJoin is not None:
1146
+ oprot.writeFieldBegin('monolithJoin', TType.STRUCT, 7)
1147
+ self.monolithJoin.write(oprot)
1148
+ oprot.writeFieldEnd()
1149
+ if self.stagingQuery is not None:
1150
+ oprot.writeFieldBegin('stagingQuery', TType.STRUCT, 8)
1151
+ self.stagingQuery.write(oprot)
1152
+ oprot.writeFieldEnd()
1153
+ if self.joinMetadataUpload is not None:
1154
+ oprot.writeFieldBegin('joinMetadataUpload', TType.STRUCT, 10)
1155
+ self.joinMetadataUpload.write(oprot)
1156
+ oprot.writeFieldEnd()
1157
+ if self.externalSourceSensor is not None:
1158
+ oprot.writeFieldBegin('externalSourceSensor', TType.STRUCT, 11)
1159
+ self.externalSourceSensor.write(oprot)
1160
+ oprot.writeFieldEnd()
1161
+ if self.groupByBackfill is not None:
1162
+ oprot.writeFieldBegin('groupByBackfill', TType.STRUCT, 100)
1163
+ self.groupByBackfill.write(oprot)
1164
+ oprot.writeFieldEnd()
1165
+ if self.groupByUpload is not None:
1166
+ oprot.writeFieldBegin('groupByUpload', TType.STRUCT, 101)
1167
+ self.groupByUpload.write(oprot)
1168
+ oprot.writeFieldEnd()
1169
+ if self.groupByStreaming is not None:
1170
+ oprot.writeFieldBegin('groupByStreaming', TType.STRUCT, 102)
1171
+ self.groupByStreaming.write(oprot)
1172
+ oprot.writeFieldEnd()
1173
+ if self.groupByUploadToKV is not None:
1174
+ oprot.writeFieldBegin('groupByUploadToKV', TType.STRUCT, 103)
1175
+ self.groupByUploadToKV.write(oprot)
1176
+ oprot.writeFieldEnd()
1177
+ if self.stagingQueryBackfill is not None:
1178
+ oprot.writeFieldBegin('stagingQueryBackfill', TType.STRUCT, 200)
1179
+ self.stagingQueryBackfill.write(oprot)
1180
+ oprot.writeFieldEnd()
1181
+ oprot.writeFieldStop()
1182
+ oprot.writeStructEnd()
1183
+
1184
+ def validate(self):
1185
+ return
1186
+
1187
+ def __repr__(self):
1188
+ L = ['%s=%r' % (key, value)
1189
+ for key, value in self.__dict__.items()]
1190
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1191
+
1192
+ def __eq__(self, other):
1193
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1194
+
1195
+ def __ne__(self, other):
1196
+ return not (self == other)
1197
+
1198
+
1199
+ class Node(object):
1200
+ """
1201
+ Attributes:
1202
+ - metaData
1203
+ - content
1204
+ - semanticHash
1205
+ - isLongRunning
1206
+
1207
+ """
1208
+ thrift_spec = None
1209
+
1210
+
1211
+ def __init__(self, metaData = None, content = None, semanticHash = None, isLongRunning = None,):
1212
+ self.metaData = metaData
1213
+ self.content = content
1214
+ self.semanticHash = semanticHash
1215
+ self.isLongRunning = isLongRunning
1216
+
1217
+ def read(self, iprot):
1218
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1219
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1220
+ return
1221
+ iprot.readStructBegin()
1222
+ while True:
1223
+ (fname, ftype, fid) = iprot.readFieldBegin()
1224
+ if ftype == TType.STOP:
1225
+ break
1226
+ if fid == 1:
1227
+ if ftype == TType.STRUCT:
1228
+ self.metaData = ai.chronon.api.ttypes.MetaData()
1229
+ self.metaData.read(iprot)
1230
+ else:
1231
+ iprot.skip(ftype)
1232
+ elif fid == 2:
1233
+ if ftype == TType.STRUCT:
1234
+ self.content = NodeContent()
1235
+ self.content.read(iprot)
1236
+ else:
1237
+ iprot.skip(ftype)
1238
+ elif fid == 3:
1239
+ if ftype == TType.STRING:
1240
+ self.semanticHash = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1241
+ else:
1242
+ iprot.skip(ftype)
1243
+ elif fid == 4:
1244
+ if ftype == TType.BOOL:
1245
+ self.isLongRunning = iprot.readBool()
1246
+ else:
1247
+ iprot.skip(ftype)
1248
+ else:
1249
+ iprot.skip(ftype)
1250
+ iprot.readFieldEnd()
1251
+ iprot.readStructEnd()
1252
+
1253
+ def write(self, oprot):
1254
+ self.validate()
1255
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1256
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1257
+ return
1258
+ oprot.writeStructBegin('Node')
1259
+ if self.metaData is not None:
1260
+ oprot.writeFieldBegin('metaData', TType.STRUCT, 1)
1261
+ self.metaData.write(oprot)
1262
+ oprot.writeFieldEnd()
1263
+ if self.content is not None:
1264
+ oprot.writeFieldBegin('content', TType.STRUCT, 2)
1265
+ self.content.write(oprot)
1266
+ oprot.writeFieldEnd()
1267
+ if self.semanticHash is not None:
1268
+ oprot.writeFieldBegin('semanticHash', TType.STRING, 3)
1269
+ oprot.writeString(self.semanticHash.encode('utf-8') if sys.version_info[0] == 2 else self.semanticHash)
1270
+ oprot.writeFieldEnd()
1271
+ if self.isLongRunning is not None:
1272
+ oprot.writeFieldBegin('isLongRunning', TType.BOOL, 4)
1273
+ oprot.writeBool(self.isLongRunning)
1274
+ oprot.writeFieldEnd()
1275
+ oprot.writeFieldStop()
1276
+ oprot.writeStructEnd()
1277
+
1278
+ def validate(self):
1279
+ return
1280
+
1281
+ def __repr__(self):
1282
+ L = ['%s=%r' % (key, value)
1283
+ for key, value in self.__dict__.items()]
1284
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1285
+
1286
+ def __eq__(self, other):
1287
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1288
+
1289
+ def __ne__(self, other):
1290
+ return not (self == other)
1291
+
1292
+
1293
+ class ConfPlan(object):
1294
+ """
1295
+ Attributes:
1296
+ - nodes
1297
+ - terminalNodeNames
1298
+
1299
+ """
1300
+ thrift_spec = None
1301
+
1302
+
1303
+ def __init__(self, nodes = None, terminalNodeNames = None,):
1304
+ self.nodes = nodes
1305
+ self.terminalNodeNames = terminalNodeNames
1306
+
1307
+ def read(self, iprot):
1308
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1309
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1310
+ return
1311
+ iprot.readStructBegin()
1312
+ while True:
1313
+ (fname, ftype, fid) = iprot.readFieldBegin()
1314
+ if ftype == TType.STOP:
1315
+ break
1316
+ if fid == 1:
1317
+ if ftype == TType.LIST:
1318
+ self.nodes = []
1319
+ (_etype35, _size32) = iprot.readListBegin()
1320
+ for _i36 in range(_size32):
1321
+ _elem37 = Node()
1322
+ _elem37.read(iprot)
1323
+ self.nodes.append(_elem37)
1324
+ iprot.readListEnd()
1325
+ else:
1326
+ iprot.skip(ftype)
1327
+ elif fid == 2:
1328
+ if ftype == TType.MAP:
1329
+ self.terminalNodeNames = {}
1330
+ (_ktype39, _vtype40, _size38) = iprot.readMapBegin()
1331
+ for _i42 in range(_size38):
1332
+ _key43 = iprot.readI32()
1333
+ _val44 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1334
+ self.terminalNodeNames[_key43] = _val44
1335
+ iprot.readMapEnd()
1336
+ else:
1337
+ iprot.skip(ftype)
1338
+ else:
1339
+ iprot.skip(ftype)
1340
+ iprot.readFieldEnd()
1341
+ iprot.readStructEnd()
1342
+
1343
+ def write(self, oprot):
1344
+ self.validate()
1345
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1346
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1347
+ return
1348
+ oprot.writeStructBegin('ConfPlan')
1349
+ if self.nodes is not None:
1350
+ oprot.writeFieldBegin('nodes', TType.LIST, 1)
1351
+ oprot.writeListBegin(TType.STRUCT, len(self.nodes))
1352
+ for iter45 in self.nodes:
1353
+ iter45.write(oprot)
1354
+ oprot.writeListEnd()
1355
+ oprot.writeFieldEnd()
1356
+ if self.terminalNodeNames is not None:
1357
+ oprot.writeFieldBegin('terminalNodeNames', TType.MAP, 2)
1358
+ oprot.writeMapBegin(TType.I32, TType.STRING, len(self.terminalNodeNames))
1359
+ for kiter46, viter47 in self.terminalNodeNames.items():
1360
+ oprot.writeI32(kiter46)
1361
+ oprot.writeString(viter47.encode('utf-8') if sys.version_info[0] == 2 else viter47)
1362
+ oprot.writeMapEnd()
1363
+ oprot.writeFieldEnd()
1364
+ oprot.writeFieldStop()
1365
+ oprot.writeStructEnd()
1366
+
1367
+ def validate(self):
1368
+ return
1369
+
1370
+ def __repr__(self):
1371
+ L = ['%s=%r' % (key, value)
1372
+ for key, value in self.__dict__.items()]
1373
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1374
+
1375
+ def __eq__(self, other):
1376
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1377
+
1378
+ def __ne__(self, other):
1379
+ return not (self == other)
1380
+ all_structs.append(SourceWithFilterNode)
1381
+ SourceWithFilterNode.thrift_spec = (
1382
+ None, # 0
1383
+ None, # 1
1384
+ (2, TType.STRUCT, 'source', [ai.chronon.api.ttypes.Source, None], None, ), # 2
1385
+ (3, TType.MAP, 'excludeKeys', (TType.STRING, 'UTF8', TType.LIST, (TType.STRING, 'UTF8', False), False), None, ), # 3
1386
+ )
1387
+ all_structs.append(JoinBootstrapNode)
1388
+ JoinBootstrapNode.thrift_spec = (
1389
+ None, # 0
1390
+ None, # 1
1391
+ (2, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 2
1392
+ )
1393
+ all_structs.append(JoinMergeNode)
1394
+ JoinMergeNode.thrift_spec = (
1395
+ None, # 0
1396
+ None, # 1
1397
+ (2, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 2
1398
+ )
1399
+ all_structs.append(JoinDerivationNode)
1400
+ JoinDerivationNode.thrift_spec = (
1401
+ None, # 0
1402
+ None, # 1
1403
+ (2, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 2
1404
+ )
1405
+ all_structs.append(JoinPartNode)
1406
+ JoinPartNode.thrift_spec = (
1407
+ None, # 0
1408
+ None, # 1
1409
+ (2, TType.STRING, 'leftSourceTable', 'UTF8', None, ), # 2
1410
+ (3, TType.I32, 'leftDataModel', None, None, ), # 3
1411
+ (4, TType.STRUCT, 'joinPart', [ai.chronon.api.ttypes.JoinPart, None], None, ), # 4
1412
+ (5, TType.MAP, 'skewKeys', (TType.STRING, 'UTF8', TType.LIST, (TType.STRING, 'UTF8', False), False), None, ), # 5
1413
+ )
1414
+ all_structs.append(LabelJoinNode)
1415
+ LabelJoinNode.thrift_spec = (
1416
+ None, # 0
1417
+ None, # 1
1418
+ (2, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 2
1419
+ )
1420
+ all_structs.append(MonolithJoinNode)
1421
+ MonolithJoinNode.thrift_spec = (
1422
+ None, # 0
1423
+ (1, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 1
1424
+ )
1425
+ all_structs.append(StagingQueryNode)
1426
+ StagingQueryNode.thrift_spec = (
1427
+ None, # 0
1428
+ None, # 1
1429
+ (2, TType.STRUCT, 'stagingQuery', [ai.chronon.api.ttypes.StagingQuery, None], None, ), # 2
1430
+ )
1431
+ all_structs.append(GroupByBackfillNode)
1432
+ GroupByBackfillNode.thrift_spec = (
1433
+ None, # 0
1434
+ None, # 1
1435
+ (2, TType.STRUCT, 'groupBy', [ai.chronon.api.ttypes.GroupBy, None], None, ), # 2
1436
+ )
1437
+ all_structs.append(GroupByUploadNode)
1438
+ GroupByUploadNode.thrift_spec = (
1439
+ None, # 0
1440
+ None, # 1
1441
+ (2, TType.STRUCT, 'groupBy', [ai.chronon.api.ttypes.GroupBy, None], None, ), # 2
1442
+ )
1443
+ all_structs.append(GroupByUploadToKVNode)
1444
+ GroupByUploadToKVNode.thrift_spec = (
1445
+ None, # 0
1446
+ None, # 1
1447
+ (2, TType.STRUCT, 'groupBy', [ai.chronon.api.ttypes.GroupBy, None], None, ), # 2
1448
+ )
1449
+ all_structs.append(GroupByStreamingNode)
1450
+ GroupByStreamingNode.thrift_spec = (
1451
+ None, # 0
1452
+ None, # 1
1453
+ (2, TType.STRUCT, 'groupBy', [ai.chronon.api.ttypes.GroupBy, None], None, ), # 2
1454
+ )
1455
+ all_structs.append(JoinMetadataUpload)
1456
+ JoinMetadataUpload.thrift_spec = (
1457
+ None, # 0
1458
+ None, # 1
1459
+ (2, TType.STRUCT, 'join', [ai.chronon.api.ttypes.Join, None], None, ), # 2
1460
+ )
1461
+ all_structs.append(ExternalSourceSensorNode)
1462
+ ExternalSourceSensorNode.thrift_spec = (
1463
+ None, # 0
1464
+ (1, TType.STRUCT, 'metaData', [ai.chronon.api.ttypes.MetaData, None], None, ), # 1
1465
+ (2, TType.STRING, 'sourceName', 'UTF8', None, ), # 2
1466
+ )
1467
+ all_structs.append(NodeContent)
1468
+ NodeContent.thrift_spec = (
1469
+ None, # 0
1470
+ (1, TType.STRUCT, 'sourceWithFilter', [SourceWithFilterNode, None], None, ), # 1
1471
+ (2, TType.STRUCT, 'joinBootstrap', [JoinBootstrapNode, None], None, ), # 2
1472
+ (3, TType.STRUCT, 'joinPart', [JoinPartNode, None], None, ), # 3
1473
+ (4, TType.STRUCT, 'joinMerge', [JoinMergeNode, None], None, ), # 4
1474
+ (5, TType.STRUCT, 'joinDerivation', [JoinDerivationNode, None], None, ), # 5
1475
+ (6, TType.STRUCT, 'labelJoin', [LabelJoinNode, None], None, ), # 6
1476
+ (7, TType.STRUCT, 'monolithJoin', [MonolithJoinNode, None], None, ), # 7
1477
+ (8, TType.STRUCT, 'stagingQuery', [StagingQueryNode, None], None, ), # 8
1478
+ None, # 9
1479
+ (10, TType.STRUCT, 'joinMetadataUpload', [JoinMetadataUpload, None], None, ), # 10
1480
+ (11, TType.STRUCT, 'externalSourceSensor', [ExternalSourceSensorNode, None], None, ), # 11
1481
+ None, # 12
1482
+ None, # 13
1483
+ None, # 14
1484
+ None, # 15
1485
+ None, # 16
1486
+ None, # 17
1487
+ None, # 18
1488
+ None, # 19
1489
+ None, # 20
1490
+ None, # 21
1491
+ None, # 22
1492
+ None, # 23
1493
+ None, # 24
1494
+ None, # 25
1495
+ None, # 26
1496
+ None, # 27
1497
+ None, # 28
1498
+ None, # 29
1499
+ None, # 30
1500
+ None, # 31
1501
+ None, # 32
1502
+ None, # 33
1503
+ None, # 34
1504
+ None, # 35
1505
+ None, # 36
1506
+ None, # 37
1507
+ None, # 38
1508
+ None, # 39
1509
+ None, # 40
1510
+ None, # 41
1511
+ None, # 42
1512
+ None, # 43
1513
+ None, # 44
1514
+ None, # 45
1515
+ None, # 46
1516
+ None, # 47
1517
+ None, # 48
1518
+ None, # 49
1519
+ None, # 50
1520
+ None, # 51
1521
+ None, # 52
1522
+ None, # 53
1523
+ None, # 54
1524
+ None, # 55
1525
+ None, # 56
1526
+ None, # 57
1527
+ None, # 58
1528
+ None, # 59
1529
+ None, # 60
1530
+ None, # 61
1531
+ None, # 62
1532
+ None, # 63
1533
+ None, # 64
1534
+ None, # 65
1535
+ None, # 66
1536
+ None, # 67
1537
+ None, # 68
1538
+ None, # 69
1539
+ None, # 70
1540
+ None, # 71
1541
+ None, # 72
1542
+ None, # 73
1543
+ None, # 74
1544
+ None, # 75
1545
+ None, # 76
1546
+ None, # 77
1547
+ None, # 78
1548
+ None, # 79
1549
+ None, # 80
1550
+ None, # 81
1551
+ None, # 82
1552
+ None, # 83
1553
+ None, # 84
1554
+ None, # 85
1555
+ None, # 86
1556
+ None, # 87
1557
+ None, # 88
1558
+ None, # 89
1559
+ None, # 90
1560
+ None, # 91
1561
+ None, # 92
1562
+ None, # 93
1563
+ None, # 94
1564
+ None, # 95
1565
+ None, # 96
1566
+ None, # 97
1567
+ None, # 98
1568
+ None, # 99
1569
+ (100, TType.STRUCT, 'groupByBackfill', [GroupByBackfillNode, None], None, ), # 100
1570
+ (101, TType.STRUCT, 'groupByUpload', [GroupByUploadNode, None], None, ), # 101
1571
+ (102, TType.STRUCT, 'groupByStreaming', [GroupByStreamingNode, None], None, ), # 102
1572
+ (103, TType.STRUCT, 'groupByUploadToKV', [GroupByUploadToKVNode, None], None, ), # 103
1573
+ None, # 104
1574
+ None, # 105
1575
+ None, # 106
1576
+ None, # 107
1577
+ None, # 108
1578
+ None, # 109
1579
+ None, # 110
1580
+ None, # 111
1581
+ None, # 112
1582
+ None, # 113
1583
+ None, # 114
1584
+ None, # 115
1585
+ None, # 116
1586
+ None, # 117
1587
+ None, # 118
1588
+ None, # 119
1589
+ None, # 120
1590
+ None, # 121
1591
+ None, # 122
1592
+ None, # 123
1593
+ None, # 124
1594
+ None, # 125
1595
+ None, # 126
1596
+ None, # 127
1597
+ None, # 128
1598
+ None, # 129
1599
+ None, # 130
1600
+ None, # 131
1601
+ None, # 132
1602
+ None, # 133
1603
+ None, # 134
1604
+ None, # 135
1605
+ None, # 136
1606
+ None, # 137
1607
+ None, # 138
1608
+ None, # 139
1609
+ None, # 140
1610
+ None, # 141
1611
+ None, # 142
1612
+ None, # 143
1613
+ None, # 144
1614
+ None, # 145
1615
+ None, # 146
1616
+ None, # 147
1617
+ None, # 148
1618
+ None, # 149
1619
+ None, # 150
1620
+ None, # 151
1621
+ None, # 152
1622
+ None, # 153
1623
+ None, # 154
1624
+ None, # 155
1625
+ None, # 156
1626
+ None, # 157
1627
+ None, # 158
1628
+ None, # 159
1629
+ None, # 160
1630
+ None, # 161
1631
+ None, # 162
1632
+ None, # 163
1633
+ None, # 164
1634
+ None, # 165
1635
+ None, # 166
1636
+ None, # 167
1637
+ None, # 168
1638
+ None, # 169
1639
+ None, # 170
1640
+ None, # 171
1641
+ None, # 172
1642
+ None, # 173
1643
+ None, # 174
1644
+ None, # 175
1645
+ None, # 176
1646
+ None, # 177
1647
+ None, # 178
1648
+ None, # 179
1649
+ None, # 180
1650
+ None, # 181
1651
+ None, # 182
1652
+ None, # 183
1653
+ None, # 184
1654
+ None, # 185
1655
+ None, # 186
1656
+ None, # 187
1657
+ None, # 188
1658
+ None, # 189
1659
+ None, # 190
1660
+ None, # 191
1661
+ None, # 192
1662
+ None, # 193
1663
+ None, # 194
1664
+ None, # 195
1665
+ None, # 196
1666
+ None, # 197
1667
+ None, # 198
1668
+ None, # 199
1669
+ (200, TType.STRUCT, 'stagingQueryBackfill', [ai.chronon.api.ttypes.StagingQuery, None], None, ), # 200
1670
+ )
1671
+ all_structs.append(Node)
1672
+ Node.thrift_spec = (
1673
+ None, # 0
1674
+ (1, TType.STRUCT, 'metaData', [ai.chronon.api.ttypes.MetaData, None], None, ), # 1
1675
+ (2, TType.STRUCT, 'content', [NodeContent, None], None, ), # 2
1676
+ (3, TType.STRING, 'semanticHash', 'UTF8', None, ), # 3
1677
+ (4, TType.BOOL, 'isLongRunning', None, None, ), # 4
1678
+ )
1679
+ all_structs.append(ConfPlan)
1680
+ ConfPlan.thrift_spec = (
1681
+ None, # 0
1682
+ (1, TType.LIST, 'nodes', (TType.STRUCT, [Node, None], False), None, ), # 1
1683
+ (2, TType.MAP, 'terminalNodeNames', (TType.I32, None, TType.STRING, 'UTF8', False), None, ), # 2
1684
+ )
1685
+ fix_spec(all_structs)
1686
+ del all_structs