awx-zipline-ai 0.0.32__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. __init__.py +0 -0
  2. agent/__init__.py +1 -0
  3. agent/constants.py +15 -0
  4. agent/ttypes.py +1684 -0
  5. ai/__init__.py +0 -0
  6. ai/chronon/__init__.py +0 -0
  7. ai/chronon/airflow_helpers.py +248 -0
  8. ai/chronon/cli/__init__.py +0 -0
  9. ai/chronon/cli/compile/__init__.py +0 -0
  10. ai/chronon/cli/compile/column_hashing.py +336 -0
  11. ai/chronon/cli/compile/compile_context.py +173 -0
  12. ai/chronon/cli/compile/compiler.py +183 -0
  13. ai/chronon/cli/compile/conf_validator.py +742 -0
  14. ai/chronon/cli/compile/display/__init__.py +0 -0
  15. ai/chronon/cli/compile/display/class_tracker.py +102 -0
  16. ai/chronon/cli/compile/display/compile_status.py +95 -0
  17. ai/chronon/cli/compile/display/compiled_obj.py +12 -0
  18. ai/chronon/cli/compile/display/console.py +3 -0
  19. ai/chronon/cli/compile/display/diff_result.py +111 -0
  20. ai/chronon/cli/compile/fill_templates.py +35 -0
  21. ai/chronon/cli/compile/parse_configs.py +134 -0
  22. ai/chronon/cli/compile/parse_teams.py +242 -0
  23. ai/chronon/cli/compile/serializer.py +109 -0
  24. ai/chronon/cli/compile/version_utils.py +42 -0
  25. ai/chronon/cli/git_utils.py +145 -0
  26. ai/chronon/cli/logger.py +59 -0
  27. ai/chronon/constants.py +3 -0
  28. ai/chronon/group_by.py +692 -0
  29. ai/chronon/join.py +580 -0
  30. ai/chronon/logger.py +23 -0
  31. ai/chronon/model.py +40 -0
  32. ai/chronon/query.py +126 -0
  33. ai/chronon/repo/__init__.py +39 -0
  34. ai/chronon/repo/aws.py +284 -0
  35. ai/chronon/repo/cluster.py +136 -0
  36. ai/chronon/repo/compile.py +62 -0
  37. ai/chronon/repo/constants.py +164 -0
  38. ai/chronon/repo/default_runner.py +269 -0
  39. ai/chronon/repo/explore.py +418 -0
  40. ai/chronon/repo/extract_objects.py +134 -0
  41. ai/chronon/repo/gcp.py +586 -0
  42. ai/chronon/repo/gitpython_utils.py +15 -0
  43. ai/chronon/repo/hub_runner.py +261 -0
  44. ai/chronon/repo/hub_uploader.py +109 -0
  45. ai/chronon/repo/init.py +60 -0
  46. ai/chronon/repo/join_backfill.py +119 -0
  47. ai/chronon/repo/run.py +296 -0
  48. ai/chronon/repo/serializer.py +133 -0
  49. ai/chronon/repo/team_json_utils.py +46 -0
  50. ai/chronon/repo/utils.py +481 -0
  51. ai/chronon/repo/zipline.py +35 -0
  52. ai/chronon/repo/zipline_hub.py +277 -0
  53. ai/chronon/resources/__init__.py +0 -0
  54. ai/chronon/resources/gcp/__init__.py +0 -0
  55. ai/chronon/resources/gcp/group_bys/__init__.py +0 -0
  56. ai/chronon/resources/gcp/group_bys/test/__init__.py +0 -0
  57. ai/chronon/resources/gcp/group_bys/test/data.py +30 -0
  58. ai/chronon/resources/gcp/joins/__init__.py +0 -0
  59. ai/chronon/resources/gcp/joins/test/__init__.py +0 -0
  60. ai/chronon/resources/gcp/joins/test/data.py +26 -0
  61. ai/chronon/resources/gcp/sources/__init__.py +0 -0
  62. ai/chronon/resources/gcp/sources/test/__init__.py +0 -0
  63. ai/chronon/resources/gcp/sources/test/data.py +26 -0
  64. ai/chronon/resources/gcp/teams.py +58 -0
  65. ai/chronon/source.py +86 -0
  66. ai/chronon/staging_query.py +226 -0
  67. ai/chronon/types.py +58 -0
  68. ai/chronon/utils.py +510 -0
  69. ai/chronon/windows.py +48 -0
  70. awx_zipline_ai-0.0.32.dist-info/METADATA +197 -0
  71. awx_zipline_ai-0.0.32.dist-info/RECORD +96 -0
  72. awx_zipline_ai-0.0.32.dist-info/WHEEL +5 -0
  73. awx_zipline_ai-0.0.32.dist-info/entry_points.txt +2 -0
  74. awx_zipline_ai-0.0.32.dist-info/top_level.txt +4 -0
  75. gen_thrift/__init__.py +0 -0
  76. gen_thrift/api/__init__.py +1 -0
  77. gen_thrift/api/constants.py +15 -0
  78. gen_thrift/api/ttypes.py +3754 -0
  79. gen_thrift/common/__init__.py +1 -0
  80. gen_thrift/common/constants.py +15 -0
  81. gen_thrift/common/ttypes.py +1814 -0
  82. gen_thrift/eval/__init__.py +1 -0
  83. gen_thrift/eval/constants.py +15 -0
  84. gen_thrift/eval/ttypes.py +660 -0
  85. gen_thrift/fetcher/__init__.py +1 -0
  86. gen_thrift/fetcher/constants.py +15 -0
  87. gen_thrift/fetcher/ttypes.py +127 -0
  88. gen_thrift/hub/__init__.py +1 -0
  89. gen_thrift/hub/constants.py +15 -0
  90. gen_thrift/hub/ttypes.py +1109 -0
  91. gen_thrift/observability/__init__.py +1 -0
  92. gen_thrift/observability/constants.py +15 -0
  93. gen_thrift/observability/ttypes.py +2355 -0
  94. gen_thrift/planner/__init__.py +1 -0
  95. gen_thrift/planner/constants.py +15 -0
  96. gen_thrift/planner/ttypes.py +1967 -0
@@ -0,0 +1,1814 @@
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
+
16
+ from thrift.transport import TTransport
17
+ all_structs = []
18
+
19
+
20
+ class TimeUnit(object):
21
+ HOURS = 0
22
+ DAYS = 1
23
+ MINUTES = 2
24
+
25
+ _VALUES_TO_NAMES = {
26
+ 0: "HOURS",
27
+ 1: "DAYS",
28
+ 2: "MINUTES",
29
+ }
30
+
31
+ _NAMES_TO_VALUES = {
32
+ "HOURS": 0,
33
+ "DAYS": 1,
34
+ "MINUTES": 2,
35
+ }
36
+
37
+
38
+ class KvScanStrategy(object):
39
+ ALL = 0
40
+ LATEST = 1
41
+
42
+ _VALUES_TO_NAMES = {
43
+ 0: "ALL",
44
+ 1: "LATEST",
45
+ }
46
+
47
+ _NAMES_TO_VALUES = {
48
+ "ALL": 0,
49
+ "LATEST": 1,
50
+ }
51
+
52
+
53
+ class Window(object):
54
+ """
55
+ Attributes:
56
+ - length
57
+ - timeUnit
58
+
59
+ """
60
+ thrift_spec = None
61
+
62
+
63
+ def __init__(self, length = None, timeUnit = None,):
64
+ self.length = length
65
+ self.timeUnit = timeUnit
66
+
67
+ def read(self, iprot):
68
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
69
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
70
+ return
71
+ iprot.readStructBegin()
72
+ while True:
73
+ (fname, ftype, fid) = iprot.readFieldBegin()
74
+ if ftype == TType.STOP:
75
+ break
76
+ if fid == 1:
77
+ if ftype == TType.I32:
78
+ self.length = iprot.readI32()
79
+ else:
80
+ iprot.skip(ftype)
81
+ elif fid == 2:
82
+ if ftype == TType.I32:
83
+ self.timeUnit = iprot.readI32()
84
+ else:
85
+ iprot.skip(ftype)
86
+ else:
87
+ iprot.skip(ftype)
88
+ iprot.readFieldEnd()
89
+ iprot.readStructEnd()
90
+
91
+ def write(self, oprot):
92
+ self.validate()
93
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
94
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
95
+ return
96
+ oprot.writeStructBegin('Window')
97
+ if self.length is not None:
98
+ oprot.writeFieldBegin('length', TType.I32, 1)
99
+ oprot.writeI32(self.length)
100
+ oprot.writeFieldEnd()
101
+ if self.timeUnit is not None:
102
+ oprot.writeFieldBegin('timeUnit', TType.I32, 2)
103
+ oprot.writeI32(self.timeUnit)
104
+ oprot.writeFieldEnd()
105
+ oprot.writeFieldStop()
106
+ oprot.writeStructEnd()
107
+
108
+ def validate(self):
109
+ return
110
+
111
+ def __repr__(self):
112
+ L = ['%s=%r' % (key, value)
113
+ for key, value in self.__dict__.items()]
114
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
115
+
116
+ def __eq__(self, other):
117
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
118
+
119
+ def __ne__(self, other):
120
+ return not (self == other)
121
+
122
+
123
+ class DateRange(object):
124
+ """
125
+ Attributes:
126
+ - startDate
127
+ - endDate
128
+
129
+ """
130
+ thrift_spec = None
131
+
132
+
133
+ def __init__(self, startDate = None, endDate = None,):
134
+ self.startDate = startDate
135
+ self.endDate = endDate
136
+
137
+ def read(self, iprot):
138
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
139
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
140
+ return
141
+ iprot.readStructBegin()
142
+ while True:
143
+ (fname, ftype, fid) = iprot.readFieldBegin()
144
+ if ftype == TType.STOP:
145
+ break
146
+ if fid == 1:
147
+ if ftype == TType.STRING:
148
+ self.startDate = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
149
+ else:
150
+ iprot.skip(ftype)
151
+ elif fid == 2:
152
+ if ftype == TType.STRING:
153
+ self.endDate = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
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('DateRange')
167
+ if self.startDate is not None:
168
+ oprot.writeFieldBegin('startDate', TType.STRING, 1)
169
+ oprot.writeString(self.startDate.encode('utf-8') if sys.version_info[0] == 2 else self.startDate)
170
+ oprot.writeFieldEnd()
171
+ if self.endDate is not None:
172
+ oprot.writeFieldBegin('endDate', TType.STRING, 2)
173
+ oprot.writeString(self.endDate.encode('utf-8') if sys.version_info[0] == 2 else self.endDate)
174
+ oprot.writeFieldEnd()
175
+ oprot.writeFieldStop()
176
+ oprot.writeStructEnd()
177
+
178
+ def validate(self):
179
+ return
180
+
181
+ def __repr__(self):
182
+ L = ['%s=%r' % (key, value)
183
+ for key, value in self.__dict__.items()]
184
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
185
+
186
+ def __eq__(self, other):
187
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
188
+
189
+ def __ne__(self, other):
190
+ return not (self == other)
191
+
192
+
193
+ class EnvironmentVariables(object):
194
+ """
195
+ env vars for different modes of execution - with "common" applying to all modes
196
+ the submitter will set these env vars prior to launching the job
197
+
198
+ these env vars are layered in order of priority
199
+ 1. company file defaults specified in teams.py - in the "common" team
200
+ 2. team wide defaults that apply to all objects in the team folder
201
+ 3. object specific defaults - applies to only the object that are declares them
202
+
203
+ All the maps from the above three places are merged to create final env var
204
+
205
+
206
+ Attributes:
207
+ - common
208
+ - modeEnvironments
209
+
210
+ """
211
+ thrift_spec = None
212
+
213
+
214
+ def __init__(self, common = None, modeEnvironments = None,):
215
+ self.common = common
216
+ self.modeEnvironments = modeEnvironments
217
+
218
+ def read(self, iprot):
219
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
220
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
221
+ return
222
+ iprot.readStructBegin()
223
+ while True:
224
+ (fname, ftype, fid) = iprot.readFieldBegin()
225
+ if ftype == TType.STOP:
226
+ break
227
+ if fid == 1:
228
+ if ftype == TType.MAP:
229
+ self.common = {}
230
+ (_ktype1, _vtype2, _size0) = iprot.readMapBegin()
231
+ for _i4 in range(_size0):
232
+ _key5 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
233
+ _val6 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
234
+ self.common[_key5] = _val6
235
+ iprot.readMapEnd()
236
+ else:
237
+ iprot.skip(ftype)
238
+ elif fid == 2:
239
+ if ftype == TType.MAP:
240
+ self.modeEnvironments = {}
241
+ (_ktype8, _vtype9, _size7) = iprot.readMapBegin()
242
+ for _i11 in range(_size7):
243
+ _key12 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
244
+ _val13 = {}
245
+ (_ktype15, _vtype16, _size14) = iprot.readMapBegin()
246
+ for _i18 in range(_size14):
247
+ _key19 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
248
+ _val20 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
249
+ _val13[_key19] = _val20
250
+ iprot.readMapEnd()
251
+ self.modeEnvironments[_key12] = _val13
252
+ iprot.readMapEnd()
253
+ else:
254
+ iprot.skip(ftype)
255
+ else:
256
+ iprot.skip(ftype)
257
+ iprot.readFieldEnd()
258
+ iprot.readStructEnd()
259
+
260
+ def write(self, oprot):
261
+ self.validate()
262
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
263
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
264
+ return
265
+ oprot.writeStructBegin('EnvironmentVariables')
266
+ if self.common is not None:
267
+ oprot.writeFieldBegin('common', TType.MAP, 1)
268
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.common))
269
+ for kiter21, viter22 in self.common.items():
270
+ oprot.writeString(kiter21.encode('utf-8') if sys.version_info[0] == 2 else kiter21)
271
+ oprot.writeString(viter22.encode('utf-8') if sys.version_info[0] == 2 else viter22)
272
+ oprot.writeMapEnd()
273
+ oprot.writeFieldEnd()
274
+ if self.modeEnvironments is not None:
275
+ oprot.writeFieldBegin('modeEnvironments', TType.MAP, 2)
276
+ oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.modeEnvironments))
277
+ for kiter23, viter24 in self.modeEnvironments.items():
278
+ oprot.writeString(kiter23.encode('utf-8') if sys.version_info[0] == 2 else kiter23)
279
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(viter24))
280
+ for kiter25, viter26 in viter24.items():
281
+ oprot.writeString(kiter25.encode('utf-8') if sys.version_info[0] == 2 else kiter25)
282
+ oprot.writeString(viter26.encode('utf-8') if sys.version_info[0] == 2 else viter26)
283
+ oprot.writeMapEnd()
284
+ oprot.writeMapEnd()
285
+ oprot.writeFieldEnd()
286
+ oprot.writeFieldStop()
287
+ oprot.writeStructEnd()
288
+
289
+ def validate(self):
290
+ return
291
+
292
+ def __repr__(self):
293
+ L = ['%s=%r' % (key, value)
294
+ for key, value in self.__dict__.items()]
295
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
296
+
297
+ def __eq__(self, other):
298
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
299
+
300
+ def __ne__(self, other):
301
+ return not (self == other)
302
+
303
+
304
+ class ConfigProperties(object):
305
+ """
306
+ job config for different modes of execution - with "common" applying to all modes
307
+ usually these are spark or flink conf params like "spark.executor.memory" etc
308
+
309
+ these confs are layered in order of priority
310
+ 1. company file defaults specified in teams.py - in the "common" team
311
+ 2. team wide defaults that apply to all objects in the team folder
312
+ 3. object specific defaults - applies to only the object that are declares them
313
+
314
+ All the maps from the above three places are merged to create final conf map
315
+
316
+
317
+ Attributes:
318
+ - common
319
+ - modeConfigs
320
+
321
+ """
322
+ thrift_spec = None
323
+
324
+
325
+ def __init__(self, common = None, modeConfigs = None,):
326
+ self.common = common
327
+ self.modeConfigs = modeConfigs
328
+
329
+ def read(self, iprot):
330
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
331
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
332
+ return
333
+ iprot.readStructBegin()
334
+ while True:
335
+ (fname, ftype, fid) = iprot.readFieldBegin()
336
+ if ftype == TType.STOP:
337
+ break
338
+ if fid == 1:
339
+ if ftype == TType.MAP:
340
+ self.common = {}
341
+ (_ktype28, _vtype29, _size27) = iprot.readMapBegin()
342
+ for _i31 in range(_size27):
343
+ _key32 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
344
+ _val33 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
345
+ self.common[_key32] = _val33
346
+ iprot.readMapEnd()
347
+ else:
348
+ iprot.skip(ftype)
349
+ elif fid == 2:
350
+ if ftype == TType.MAP:
351
+ self.modeConfigs = {}
352
+ (_ktype35, _vtype36, _size34) = iprot.readMapBegin()
353
+ for _i38 in range(_size34):
354
+ _key39 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
355
+ _val40 = {}
356
+ (_ktype42, _vtype43, _size41) = iprot.readMapBegin()
357
+ for _i45 in range(_size41):
358
+ _key46 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
359
+ _val47 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
360
+ _val40[_key46] = _val47
361
+ iprot.readMapEnd()
362
+ self.modeConfigs[_key39] = _val40
363
+ iprot.readMapEnd()
364
+ else:
365
+ iprot.skip(ftype)
366
+ else:
367
+ iprot.skip(ftype)
368
+ iprot.readFieldEnd()
369
+ iprot.readStructEnd()
370
+
371
+ def write(self, oprot):
372
+ self.validate()
373
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
374
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
375
+ return
376
+ oprot.writeStructBegin('ConfigProperties')
377
+ if self.common is not None:
378
+ oprot.writeFieldBegin('common', TType.MAP, 1)
379
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.common))
380
+ for kiter48, viter49 in self.common.items():
381
+ oprot.writeString(kiter48.encode('utf-8') if sys.version_info[0] == 2 else kiter48)
382
+ oprot.writeString(viter49.encode('utf-8') if sys.version_info[0] == 2 else viter49)
383
+ oprot.writeMapEnd()
384
+ oprot.writeFieldEnd()
385
+ if self.modeConfigs is not None:
386
+ oprot.writeFieldBegin('modeConfigs', TType.MAP, 2)
387
+ oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.modeConfigs))
388
+ for kiter50, viter51 in self.modeConfigs.items():
389
+ oprot.writeString(kiter50.encode('utf-8') if sys.version_info[0] == 2 else kiter50)
390
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(viter51))
391
+ for kiter52, viter53 in viter51.items():
392
+ oprot.writeString(kiter52.encode('utf-8') if sys.version_info[0] == 2 else kiter52)
393
+ oprot.writeString(viter53.encode('utf-8') if sys.version_info[0] == 2 else viter53)
394
+ oprot.writeMapEnd()
395
+ oprot.writeMapEnd()
396
+ oprot.writeFieldEnd()
397
+ oprot.writeFieldStop()
398
+ oprot.writeStructEnd()
399
+
400
+ def validate(self):
401
+ return
402
+
403
+ def __repr__(self):
404
+ L = ['%s=%r' % (key, value)
405
+ for key, value in self.__dict__.items()]
406
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
407
+
408
+ def __eq__(self, other):
409
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
410
+
411
+ def __ne__(self, other):
412
+ return not (self == other)
413
+
414
+
415
+ class ClusterConfigProperties(object):
416
+ """
417
+ Cluster config for different modes of execution as a json string - with "common" applying to all modes
418
+ These are settings for creating a new cluster for running the job
419
+
420
+ these confs are layered in order of priority
421
+ 1. company file defaults specified in teams.py - in the "common" team
422
+ 2. team wide defaults that apply to all objects in the team folder
423
+ 3. object specific defaults - applies to only the object that are declares them
424
+
425
+ All the maps from the above three places are merged to create final cluster config
426
+
427
+
428
+ Attributes:
429
+ - common
430
+ - modeClusterConfigs
431
+
432
+ """
433
+ thrift_spec = None
434
+
435
+
436
+ def __init__(self, common = None, modeClusterConfigs = None,):
437
+ self.common = common
438
+ self.modeClusterConfigs = modeClusterConfigs
439
+
440
+ def read(self, iprot):
441
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
442
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
443
+ return
444
+ iprot.readStructBegin()
445
+ while True:
446
+ (fname, ftype, fid) = iprot.readFieldBegin()
447
+ if ftype == TType.STOP:
448
+ break
449
+ if fid == 1:
450
+ if ftype == TType.MAP:
451
+ self.common = {}
452
+ (_ktype55, _vtype56, _size54) = iprot.readMapBegin()
453
+ for _i58 in range(_size54):
454
+ _key59 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
455
+ _val60 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
456
+ self.common[_key59] = _val60
457
+ iprot.readMapEnd()
458
+ else:
459
+ iprot.skip(ftype)
460
+ elif fid == 2:
461
+ if ftype == TType.MAP:
462
+ self.modeClusterConfigs = {}
463
+ (_ktype62, _vtype63, _size61) = iprot.readMapBegin()
464
+ for _i65 in range(_size61):
465
+ _key66 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
466
+ _val67 = {}
467
+ (_ktype69, _vtype70, _size68) = iprot.readMapBegin()
468
+ for _i72 in range(_size68):
469
+ _key73 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
470
+ _val74 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
471
+ _val67[_key73] = _val74
472
+ iprot.readMapEnd()
473
+ self.modeClusterConfigs[_key66] = _val67
474
+ iprot.readMapEnd()
475
+ else:
476
+ iprot.skip(ftype)
477
+ else:
478
+ iprot.skip(ftype)
479
+ iprot.readFieldEnd()
480
+ iprot.readStructEnd()
481
+
482
+ def write(self, oprot):
483
+ self.validate()
484
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
485
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
486
+ return
487
+ oprot.writeStructBegin('ClusterConfigProperties')
488
+ if self.common is not None:
489
+ oprot.writeFieldBegin('common', TType.MAP, 1)
490
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.common))
491
+ for kiter75, viter76 in self.common.items():
492
+ oprot.writeString(kiter75.encode('utf-8') if sys.version_info[0] == 2 else kiter75)
493
+ oprot.writeString(viter76.encode('utf-8') if sys.version_info[0] == 2 else viter76)
494
+ oprot.writeMapEnd()
495
+ oprot.writeFieldEnd()
496
+ if self.modeClusterConfigs is not None:
497
+ oprot.writeFieldBegin('modeClusterConfigs', TType.MAP, 2)
498
+ oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.modeClusterConfigs))
499
+ for kiter77, viter78 in self.modeClusterConfigs.items():
500
+ oprot.writeString(kiter77.encode('utf-8') if sys.version_info[0] == 2 else kiter77)
501
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(viter78))
502
+ for kiter79, viter80 in viter78.items():
503
+ oprot.writeString(kiter79.encode('utf-8') if sys.version_info[0] == 2 else kiter79)
504
+ oprot.writeString(viter80.encode('utf-8') if sys.version_info[0] == 2 else viter80)
505
+ oprot.writeMapEnd()
506
+ oprot.writeMapEnd()
507
+ oprot.writeFieldEnd()
508
+ oprot.writeFieldStop()
509
+ oprot.writeStructEnd()
510
+
511
+ def validate(self):
512
+ return
513
+
514
+ def __repr__(self):
515
+ L = ['%s=%r' % (key, value)
516
+ for key, value in self.__dict__.items()]
517
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
518
+
519
+ def __eq__(self, other):
520
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
521
+
522
+ def __ne__(self, other):
523
+ return not (self == other)
524
+
525
+
526
+ class TableInfo(object):
527
+ """
528
+ Attributes:
529
+ - table
530
+ - partitionColumn
531
+ - partitionFormat
532
+ - partitionInterval
533
+ - isCumulative: If isCumulative is true, then for a given output partition any single partition from input on or after the output
534
+ is sufficient. What this means is that latest available partition prior to end cut off will be used.
535
+
536
+
537
+ """
538
+ thrift_spec = None
539
+
540
+
541
+ def __init__(self, table = None, partitionColumn = None, partitionFormat = None, partitionInterval = None, isCumulative = None,):
542
+ self.table = table
543
+ self.partitionColumn = partitionColumn
544
+ self.partitionFormat = partitionFormat
545
+ self.partitionInterval = partitionInterval
546
+ self.isCumulative = isCumulative
547
+
548
+ def read(self, iprot):
549
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
550
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
551
+ return
552
+ iprot.readStructBegin()
553
+ while True:
554
+ (fname, ftype, fid) = iprot.readFieldBegin()
555
+ if ftype == TType.STOP:
556
+ break
557
+ if fid == 1:
558
+ if ftype == TType.STRING:
559
+ self.table = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
560
+ else:
561
+ iprot.skip(ftype)
562
+ elif fid == 100:
563
+ if ftype == TType.STRING:
564
+ self.partitionColumn = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
565
+ else:
566
+ iprot.skip(ftype)
567
+ elif fid == 101:
568
+ if ftype == TType.STRING:
569
+ self.partitionFormat = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
570
+ else:
571
+ iprot.skip(ftype)
572
+ elif fid == 102:
573
+ if ftype == TType.STRUCT:
574
+ self.partitionInterval = Window()
575
+ self.partitionInterval.read(iprot)
576
+ else:
577
+ iprot.skip(ftype)
578
+ elif fid == 200:
579
+ if ftype == TType.BOOL:
580
+ self.isCumulative = iprot.readBool()
581
+ else:
582
+ iprot.skip(ftype)
583
+ else:
584
+ iprot.skip(ftype)
585
+ iprot.readFieldEnd()
586
+ iprot.readStructEnd()
587
+
588
+ def write(self, oprot):
589
+ self.validate()
590
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
591
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
592
+ return
593
+ oprot.writeStructBegin('TableInfo')
594
+ if self.table is not None:
595
+ oprot.writeFieldBegin('table', TType.STRING, 1)
596
+ oprot.writeString(self.table.encode('utf-8') if sys.version_info[0] == 2 else self.table)
597
+ oprot.writeFieldEnd()
598
+ if self.partitionColumn is not None:
599
+ oprot.writeFieldBegin('partitionColumn', TType.STRING, 100)
600
+ oprot.writeString(self.partitionColumn.encode('utf-8') if sys.version_info[0] == 2 else self.partitionColumn)
601
+ oprot.writeFieldEnd()
602
+ if self.partitionFormat is not None:
603
+ oprot.writeFieldBegin('partitionFormat', TType.STRING, 101)
604
+ oprot.writeString(self.partitionFormat.encode('utf-8') if sys.version_info[0] == 2 else self.partitionFormat)
605
+ oprot.writeFieldEnd()
606
+ if self.partitionInterval is not None:
607
+ oprot.writeFieldBegin('partitionInterval', TType.STRUCT, 102)
608
+ self.partitionInterval.write(oprot)
609
+ oprot.writeFieldEnd()
610
+ if self.isCumulative is not None:
611
+ oprot.writeFieldBegin('isCumulative', TType.BOOL, 200)
612
+ oprot.writeBool(self.isCumulative)
613
+ oprot.writeFieldEnd()
614
+ oprot.writeFieldStop()
615
+ oprot.writeStructEnd()
616
+
617
+ def validate(self):
618
+ return
619
+
620
+ def __repr__(self):
621
+ L = ['%s=%r' % (key, value)
622
+ for key, value in self.__dict__.items()]
623
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
624
+
625
+ def __eq__(self, other):
626
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
627
+
628
+ def __ne__(self, other):
629
+ return not (self == other)
630
+
631
+
632
+ class TableDependency(object):
633
+ """
634
+ Attributes:
635
+ - tableInfo
636
+ - startOffset
637
+ - endOffset
638
+ - startCutOff
639
+ - endCutOff
640
+ - forceCompute: JoinParts could use data from batch backfill-s or upload tables when available
641
+ When not available they shouldn't force computation of the backfills and upload tables.
642
+
643
+
644
+ """
645
+ thrift_spec = None
646
+
647
+
648
+ def __init__(self, tableInfo = None, startOffset = None, endOffset = None, startCutOff = None, endCutOff = None, forceCompute = None,):
649
+ self.tableInfo = tableInfo
650
+ self.startOffset = startOffset
651
+ self.endOffset = endOffset
652
+ self.startCutOff = startCutOff
653
+ self.endCutOff = endCutOff
654
+ self.forceCompute = forceCompute
655
+
656
+ def read(self, iprot):
657
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
658
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
659
+ return
660
+ iprot.readStructBegin()
661
+ while True:
662
+ (fname, ftype, fid) = iprot.readFieldBegin()
663
+ if ftype == TType.STOP:
664
+ break
665
+ if fid == 1:
666
+ if ftype == TType.STRUCT:
667
+ self.tableInfo = TableInfo()
668
+ self.tableInfo.read(iprot)
669
+ else:
670
+ iprot.skip(ftype)
671
+ elif fid == 2:
672
+ if ftype == TType.STRUCT:
673
+ self.startOffset = Window()
674
+ self.startOffset.read(iprot)
675
+ else:
676
+ iprot.skip(ftype)
677
+ elif fid == 3:
678
+ if ftype == TType.STRUCT:
679
+ self.endOffset = Window()
680
+ self.endOffset.read(iprot)
681
+ else:
682
+ iprot.skip(ftype)
683
+ elif fid == 4:
684
+ if ftype == TType.STRING:
685
+ self.startCutOff = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
686
+ else:
687
+ iprot.skip(ftype)
688
+ elif fid == 5:
689
+ if ftype == TType.STRING:
690
+ self.endCutOff = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
691
+ else:
692
+ iprot.skip(ftype)
693
+ elif fid == 201:
694
+ if ftype == TType.BOOL:
695
+ self.forceCompute = iprot.readBool()
696
+ else:
697
+ iprot.skip(ftype)
698
+ else:
699
+ iprot.skip(ftype)
700
+ iprot.readFieldEnd()
701
+ iprot.readStructEnd()
702
+
703
+ def write(self, oprot):
704
+ self.validate()
705
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
706
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
707
+ return
708
+ oprot.writeStructBegin('TableDependency')
709
+ if self.tableInfo is not None:
710
+ oprot.writeFieldBegin('tableInfo', TType.STRUCT, 1)
711
+ self.tableInfo.write(oprot)
712
+ oprot.writeFieldEnd()
713
+ if self.startOffset is not None:
714
+ oprot.writeFieldBegin('startOffset', TType.STRUCT, 2)
715
+ self.startOffset.write(oprot)
716
+ oprot.writeFieldEnd()
717
+ if self.endOffset is not None:
718
+ oprot.writeFieldBegin('endOffset', TType.STRUCT, 3)
719
+ self.endOffset.write(oprot)
720
+ oprot.writeFieldEnd()
721
+ if self.startCutOff is not None:
722
+ oprot.writeFieldBegin('startCutOff', TType.STRING, 4)
723
+ oprot.writeString(self.startCutOff.encode('utf-8') if sys.version_info[0] == 2 else self.startCutOff)
724
+ oprot.writeFieldEnd()
725
+ if self.endCutOff is not None:
726
+ oprot.writeFieldBegin('endCutOff', TType.STRING, 5)
727
+ oprot.writeString(self.endCutOff.encode('utf-8') if sys.version_info[0] == 2 else self.endCutOff)
728
+ oprot.writeFieldEnd()
729
+ if self.forceCompute is not None:
730
+ oprot.writeFieldBegin('forceCompute', TType.BOOL, 201)
731
+ oprot.writeBool(self.forceCompute)
732
+ oprot.writeFieldEnd()
733
+ oprot.writeFieldStop()
734
+ oprot.writeStructEnd()
735
+
736
+ def validate(self):
737
+ return
738
+
739
+ def __repr__(self):
740
+ L = ['%s=%r' % (key, value)
741
+ for key, value in self.__dict__.items()]
742
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
743
+
744
+ def __eq__(self, other):
745
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
746
+
747
+ def __ne__(self, other):
748
+ return not (self == other)
749
+
750
+
751
+ class KvInfo(object):
752
+ """
753
+ Attributes:
754
+ - cluster
755
+ - table
756
+ - keyBase64
757
+
758
+ """
759
+ thrift_spec = None
760
+
761
+
762
+ def __init__(self, cluster = None, table = None, keyBase64 = None,):
763
+ self.cluster = cluster
764
+ self.table = table
765
+ self.keyBase64 = keyBase64
766
+
767
+ def read(self, iprot):
768
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
769
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
770
+ return
771
+ iprot.readStructBegin()
772
+ while True:
773
+ (fname, ftype, fid) = iprot.readFieldBegin()
774
+ if ftype == TType.STOP:
775
+ break
776
+ if fid == 1:
777
+ if ftype == TType.STRING:
778
+ self.cluster = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
779
+ else:
780
+ iprot.skip(ftype)
781
+ elif fid == 2:
782
+ if ftype == TType.STRING:
783
+ self.table = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
784
+ else:
785
+ iprot.skip(ftype)
786
+ elif fid == 3:
787
+ if ftype == TType.STRING:
788
+ self.keyBase64 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
789
+ else:
790
+ iprot.skip(ftype)
791
+ else:
792
+ iprot.skip(ftype)
793
+ iprot.readFieldEnd()
794
+ iprot.readStructEnd()
795
+
796
+ def write(self, oprot):
797
+ self.validate()
798
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
799
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
800
+ return
801
+ oprot.writeStructBegin('KvInfo')
802
+ if self.cluster is not None:
803
+ oprot.writeFieldBegin('cluster', TType.STRING, 1)
804
+ oprot.writeString(self.cluster.encode('utf-8') if sys.version_info[0] == 2 else self.cluster)
805
+ oprot.writeFieldEnd()
806
+ if self.table is not None:
807
+ oprot.writeFieldBegin('table', TType.STRING, 2)
808
+ oprot.writeString(self.table.encode('utf-8') if sys.version_info[0] == 2 else self.table)
809
+ oprot.writeFieldEnd()
810
+ if self.keyBase64 is not None:
811
+ oprot.writeFieldBegin('keyBase64', TType.STRING, 3)
812
+ oprot.writeString(self.keyBase64.encode('utf-8') if sys.version_info[0] == 2 else self.keyBase64)
813
+ oprot.writeFieldEnd()
814
+ oprot.writeFieldStop()
815
+ oprot.writeStructEnd()
816
+
817
+ def validate(self):
818
+ return
819
+
820
+ def __repr__(self):
821
+ L = ['%s=%r' % (key, value)
822
+ for key, value in self.__dict__.items()]
823
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
824
+
825
+ def __eq__(self, other):
826
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
827
+
828
+ def __ne__(self, other):
829
+ return not (self == other)
830
+
831
+
832
+ class KvDependency(object):
833
+ """
834
+ Attributes:
835
+ - kvInfo
836
+ - startMillis
837
+ - endMillis
838
+ - scanStrategy
839
+
840
+ """
841
+ thrift_spec = None
842
+
843
+
844
+ def __init__(self, kvInfo = None, startMillis = None, endMillis = None, scanStrategy = None,):
845
+ self.kvInfo = kvInfo
846
+ self.startMillis = startMillis
847
+ self.endMillis = endMillis
848
+ self.scanStrategy = scanStrategy
849
+
850
+ def read(self, iprot):
851
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
852
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
853
+ return
854
+ iprot.readStructBegin()
855
+ while True:
856
+ (fname, ftype, fid) = iprot.readFieldBegin()
857
+ if ftype == TType.STOP:
858
+ break
859
+ if fid == 1:
860
+ if ftype == TType.STRUCT:
861
+ self.kvInfo = KvInfo()
862
+ self.kvInfo.read(iprot)
863
+ else:
864
+ iprot.skip(ftype)
865
+ elif fid == 10:
866
+ if ftype == TType.I64:
867
+ self.startMillis = iprot.readI64()
868
+ else:
869
+ iprot.skip(ftype)
870
+ elif fid == 11:
871
+ if ftype == TType.I64:
872
+ self.endMillis = iprot.readI64()
873
+ else:
874
+ iprot.skip(ftype)
875
+ elif fid == 20:
876
+ if ftype == TType.I32:
877
+ self.scanStrategy = iprot.readI32()
878
+ else:
879
+ iprot.skip(ftype)
880
+ else:
881
+ iprot.skip(ftype)
882
+ iprot.readFieldEnd()
883
+ iprot.readStructEnd()
884
+
885
+ def write(self, oprot):
886
+ self.validate()
887
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
888
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
889
+ return
890
+ oprot.writeStructBegin('KvDependency')
891
+ if self.kvInfo is not None:
892
+ oprot.writeFieldBegin('kvInfo', TType.STRUCT, 1)
893
+ self.kvInfo.write(oprot)
894
+ oprot.writeFieldEnd()
895
+ if self.startMillis is not None:
896
+ oprot.writeFieldBegin('startMillis', TType.I64, 10)
897
+ oprot.writeI64(self.startMillis)
898
+ oprot.writeFieldEnd()
899
+ if self.endMillis is not None:
900
+ oprot.writeFieldBegin('endMillis', TType.I64, 11)
901
+ oprot.writeI64(self.endMillis)
902
+ oprot.writeFieldEnd()
903
+ if self.scanStrategy is not None:
904
+ oprot.writeFieldBegin('scanStrategy', TType.I32, 20)
905
+ oprot.writeI32(self.scanStrategy)
906
+ oprot.writeFieldEnd()
907
+ oprot.writeFieldStop()
908
+ oprot.writeStructEnd()
909
+
910
+ def validate(self):
911
+ return
912
+
913
+ def __repr__(self):
914
+ L = ['%s=%r' % (key, value)
915
+ for key, value in self.__dict__.items()]
916
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
917
+
918
+ def __eq__(self, other):
919
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
920
+
921
+ def __ne__(self, other):
922
+ return not (self == other)
923
+
924
+
925
+ class ExecutionInfo(object):
926
+ """
927
+ Attributes:
928
+ - env
929
+ - conf
930
+ - dependencyPollIntervalMillis
931
+ - healthCheckIntervalMillis
932
+ - clusterConf
933
+ - scheduleCron
934
+ - stepDays
935
+ - historicalBackfill
936
+ - tableDependencies
937
+ - outputTableInfo
938
+ - kvDependencies
939
+ - outputKvInfo
940
+ - kvPollIntervalMillis
941
+
942
+ """
943
+ thrift_spec = None
944
+
945
+
946
+ def __init__(self, env = None, conf = None, dependencyPollIntervalMillis = None, healthCheckIntervalMillis = None, clusterConf = None, scheduleCron = None, stepDays = None, historicalBackfill = None, tableDependencies = None, outputTableInfo = None, kvDependencies = None, outputKvInfo = None, kvPollIntervalMillis = None,):
947
+ self.env = env
948
+ self.conf = conf
949
+ self.dependencyPollIntervalMillis = dependencyPollIntervalMillis
950
+ self.healthCheckIntervalMillis = healthCheckIntervalMillis
951
+ self.clusterConf = clusterConf
952
+ self.scheduleCron = scheduleCron
953
+ self.stepDays = stepDays
954
+ self.historicalBackfill = historicalBackfill
955
+ self.tableDependencies = tableDependencies
956
+ self.outputTableInfo = outputTableInfo
957
+ self.kvDependencies = kvDependencies
958
+ self.outputKvInfo = outputKvInfo
959
+ self.kvPollIntervalMillis = kvPollIntervalMillis
960
+
961
+ def read(self, iprot):
962
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
963
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
964
+ return
965
+ iprot.readStructBegin()
966
+ while True:
967
+ (fname, ftype, fid) = iprot.readFieldBegin()
968
+ if ftype == TType.STOP:
969
+ break
970
+ if fid == 1:
971
+ if ftype == TType.STRUCT:
972
+ self.env = EnvironmentVariables()
973
+ self.env.read(iprot)
974
+ else:
975
+ iprot.skip(ftype)
976
+ elif fid == 2:
977
+ if ftype == TType.STRUCT:
978
+ self.conf = ConfigProperties()
979
+ self.conf.read(iprot)
980
+ else:
981
+ iprot.skip(ftype)
982
+ elif fid == 3:
983
+ if ftype == TType.I64:
984
+ self.dependencyPollIntervalMillis = iprot.readI64()
985
+ else:
986
+ iprot.skip(ftype)
987
+ elif fid == 4:
988
+ if ftype == TType.I64:
989
+ self.healthCheckIntervalMillis = iprot.readI64()
990
+ else:
991
+ iprot.skip(ftype)
992
+ elif fid == 5:
993
+ if ftype == TType.STRUCT:
994
+ self.clusterConf = ClusterConfigProperties()
995
+ self.clusterConf.read(iprot)
996
+ else:
997
+ iprot.skip(ftype)
998
+ elif fid == 10:
999
+ if ftype == TType.STRING:
1000
+ self.scheduleCron = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1001
+ else:
1002
+ iprot.skip(ftype)
1003
+ elif fid == 11:
1004
+ if ftype == TType.I32:
1005
+ self.stepDays = iprot.readI32()
1006
+ else:
1007
+ iprot.skip(ftype)
1008
+ elif fid == 12:
1009
+ if ftype == TType.BOOL:
1010
+ self.historicalBackfill = iprot.readBool()
1011
+ else:
1012
+ iprot.skip(ftype)
1013
+ elif fid == 13:
1014
+ if ftype == TType.LIST:
1015
+ self.tableDependencies = []
1016
+ (_etype84, _size81) = iprot.readListBegin()
1017
+ for _i85 in range(_size81):
1018
+ _elem86 = TableDependency()
1019
+ _elem86.read(iprot)
1020
+ self.tableDependencies.append(_elem86)
1021
+ iprot.readListEnd()
1022
+ else:
1023
+ iprot.skip(ftype)
1024
+ elif fid == 14:
1025
+ if ftype == TType.STRUCT:
1026
+ self.outputTableInfo = TableInfo()
1027
+ self.outputTableInfo.read(iprot)
1028
+ else:
1029
+ iprot.skip(ftype)
1030
+ elif fid == 200:
1031
+ if ftype == TType.LIST:
1032
+ self.kvDependencies = []
1033
+ (_etype90, _size87) = iprot.readListBegin()
1034
+ for _i91 in range(_size87):
1035
+ _elem92 = KvDependency()
1036
+ _elem92.read(iprot)
1037
+ self.kvDependencies.append(_elem92)
1038
+ iprot.readListEnd()
1039
+ else:
1040
+ iprot.skip(ftype)
1041
+ elif fid == 201:
1042
+ if ftype == TType.STRUCT:
1043
+ self.outputKvInfo = KvInfo()
1044
+ self.outputKvInfo.read(iprot)
1045
+ else:
1046
+ iprot.skip(ftype)
1047
+ elif fid == 202:
1048
+ if ftype == TType.I64:
1049
+ self.kvPollIntervalMillis = iprot.readI64()
1050
+ else:
1051
+ iprot.skip(ftype)
1052
+ else:
1053
+ iprot.skip(ftype)
1054
+ iprot.readFieldEnd()
1055
+ iprot.readStructEnd()
1056
+
1057
+ def write(self, oprot):
1058
+ self.validate()
1059
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1060
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1061
+ return
1062
+ oprot.writeStructBegin('ExecutionInfo')
1063
+ if self.env is not None:
1064
+ oprot.writeFieldBegin('env', TType.STRUCT, 1)
1065
+ self.env.write(oprot)
1066
+ oprot.writeFieldEnd()
1067
+ if self.conf is not None:
1068
+ oprot.writeFieldBegin('conf', TType.STRUCT, 2)
1069
+ self.conf.write(oprot)
1070
+ oprot.writeFieldEnd()
1071
+ if self.dependencyPollIntervalMillis is not None:
1072
+ oprot.writeFieldBegin('dependencyPollIntervalMillis', TType.I64, 3)
1073
+ oprot.writeI64(self.dependencyPollIntervalMillis)
1074
+ oprot.writeFieldEnd()
1075
+ if self.healthCheckIntervalMillis is not None:
1076
+ oprot.writeFieldBegin('healthCheckIntervalMillis', TType.I64, 4)
1077
+ oprot.writeI64(self.healthCheckIntervalMillis)
1078
+ oprot.writeFieldEnd()
1079
+ if self.clusterConf is not None:
1080
+ oprot.writeFieldBegin('clusterConf', TType.STRUCT, 5)
1081
+ self.clusterConf.write(oprot)
1082
+ oprot.writeFieldEnd()
1083
+ if self.scheduleCron is not None:
1084
+ oprot.writeFieldBegin('scheduleCron', TType.STRING, 10)
1085
+ oprot.writeString(self.scheduleCron.encode('utf-8') if sys.version_info[0] == 2 else self.scheduleCron)
1086
+ oprot.writeFieldEnd()
1087
+ if self.stepDays is not None:
1088
+ oprot.writeFieldBegin('stepDays', TType.I32, 11)
1089
+ oprot.writeI32(self.stepDays)
1090
+ oprot.writeFieldEnd()
1091
+ if self.historicalBackfill is not None:
1092
+ oprot.writeFieldBegin('historicalBackfill', TType.BOOL, 12)
1093
+ oprot.writeBool(self.historicalBackfill)
1094
+ oprot.writeFieldEnd()
1095
+ if self.tableDependencies is not None:
1096
+ oprot.writeFieldBegin('tableDependencies', TType.LIST, 13)
1097
+ oprot.writeListBegin(TType.STRUCT, len(self.tableDependencies))
1098
+ for iter93 in self.tableDependencies:
1099
+ iter93.write(oprot)
1100
+ oprot.writeListEnd()
1101
+ oprot.writeFieldEnd()
1102
+ if self.outputTableInfo is not None:
1103
+ oprot.writeFieldBegin('outputTableInfo', TType.STRUCT, 14)
1104
+ self.outputTableInfo.write(oprot)
1105
+ oprot.writeFieldEnd()
1106
+ if self.kvDependencies is not None:
1107
+ oprot.writeFieldBegin('kvDependencies', TType.LIST, 200)
1108
+ oprot.writeListBegin(TType.STRUCT, len(self.kvDependencies))
1109
+ for iter94 in self.kvDependencies:
1110
+ iter94.write(oprot)
1111
+ oprot.writeListEnd()
1112
+ oprot.writeFieldEnd()
1113
+ if self.outputKvInfo is not None:
1114
+ oprot.writeFieldBegin('outputKvInfo', TType.STRUCT, 201)
1115
+ self.outputKvInfo.write(oprot)
1116
+ oprot.writeFieldEnd()
1117
+ if self.kvPollIntervalMillis is not None:
1118
+ oprot.writeFieldBegin('kvPollIntervalMillis', TType.I64, 202)
1119
+ oprot.writeI64(self.kvPollIntervalMillis)
1120
+ oprot.writeFieldEnd()
1121
+ oprot.writeFieldStop()
1122
+ oprot.writeStructEnd()
1123
+
1124
+ def validate(self):
1125
+ return
1126
+
1127
+ def __repr__(self):
1128
+ L = ['%s=%r' % (key, value)
1129
+ for key, value in self.__dict__.items()]
1130
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1131
+
1132
+ def __eq__(self, other):
1133
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1134
+
1135
+ def __ne__(self, other):
1136
+ return not (self == other)
1137
+ all_structs.append(Window)
1138
+ Window.thrift_spec = (
1139
+ None, # 0
1140
+ (1, TType.I32, 'length', None, None, ), # 1
1141
+ (2, TType.I32, 'timeUnit', None, None, ), # 2
1142
+ )
1143
+ all_structs.append(DateRange)
1144
+ DateRange.thrift_spec = (
1145
+ None, # 0
1146
+ (1, TType.STRING, 'startDate', 'UTF8', None, ), # 1
1147
+ (2, TType.STRING, 'endDate', 'UTF8', None, ), # 2
1148
+ )
1149
+ all_structs.append(EnvironmentVariables)
1150
+ EnvironmentVariables.thrift_spec = (
1151
+ None, # 0
1152
+ (1, TType.MAP, 'common', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 1
1153
+ (2, TType.MAP, 'modeEnvironments', (TType.STRING, 'UTF8', TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 2
1154
+ )
1155
+ all_structs.append(ConfigProperties)
1156
+ ConfigProperties.thrift_spec = (
1157
+ None, # 0
1158
+ (1, TType.MAP, 'common', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 1
1159
+ (2, TType.MAP, 'modeConfigs', (TType.STRING, 'UTF8', TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 2
1160
+ )
1161
+ all_structs.append(ClusterConfigProperties)
1162
+ ClusterConfigProperties.thrift_spec = (
1163
+ None, # 0
1164
+ (1, TType.MAP, 'common', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 1
1165
+ (2, TType.MAP, 'modeClusterConfigs', (TType.STRING, 'UTF8', TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 2
1166
+ )
1167
+ all_structs.append(TableInfo)
1168
+ TableInfo.thrift_spec = (
1169
+ None, # 0
1170
+ (1, TType.STRING, 'table', 'UTF8', None, ), # 1
1171
+ None, # 2
1172
+ None, # 3
1173
+ None, # 4
1174
+ None, # 5
1175
+ None, # 6
1176
+ None, # 7
1177
+ None, # 8
1178
+ None, # 9
1179
+ None, # 10
1180
+ None, # 11
1181
+ None, # 12
1182
+ None, # 13
1183
+ None, # 14
1184
+ None, # 15
1185
+ None, # 16
1186
+ None, # 17
1187
+ None, # 18
1188
+ None, # 19
1189
+ None, # 20
1190
+ None, # 21
1191
+ None, # 22
1192
+ None, # 23
1193
+ None, # 24
1194
+ None, # 25
1195
+ None, # 26
1196
+ None, # 27
1197
+ None, # 28
1198
+ None, # 29
1199
+ None, # 30
1200
+ None, # 31
1201
+ None, # 32
1202
+ None, # 33
1203
+ None, # 34
1204
+ None, # 35
1205
+ None, # 36
1206
+ None, # 37
1207
+ None, # 38
1208
+ None, # 39
1209
+ None, # 40
1210
+ None, # 41
1211
+ None, # 42
1212
+ None, # 43
1213
+ None, # 44
1214
+ None, # 45
1215
+ None, # 46
1216
+ None, # 47
1217
+ None, # 48
1218
+ None, # 49
1219
+ None, # 50
1220
+ None, # 51
1221
+ None, # 52
1222
+ None, # 53
1223
+ None, # 54
1224
+ None, # 55
1225
+ None, # 56
1226
+ None, # 57
1227
+ None, # 58
1228
+ None, # 59
1229
+ None, # 60
1230
+ None, # 61
1231
+ None, # 62
1232
+ None, # 63
1233
+ None, # 64
1234
+ None, # 65
1235
+ None, # 66
1236
+ None, # 67
1237
+ None, # 68
1238
+ None, # 69
1239
+ None, # 70
1240
+ None, # 71
1241
+ None, # 72
1242
+ None, # 73
1243
+ None, # 74
1244
+ None, # 75
1245
+ None, # 76
1246
+ None, # 77
1247
+ None, # 78
1248
+ None, # 79
1249
+ None, # 80
1250
+ None, # 81
1251
+ None, # 82
1252
+ None, # 83
1253
+ None, # 84
1254
+ None, # 85
1255
+ None, # 86
1256
+ None, # 87
1257
+ None, # 88
1258
+ None, # 89
1259
+ None, # 90
1260
+ None, # 91
1261
+ None, # 92
1262
+ None, # 93
1263
+ None, # 94
1264
+ None, # 95
1265
+ None, # 96
1266
+ None, # 97
1267
+ None, # 98
1268
+ None, # 99
1269
+ (100, TType.STRING, 'partitionColumn', 'UTF8', None, ), # 100
1270
+ (101, TType.STRING, 'partitionFormat', 'UTF8', None, ), # 101
1271
+ (102, TType.STRUCT, 'partitionInterval', [Window, None], None, ), # 102
1272
+ None, # 103
1273
+ None, # 104
1274
+ None, # 105
1275
+ None, # 106
1276
+ None, # 107
1277
+ None, # 108
1278
+ None, # 109
1279
+ None, # 110
1280
+ None, # 111
1281
+ None, # 112
1282
+ None, # 113
1283
+ None, # 114
1284
+ None, # 115
1285
+ None, # 116
1286
+ None, # 117
1287
+ None, # 118
1288
+ None, # 119
1289
+ None, # 120
1290
+ None, # 121
1291
+ None, # 122
1292
+ None, # 123
1293
+ None, # 124
1294
+ None, # 125
1295
+ None, # 126
1296
+ None, # 127
1297
+ None, # 128
1298
+ None, # 129
1299
+ None, # 130
1300
+ None, # 131
1301
+ None, # 132
1302
+ None, # 133
1303
+ None, # 134
1304
+ None, # 135
1305
+ None, # 136
1306
+ None, # 137
1307
+ None, # 138
1308
+ None, # 139
1309
+ None, # 140
1310
+ None, # 141
1311
+ None, # 142
1312
+ None, # 143
1313
+ None, # 144
1314
+ None, # 145
1315
+ None, # 146
1316
+ None, # 147
1317
+ None, # 148
1318
+ None, # 149
1319
+ None, # 150
1320
+ None, # 151
1321
+ None, # 152
1322
+ None, # 153
1323
+ None, # 154
1324
+ None, # 155
1325
+ None, # 156
1326
+ None, # 157
1327
+ None, # 158
1328
+ None, # 159
1329
+ None, # 160
1330
+ None, # 161
1331
+ None, # 162
1332
+ None, # 163
1333
+ None, # 164
1334
+ None, # 165
1335
+ None, # 166
1336
+ None, # 167
1337
+ None, # 168
1338
+ None, # 169
1339
+ None, # 170
1340
+ None, # 171
1341
+ None, # 172
1342
+ None, # 173
1343
+ None, # 174
1344
+ None, # 175
1345
+ None, # 176
1346
+ None, # 177
1347
+ None, # 178
1348
+ None, # 179
1349
+ None, # 180
1350
+ None, # 181
1351
+ None, # 182
1352
+ None, # 183
1353
+ None, # 184
1354
+ None, # 185
1355
+ None, # 186
1356
+ None, # 187
1357
+ None, # 188
1358
+ None, # 189
1359
+ None, # 190
1360
+ None, # 191
1361
+ None, # 192
1362
+ None, # 193
1363
+ None, # 194
1364
+ None, # 195
1365
+ None, # 196
1366
+ None, # 197
1367
+ None, # 198
1368
+ None, # 199
1369
+ (200, TType.BOOL, 'isCumulative', None, None, ), # 200
1370
+ )
1371
+ all_structs.append(TableDependency)
1372
+ TableDependency.thrift_spec = (
1373
+ None, # 0
1374
+ (1, TType.STRUCT, 'tableInfo', [TableInfo, None], None, ), # 1
1375
+ (2, TType.STRUCT, 'startOffset', [Window, None], None, ), # 2
1376
+ (3, TType.STRUCT, 'endOffset', [Window, None], None, ), # 3
1377
+ (4, TType.STRING, 'startCutOff', 'UTF8', None, ), # 4
1378
+ (5, TType.STRING, 'endCutOff', 'UTF8', None, ), # 5
1379
+ None, # 6
1380
+ None, # 7
1381
+ None, # 8
1382
+ None, # 9
1383
+ None, # 10
1384
+ None, # 11
1385
+ None, # 12
1386
+ None, # 13
1387
+ None, # 14
1388
+ None, # 15
1389
+ None, # 16
1390
+ None, # 17
1391
+ None, # 18
1392
+ None, # 19
1393
+ None, # 20
1394
+ None, # 21
1395
+ None, # 22
1396
+ None, # 23
1397
+ None, # 24
1398
+ None, # 25
1399
+ None, # 26
1400
+ None, # 27
1401
+ None, # 28
1402
+ None, # 29
1403
+ None, # 30
1404
+ None, # 31
1405
+ None, # 32
1406
+ None, # 33
1407
+ None, # 34
1408
+ None, # 35
1409
+ None, # 36
1410
+ None, # 37
1411
+ None, # 38
1412
+ None, # 39
1413
+ None, # 40
1414
+ None, # 41
1415
+ None, # 42
1416
+ None, # 43
1417
+ None, # 44
1418
+ None, # 45
1419
+ None, # 46
1420
+ None, # 47
1421
+ None, # 48
1422
+ None, # 49
1423
+ None, # 50
1424
+ None, # 51
1425
+ None, # 52
1426
+ None, # 53
1427
+ None, # 54
1428
+ None, # 55
1429
+ None, # 56
1430
+ None, # 57
1431
+ None, # 58
1432
+ None, # 59
1433
+ None, # 60
1434
+ None, # 61
1435
+ None, # 62
1436
+ None, # 63
1437
+ None, # 64
1438
+ None, # 65
1439
+ None, # 66
1440
+ None, # 67
1441
+ None, # 68
1442
+ None, # 69
1443
+ None, # 70
1444
+ None, # 71
1445
+ None, # 72
1446
+ None, # 73
1447
+ None, # 74
1448
+ None, # 75
1449
+ None, # 76
1450
+ None, # 77
1451
+ None, # 78
1452
+ None, # 79
1453
+ None, # 80
1454
+ None, # 81
1455
+ None, # 82
1456
+ None, # 83
1457
+ None, # 84
1458
+ None, # 85
1459
+ None, # 86
1460
+ None, # 87
1461
+ None, # 88
1462
+ None, # 89
1463
+ None, # 90
1464
+ None, # 91
1465
+ None, # 92
1466
+ None, # 93
1467
+ None, # 94
1468
+ None, # 95
1469
+ None, # 96
1470
+ None, # 97
1471
+ None, # 98
1472
+ None, # 99
1473
+ None, # 100
1474
+ None, # 101
1475
+ None, # 102
1476
+ None, # 103
1477
+ None, # 104
1478
+ None, # 105
1479
+ None, # 106
1480
+ None, # 107
1481
+ None, # 108
1482
+ None, # 109
1483
+ None, # 110
1484
+ None, # 111
1485
+ None, # 112
1486
+ None, # 113
1487
+ None, # 114
1488
+ None, # 115
1489
+ None, # 116
1490
+ None, # 117
1491
+ None, # 118
1492
+ None, # 119
1493
+ None, # 120
1494
+ None, # 121
1495
+ None, # 122
1496
+ None, # 123
1497
+ None, # 124
1498
+ None, # 125
1499
+ None, # 126
1500
+ None, # 127
1501
+ None, # 128
1502
+ None, # 129
1503
+ None, # 130
1504
+ None, # 131
1505
+ None, # 132
1506
+ None, # 133
1507
+ None, # 134
1508
+ None, # 135
1509
+ None, # 136
1510
+ None, # 137
1511
+ None, # 138
1512
+ None, # 139
1513
+ None, # 140
1514
+ None, # 141
1515
+ None, # 142
1516
+ None, # 143
1517
+ None, # 144
1518
+ None, # 145
1519
+ None, # 146
1520
+ None, # 147
1521
+ None, # 148
1522
+ None, # 149
1523
+ None, # 150
1524
+ None, # 151
1525
+ None, # 152
1526
+ None, # 153
1527
+ None, # 154
1528
+ None, # 155
1529
+ None, # 156
1530
+ None, # 157
1531
+ None, # 158
1532
+ None, # 159
1533
+ None, # 160
1534
+ None, # 161
1535
+ None, # 162
1536
+ None, # 163
1537
+ None, # 164
1538
+ None, # 165
1539
+ None, # 166
1540
+ None, # 167
1541
+ None, # 168
1542
+ None, # 169
1543
+ None, # 170
1544
+ None, # 171
1545
+ None, # 172
1546
+ None, # 173
1547
+ None, # 174
1548
+ None, # 175
1549
+ None, # 176
1550
+ None, # 177
1551
+ None, # 178
1552
+ None, # 179
1553
+ None, # 180
1554
+ None, # 181
1555
+ None, # 182
1556
+ None, # 183
1557
+ None, # 184
1558
+ None, # 185
1559
+ None, # 186
1560
+ None, # 187
1561
+ None, # 188
1562
+ None, # 189
1563
+ None, # 190
1564
+ None, # 191
1565
+ None, # 192
1566
+ None, # 193
1567
+ None, # 194
1568
+ None, # 195
1569
+ None, # 196
1570
+ None, # 197
1571
+ None, # 198
1572
+ None, # 199
1573
+ None, # 200
1574
+ (201, TType.BOOL, 'forceCompute', None, None, ), # 201
1575
+ )
1576
+ all_structs.append(KvInfo)
1577
+ KvInfo.thrift_spec = (
1578
+ None, # 0
1579
+ (1, TType.STRING, 'cluster', 'UTF8', None, ), # 1
1580
+ (2, TType.STRING, 'table', 'UTF8', None, ), # 2
1581
+ (3, TType.STRING, 'keyBase64', 'UTF8', None, ), # 3
1582
+ )
1583
+ all_structs.append(KvDependency)
1584
+ KvDependency.thrift_spec = (
1585
+ None, # 0
1586
+ (1, TType.STRUCT, 'kvInfo', [KvInfo, None], None, ), # 1
1587
+ None, # 2
1588
+ None, # 3
1589
+ None, # 4
1590
+ None, # 5
1591
+ None, # 6
1592
+ None, # 7
1593
+ None, # 8
1594
+ None, # 9
1595
+ (10, TType.I64, 'startMillis', None, None, ), # 10
1596
+ (11, TType.I64, 'endMillis', None, None, ), # 11
1597
+ None, # 12
1598
+ None, # 13
1599
+ None, # 14
1600
+ None, # 15
1601
+ None, # 16
1602
+ None, # 17
1603
+ None, # 18
1604
+ None, # 19
1605
+ (20, TType.I32, 'scanStrategy', None, None, ), # 20
1606
+ )
1607
+ all_structs.append(ExecutionInfo)
1608
+ ExecutionInfo.thrift_spec = (
1609
+ None, # 0
1610
+ (1, TType.STRUCT, 'env', [EnvironmentVariables, None], None, ), # 1
1611
+ (2, TType.STRUCT, 'conf', [ConfigProperties, None], None, ), # 2
1612
+ (3, TType.I64, 'dependencyPollIntervalMillis', None, None, ), # 3
1613
+ (4, TType.I64, 'healthCheckIntervalMillis', None, None, ), # 4
1614
+ (5, TType.STRUCT, 'clusterConf', [ClusterConfigProperties, None], None, ), # 5
1615
+ None, # 6
1616
+ None, # 7
1617
+ None, # 8
1618
+ None, # 9
1619
+ (10, TType.STRING, 'scheduleCron', 'UTF8', None, ), # 10
1620
+ (11, TType.I32, 'stepDays', None, None, ), # 11
1621
+ (12, TType.BOOL, 'historicalBackfill', None, None, ), # 12
1622
+ (13, TType.LIST, 'tableDependencies', (TType.STRUCT, [TableDependency, None], False), None, ), # 13
1623
+ (14, TType.STRUCT, 'outputTableInfo', [TableInfo, None], None, ), # 14
1624
+ None, # 15
1625
+ None, # 16
1626
+ None, # 17
1627
+ None, # 18
1628
+ None, # 19
1629
+ None, # 20
1630
+ None, # 21
1631
+ None, # 22
1632
+ None, # 23
1633
+ None, # 24
1634
+ None, # 25
1635
+ None, # 26
1636
+ None, # 27
1637
+ None, # 28
1638
+ None, # 29
1639
+ None, # 30
1640
+ None, # 31
1641
+ None, # 32
1642
+ None, # 33
1643
+ None, # 34
1644
+ None, # 35
1645
+ None, # 36
1646
+ None, # 37
1647
+ None, # 38
1648
+ None, # 39
1649
+ None, # 40
1650
+ None, # 41
1651
+ None, # 42
1652
+ None, # 43
1653
+ None, # 44
1654
+ None, # 45
1655
+ None, # 46
1656
+ None, # 47
1657
+ None, # 48
1658
+ None, # 49
1659
+ None, # 50
1660
+ None, # 51
1661
+ None, # 52
1662
+ None, # 53
1663
+ None, # 54
1664
+ None, # 55
1665
+ None, # 56
1666
+ None, # 57
1667
+ None, # 58
1668
+ None, # 59
1669
+ None, # 60
1670
+ None, # 61
1671
+ None, # 62
1672
+ None, # 63
1673
+ None, # 64
1674
+ None, # 65
1675
+ None, # 66
1676
+ None, # 67
1677
+ None, # 68
1678
+ None, # 69
1679
+ None, # 70
1680
+ None, # 71
1681
+ None, # 72
1682
+ None, # 73
1683
+ None, # 74
1684
+ None, # 75
1685
+ None, # 76
1686
+ None, # 77
1687
+ None, # 78
1688
+ None, # 79
1689
+ None, # 80
1690
+ None, # 81
1691
+ None, # 82
1692
+ None, # 83
1693
+ None, # 84
1694
+ None, # 85
1695
+ None, # 86
1696
+ None, # 87
1697
+ None, # 88
1698
+ None, # 89
1699
+ None, # 90
1700
+ None, # 91
1701
+ None, # 92
1702
+ None, # 93
1703
+ None, # 94
1704
+ None, # 95
1705
+ None, # 96
1706
+ None, # 97
1707
+ None, # 98
1708
+ None, # 99
1709
+ None, # 100
1710
+ None, # 101
1711
+ None, # 102
1712
+ None, # 103
1713
+ None, # 104
1714
+ None, # 105
1715
+ None, # 106
1716
+ None, # 107
1717
+ None, # 108
1718
+ None, # 109
1719
+ None, # 110
1720
+ None, # 111
1721
+ None, # 112
1722
+ None, # 113
1723
+ None, # 114
1724
+ None, # 115
1725
+ None, # 116
1726
+ None, # 117
1727
+ None, # 118
1728
+ None, # 119
1729
+ None, # 120
1730
+ None, # 121
1731
+ None, # 122
1732
+ None, # 123
1733
+ None, # 124
1734
+ None, # 125
1735
+ None, # 126
1736
+ None, # 127
1737
+ None, # 128
1738
+ None, # 129
1739
+ None, # 130
1740
+ None, # 131
1741
+ None, # 132
1742
+ None, # 133
1743
+ None, # 134
1744
+ None, # 135
1745
+ None, # 136
1746
+ None, # 137
1747
+ None, # 138
1748
+ None, # 139
1749
+ None, # 140
1750
+ None, # 141
1751
+ None, # 142
1752
+ None, # 143
1753
+ None, # 144
1754
+ None, # 145
1755
+ None, # 146
1756
+ None, # 147
1757
+ None, # 148
1758
+ None, # 149
1759
+ None, # 150
1760
+ None, # 151
1761
+ None, # 152
1762
+ None, # 153
1763
+ None, # 154
1764
+ None, # 155
1765
+ None, # 156
1766
+ None, # 157
1767
+ None, # 158
1768
+ None, # 159
1769
+ None, # 160
1770
+ None, # 161
1771
+ None, # 162
1772
+ None, # 163
1773
+ None, # 164
1774
+ None, # 165
1775
+ None, # 166
1776
+ None, # 167
1777
+ None, # 168
1778
+ None, # 169
1779
+ None, # 170
1780
+ None, # 171
1781
+ None, # 172
1782
+ None, # 173
1783
+ None, # 174
1784
+ None, # 175
1785
+ None, # 176
1786
+ None, # 177
1787
+ None, # 178
1788
+ None, # 179
1789
+ None, # 180
1790
+ None, # 181
1791
+ None, # 182
1792
+ None, # 183
1793
+ None, # 184
1794
+ None, # 185
1795
+ None, # 186
1796
+ None, # 187
1797
+ None, # 188
1798
+ None, # 189
1799
+ None, # 190
1800
+ None, # 191
1801
+ None, # 192
1802
+ None, # 193
1803
+ None, # 194
1804
+ None, # 195
1805
+ None, # 196
1806
+ None, # 197
1807
+ None, # 198
1808
+ None, # 199
1809
+ (200, TType.LIST, 'kvDependencies', (TType.STRUCT, [KvDependency, None], False), None, ), # 200
1810
+ (201, TType.STRUCT, 'outputKvInfo', [KvInfo, None], None, ), # 201
1811
+ (202, TType.I64, 'kvPollIntervalMillis', None, None, ), # 202
1812
+ )
1813
+ fix_spec(all_structs)
1814
+ del all_structs