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,2192 @@
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
+
17
+ from thrift.transport import TTransport
18
+ all_structs = []
19
+
20
+
21
+ class Cardinality(object):
22
+ LOW = 0
23
+ HIGH = 1
24
+
25
+ _VALUES_TO_NAMES = {
26
+ 0: "LOW",
27
+ 1: "HIGH",
28
+ }
29
+
30
+ _NAMES_TO_VALUES = {
31
+ "LOW": 0,
32
+ "HIGH": 1,
33
+ }
34
+
35
+
36
+ class DriftMetric(object):
37
+ """
38
+ +----------------------------------+-------------------+----------------+----------------------------------+
39
+ | Metric | Moderate Drift | Severe Drift | Notes |
40
+ +----------------------------------+-------------------+----------------+----------------------------------+
41
+ | Jensen-Shannon Divergence | 0.05 - 0.1 | > 0.1 | Max value is ln(2) ≈ 0.69 |
42
+ +----------------------------------+-------------------+----------------+----------------------------------+
43
+ | Hellinger Distance | 0.1 - 0.25 | > 0.25 | Ranges from 0 to 1 |
44
+ +----------------------------------+-------------------+----------------+----------------------------------+
45
+ | Population Stability Index (PSI) | 0.1 - 0.2 | > 0.2 | Industry standard in some fields |
46
+ +----------------------------------+-------------------+----------------+----------------------------------+
47
+ *
48
+
49
+ """
50
+ JENSEN_SHANNON = 0
51
+ HELLINGER = 1
52
+ PSI = 3
53
+
54
+ _VALUES_TO_NAMES = {
55
+ 0: "JENSEN_SHANNON",
56
+ 1: "HELLINGER",
57
+ 3: "PSI",
58
+ }
59
+
60
+ _NAMES_TO_VALUES = {
61
+ "JENSEN_SHANNON": 0,
62
+ "HELLINGER": 1,
63
+ "PSI": 3,
64
+ }
65
+
66
+
67
+ class TileKey(object):
68
+ """
69
+ Attributes:
70
+ - column
71
+ - slice
72
+ - name
73
+ - sizeMillis
74
+
75
+ """
76
+ thrift_spec = None
77
+
78
+
79
+ def __init__(self, column = None, slice = None, name = None, sizeMillis = None,):
80
+ self.column = column
81
+ self.slice = slice
82
+ self.name = name
83
+ self.sizeMillis = sizeMillis
84
+
85
+ def read(self, iprot):
86
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
87
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
88
+ return
89
+ iprot.readStructBegin()
90
+ while True:
91
+ (fname, ftype, fid) = iprot.readFieldBegin()
92
+ if ftype == TType.STOP:
93
+ break
94
+ if fid == 1:
95
+ if ftype == TType.STRING:
96
+ self.column = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
97
+ else:
98
+ iprot.skip(ftype)
99
+ elif fid == 2:
100
+ if ftype == TType.STRING:
101
+ self.slice = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
102
+ else:
103
+ iprot.skip(ftype)
104
+ elif fid == 3:
105
+ if ftype == TType.STRING:
106
+ self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
107
+ else:
108
+ iprot.skip(ftype)
109
+ elif fid == 4:
110
+ if ftype == TType.I64:
111
+ self.sizeMillis = iprot.readI64()
112
+ else:
113
+ iprot.skip(ftype)
114
+ else:
115
+ iprot.skip(ftype)
116
+ iprot.readFieldEnd()
117
+ iprot.readStructEnd()
118
+
119
+ def write(self, oprot):
120
+ self.validate()
121
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
122
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
123
+ return
124
+ oprot.writeStructBegin('TileKey')
125
+ if self.column is not None:
126
+ oprot.writeFieldBegin('column', TType.STRING, 1)
127
+ oprot.writeString(self.column.encode('utf-8') if sys.version_info[0] == 2 else self.column)
128
+ oprot.writeFieldEnd()
129
+ if self.slice is not None:
130
+ oprot.writeFieldBegin('slice', TType.STRING, 2)
131
+ oprot.writeString(self.slice.encode('utf-8') if sys.version_info[0] == 2 else self.slice)
132
+ oprot.writeFieldEnd()
133
+ if self.name is not None:
134
+ oprot.writeFieldBegin('name', TType.STRING, 3)
135
+ oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
136
+ oprot.writeFieldEnd()
137
+ if self.sizeMillis is not None:
138
+ oprot.writeFieldBegin('sizeMillis', TType.I64, 4)
139
+ oprot.writeI64(self.sizeMillis)
140
+ oprot.writeFieldEnd()
141
+ oprot.writeFieldStop()
142
+ oprot.writeStructEnd()
143
+
144
+ def validate(self):
145
+ return
146
+
147
+ def __repr__(self):
148
+ L = ['%s=%r' % (key, value)
149
+ for key, value in self.__dict__.items()]
150
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
151
+
152
+ def __eq__(self, other):
153
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
154
+
155
+ def __ne__(self, other):
156
+ return not (self == other)
157
+
158
+
159
+ class TileSummary(object):
160
+ """
161
+ Attributes:
162
+ - percentiles
163
+ - histogram
164
+ - count
165
+ - nullCount
166
+ - innerCount
167
+ - innerNullCount
168
+ - lengthPercentiles
169
+ - stringLengthPercentiles
170
+
171
+ """
172
+ thrift_spec = None
173
+
174
+
175
+ def __init__(self, percentiles = None, histogram = None, count = None, nullCount = None, innerCount = None, innerNullCount = None, lengthPercentiles = None, stringLengthPercentiles = None,):
176
+ self.percentiles = percentiles
177
+ self.histogram = histogram
178
+ self.count = count
179
+ self.nullCount = nullCount
180
+ self.innerCount = innerCount
181
+ self.innerNullCount = innerNullCount
182
+ self.lengthPercentiles = lengthPercentiles
183
+ self.stringLengthPercentiles = stringLengthPercentiles
184
+
185
+ def read(self, iprot):
186
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
187
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
188
+ return
189
+ iprot.readStructBegin()
190
+ while True:
191
+ (fname, ftype, fid) = iprot.readFieldBegin()
192
+ if ftype == TType.STOP:
193
+ break
194
+ if fid == 1:
195
+ if ftype == TType.LIST:
196
+ self.percentiles = []
197
+ (_etype3, _size0) = iprot.readListBegin()
198
+ for _i4 in range(_size0):
199
+ _elem5 = iprot.readDouble()
200
+ self.percentiles.append(_elem5)
201
+ iprot.readListEnd()
202
+ else:
203
+ iprot.skip(ftype)
204
+ elif fid == 2:
205
+ if ftype == TType.MAP:
206
+ self.histogram = {}
207
+ (_ktype7, _vtype8, _size6) = iprot.readMapBegin()
208
+ for _i10 in range(_size6):
209
+ _key11 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
210
+ _val12 = iprot.readI64()
211
+ self.histogram[_key11] = _val12
212
+ iprot.readMapEnd()
213
+ else:
214
+ iprot.skip(ftype)
215
+ elif fid == 3:
216
+ if ftype == TType.I64:
217
+ self.count = iprot.readI64()
218
+ else:
219
+ iprot.skip(ftype)
220
+ elif fid == 4:
221
+ if ftype == TType.I64:
222
+ self.nullCount = iprot.readI64()
223
+ else:
224
+ iprot.skip(ftype)
225
+ elif fid == 5:
226
+ if ftype == TType.I64:
227
+ self.innerCount = iprot.readI64()
228
+ else:
229
+ iprot.skip(ftype)
230
+ elif fid == 6:
231
+ if ftype == TType.I64:
232
+ self.innerNullCount = iprot.readI64()
233
+ else:
234
+ iprot.skip(ftype)
235
+ elif fid == 7:
236
+ if ftype == TType.LIST:
237
+ self.lengthPercentiles = []
238
+ (_etype16, _size13) = iprot.readListBegin()
239
+ for _i17 in range(_size13):
240
+ _elem18 = iprot.readI32()
241
+ self.lengthPercentiles.append(_elem18)
242
+ iprot.readListEnd()
243
+ else:
244
+ iprot.skip(ftype)
245
+ elif fid == 8:
246
+ if ftype == TType.LIST:
247
+ self.stringLengthPercentiles = []
248
+ (_etype22, _size19) = iprot.readListBegin()
249
+ for _i23 in range(_size19):
250
+ _elem24 = iprot.readI32()
251
+ self.stringLengthPercentiles.append(_elem24)
252
+ iprot.readListEnd()
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('TileSummary')
266
+ if self.percentiles is not None:
267
+ oprot.writeFieldBegin('percentiles', TType.LIST, 1)
268
+ oprot.writeListBegin(TType.DOUBLE, len(self.percentiles))
269
+ for iter25 in self.percentiles:
270
+ oprot.writeDouble(iter25)
271
+ oprot.writeListEnd()
272
+ oprot.writeFieldEnd()
273
+ if self.histogram is not None:
274
+ oprot.writeFieldBegin('histogram', TType.MAP, 2)
275
+ oprot.writeMapBegin(TType.STRING, TType.I64, len(self.histogram))
276
+ for kiter26, viter27 in self.histogram.items():
277
+ oprot.writeString(kiter26.encode('utf-8') if sys.version_info[0] == 2 else kiter26)
278
+ oprot.writeI64(viter27)
279
+ oprot.writeMapEnd()
280
+ oprot.writeFieldEnd()
281
+ if self.count is not None:
282
+ oprot.writeFieldBegin('count', TType.I64, 3)
283
+ oprot.writeI64(self.count)
284
+ oprot.writeFieldEnd()
285
+ if self.nullCount is not None:
286
+ oprot.writeFieldBegin('nullCount', TType.I64, 4)
287
+ oprot.writeI64(self.nullCount)
288
+ oprot.writeFieldEnd()
289
+ if self.innerCount is not None:
290
+ oprot.writeFieldBegin('innerCount', TType.I64, 5)
291
+ oprot.writeI64(self.innerCount)
292
+ oprot.writeFieldEnd()
293
+ if self.innerNullCount is not None:
294
+ oprot.writeFieldBegin('innerNullCount', TType.I64, 6)
295
+ oprot.writeI64(self.innerNullCount)
296
+ oprot.writeFieldEnd()
297
+ if self.lengthPercentiles is not None:
298
+ oprot.writeFieldBegin('lengthPercentiles', TType.LIST, 7)
299
+ oprot.writeListBegin(TType.I32, len(self.lengthPercentiles))
300
+ for iter28 in self.lengthPercentiles:
301
+ oprot.writeI32(iter28)
302
+ oprot.writeListEnd()
303
+ oprot.writeFieldEnd()
304
+ if self.stringLengthPercentiles is not None:
305
+ oprot.writeFieldBegin('stringLengthPercentiles', TType.LIST, 8)
306
+ oprot.writeListBegin(TType.I32, len(self.stringLengthPercentiles))
307
+ for iter29 in self.stringLengthPercentiles:
308
+ oprot.writeI32(iter29)
309
+ oprot.writeListEnd()
310
+ oprot.writeFieldEnd()
311
+ oprot.writeFieldStop()
312
+ oprot.writeStructEnd()
313
+
314
+ def validate(self):
315
+ return
316
+
317
+ def __repr__(self):
318
+ L = ['%s=%r' % (key, value)
319
+ for key, value in self.__dict__.items()]
320
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
321
+
322
+ def __eq__(self, other):
323
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
324
+
325
+ def __ne__(self, other):
326
+ return not (self == other)
327
+
328
+
329
+ class TileSeriesKey(object):
330
+ """
331
+ Attributes:
332
+ - column
333
+ - slice
334
+ - groupName
335
+ - nodeName
336
+
337
+ """
338
+ thrift_spec = None
339
+
340
+
341
+ def __init__(self, column = None, slice = None, groupName = None, nodeName = None,):
342
+ self.column = column
343
+ self.slice = slice
344
+ self.groupName = groupName
345
+ self.nodeName = nodeName
346
+
347
+ def read(self, iprot):
348
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
349
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
350
+ return
351
+ iprot.readStructBegin()
352
+ while True:
353
+ (fname, ftype, fid) = iprot.readFieldBegin()
354
+ if ftype == TType.STOP:
355
+ break
356
+ if fid == 1:
357
+ if ftype == TType.STRING:
358
+ self.column = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
359
+ else:
360
+ iprot.skip(ftype)
361
+ elif fid == 2:
362
+ if ftype == TType.STRING:
363
+ self.slice = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
364
+ else:
365
+ iprot.skip(ftype)
366
+ elif fid == 3:
367
+ if ftype == TType.STRING:
368
+ self.groupName = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
369
+ else:
370
+ iprot.skip(ftype)
371
+ elif fid == 4:
372
+ if ftype == TType.STRING:
373
+ self.nodeName = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
374
+ else:
375
+ iprot.skip(ftype)
376
+ else:
377
+ iprot.skip(ftype)
378
+ iprot.readFieldEnd()
379
+ iprot.readStructEnd()
380
+
381
+ def write(self, oprot):
382
+ self.validate()
383
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
384
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
385
+ return
386
+ oprot.writeStructBegin('TileSeriesKey')
387
+ if self.column is not None:
388
+ oprot.writeFieldBegin('column', TType.STRING, 1)
389
+ oprot.writeString(self.column.encode('utf-8') if sys.version_info[0] == 2 else self.column)
390
+ oprot.writeFieldEnd()
391
+ if self.slice is not None:
392
+ oprot.writeFieldBegin('slice', TType.STRING, 2)
393
+ oprot.writeString(self.slice.encode('utf-8') if sys.version_info[0] == 2 else self.slice)
394
+ oprot.writeFieldEnd()
395
+ if self.groupName is not None:
396
+ oprot.writeFieldBegin('groupName', TType.STRING, 3)
397
+ oprot.writeString(self.groupName.encode('utf-8') if sys.version_info[0] == 2 else self.groupName)
398
+ oprot.writeFieldEnd()
399
+ if self.nodeName is not None:
400
+ oprot.writeFieldBegin('nodeName', TType.STRING, 4)
401
+ oprot.writeString(self.nodeName.encode('utf-8') if sys.version_info[0] == 2 else self.nodeName)
402
+ oprot.writeFieldEnd()
403
+ oprot.writeFieldStop()
404
+ oprot.writeStructEnd()
405
+
406
+ def validate(self):
407
+ return
408
+
409
+ def __repr__(self):
410
+ L = ['%s=%r' % (key, value)
411
+ for key, value in self.__dict__.items()]
412
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
413
+
414
+ def __eq__(self, other):
415
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
416
+
417
+ def __ne__(self, other):
418
+ return not (self == other)
419
+
420
+
421
+ class TileSummarySeries(object):
422
+ """
423
+ Attributes:
424
+ - percentiles
425
+ - histogram
426
+ - count
427
+ - nullCount
428
+ - innerCount
429
+ - innerNullCount
430
+ - lengthPercentiles
431
+ - stringLengthPercentiles
432
+ - timestamps
433
+ - key
434
+
435
+ """
436
+ thrift_spec = None
437
+
438
+
439
+ def __init__(self, percentiles = None, histogram = None, count = None, nullCount = None, innerCount = None, innerNullCount = None, lengthPercentiles = None, stringLengthPercentiles = None, timestamps = None, key = None,):
440
+ self.percentiles = percentiles
441
+ self.histogram = histogram
442
+ self.count = count
443
+ self.nullCount = nullCount
444
+ self.innerCount = innerCount
445
+ self.innerNullCount = innerNullCount
446
+ self.lengthPercentiles = lengthPercentiles
447
+ self.stringLengthPercentiles = stringLengthPercentiles
448
+ self.timestamps = timestamps
449
+ self.key = key
450
+
451
+ def read(self, iprot):
452
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
453
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
454
+ return
455
+ iprot.readStructBegin()
456
+ while True:
457
+ (fname, ftype, fid) = iprot.readFieldBegin()
458
+ if ftype == TType.STOP:
459
+ break
460
+ if fid == 1:
461
+ if ftype == TType.LIST:
462
+ self.percentiles = []
463
+ (_etype33, _size30) = iprot.readListBegin()
464
+ for _i34 in range(_size30):
465
+ _elem35 = []
466
+ (_etype39, _size36) = iprot.readListBegin()
467
+ for _i40 in range(_size36):
468
+ _elem41 = iprot.readDouble()
469
+ _elem35.append(_elem41)
470
+ iprot.readListEnd()
471
+ self.percentiles.append(_elem35)
472
+ iprot.readListEnd()
473
+ else:
474
+ iprot.skip(ftype)
475
+ elif fid == 2:
476
+ if ftype == TType.MAP:
477
+ self.histogram = {}
478
+ (_ktype43, _vtype44, _size42) = iprot.readMapBegin()
479
+ for _i46 in range(_size42):
480
+ _key47 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
481
+ _val48 = []
482
+ (_etype52, _size49) = iprot.readListBegin()
483
+ for _i53 in range(_size49):
484
+ _elem54 = iprot.readI64()
485
+ _val48.append(_elem54)
486
+ iprot.readListEnd()
487
+ self.histogram[_key47] = _val48
488
+ iprot.readMapEnd()
489
+ else:
490
+ iprot.skip(ftype)
491
+ elif fid == 3:
492
+ if ftype == TType.LIST:
493
+ self.count = []
494
+ (_etype58, _size55) = iprot.readListBegin()
495
+ for _i59 in range(_size55):
496
+ _elem60 = iprot.readI64()
497
+ self.count.append(_elem60)
498
+ iprot.readListEnd()
499
+ else:
500
+ iprot.skip(ftype)
501
+ elif fid == 4:
502
+ if ftype == TType.LIST:
503
+ self.nullCount = []
504
+ (_etype64, _size61) = iprot.readListBegin()
505
+ for _i65 in range(_size61):
506
+ _elem66 = iprot.readI64()
507
+ self.nullCount.append(_elem66)
508
+ iprot.readListEnd()
509
+ else:
510
+ iprot.skip(ftype)
511
+ elif fid == 5:
512
+ if ftype == TType.LIST:
513
+ self.innerCount = []
514
+ (_etype70, _size67) = iprot.readListBegin()
515
+ for _i71 in range(_size67):
516
+ _elem72 = iprot.readI64()
517
+ self.innerCount.append(_elem72)
518
+ iprot.readListEnd()
519
+ else:
520
+ iprot.skip(ftype)
521
+ elif fid == 6:
522
+ if ftype == TType.LIST:
523
+ self.innerNullCount = []
524
+ (_etype76, _size73) = iprot.readListBegin()
525
+ for _i77 in range(_size73):
526
+ _elem78 = iprot.readI64()
527
+ self.innerNullCount.append(_elem78)
528
+ iprot.readListEnd()
529
+ else:
530
+ iprot.skip(ftype)
531
+ elif fid == 7:
532
+ if ftype == TType.LIST:
533
+ self.lengthPercentiles = []
534
+ (_etype82, _size79) = iprot.readListBegin()
535
+ for _i83 in range(_size79):
536
+ _elem84 = []
537
+ (_etype88, _size85) = iprot.readListBegin()
538
+ for _i89 in range(_size85):
539
+ _elem90 = iprot.readI32()
540
+ _elem84.append(_elem90)
541
+ iprot.readListEnd()
542
+ self.lengthPercentiles.append(_elem84)
543
+ iprot.readListEnd()
544
+ else:
545
+ iprot.skip(ftype)
546
+ elif fid == 8:
547
+ if ftype == TType.LIST:
548
+ self.stringLengthPercentiles = []
549
+ (_etype94, _size91) = iprot.readListBegin()
550
+ for _i95 in range(_size91):
551
+ _elem96 = []
552
+ (_etype100, _size97) = iprot.readListBegin()
553
+ for _i101 in range(_size97):
554
+ _elem102 = iprot.readI32()
555
+ _elem96.append(_elem102)
556
+ iprot.readListEnd()
557
+ self.stringLengthPercentiles.append(_elem96)
558
+ iprot.readListEnd()
559
+ else:
560
+ iprot.skip(ftype)
561
+ elif fid == 200:
562
+ if ftype == TType.LIST:
563
+ self.timestamps = []
564
+ (_etype106, _size103) = iprot.readListBegin()
565
+ for _i107 in range(_size103):
566
+ _elem108 = iprot.readI64()
567
+ self.timestamps.append(_elem108)
568
+ iprot.readListEnd()
569
+ else:
570
+ iprot.skip(ftype)
571
+ elif fid == 300:
572
+ if ftype == TType.STRUCT:
573
+ self.key = TileSeriesKey()
574
+ self.key.read(iprot)
575
+ else:
576
+ iprot.skip(ftype)
577
+ else:
578
+ iprot.skip(ftype)
579
+ iprot.readFieldEnd()
580
+ iprot.readStructEnd()
581
+
582
+ def write(self, oprot):
583
+ self.validate()
584
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
585
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
586
+ return
587
+ oprot.writeStructBegin('TileSummarySeries')
588
+ if self.percentiles is not None:
589
+ oprot.writeFieldBegin('percentiles', TType.LIST, 1)
590
+ oprot.writeListBegin(TType.LIST, len(self.percentiles))
591
+ for iter109 in self.percentiles:
592
+ oprot.writeListBegin(TType.DOUBLE, len(iter109))
593
+ for iter110 in iter109:
594
+ oprot.writeDouble(iter110)
595
+ oprot.writeListEnd()
596
+ oprot.writeListEnd()
597
+ oprot.writeFieldEnd()
598
+ if self.histogram is not None:
599
+ oprot.writeFieldBegin('histogram', TType.MAP, 2)
600
+ oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.histogram))
601
+ for kiter111, viter112 in self.histogram.items():
602
+ oprot.writeString(kiter111.encode('utf-8') if sys.version_info[0] == 2 else kiter111)
603
+ oprot.writeListBegin(TType.I64, len(viter112))
604
+ for iter113 in viter112:
605
+ oprot.writeI64(iter113)
606
+ oprot.writeListEnd()
607
+ oprot.writeMapEnd()
608
+ oprot.writeFieldEnd()
609
+ if self.count is not None:
610
+ oprot.writeFieldBegin('count', TType.LIST, 3)
611
+ oprot.writeListBegin(TType.I64, len(self.count))
612
+ for iter114 in self.count:
613
+ oprot.writeI64(iter114)
614
+ oprot.writeListEnd()
615
+ oprot.writeFieldEnd()
616
+ if self.nullCount is not None:
617
+ oprot.writeFieldBegin('nullCount', TType.LIST, 4)
618
+ oprot.writeListBegin(TType.I64, len(self.nullCount))
619
+ for iter115 in self.nullCount:
620
+ oprot.writeI64(iter115)
621
+ oprot.writeListEnd()
622
+ oprot.writeFieldEnd()
623
+ if self.innerCount is not None:
624
+ oprot.writeFieldBegin('innerCount', TType.LIST, 5)
625
+ oprot.writeListBegin(TType.I64, len(self.innerCount))
626
+ for iter116 in self.innerCount:
627
+ oprot.writeI64(iter116)
628
+ oprot.writeListEnd()
629
+ oprot.writeFieldEnd()
630
+ if self.innerNullCount is not None:
631
+ oprot.writeFieldBegin('innerNullCount', TType.LIST, 6)
632
+ oprot.writeListBegin(TType.I64, len(self.innerNullCount))
633
+ for iter117 in self.innerNullCount:
634
+ oprot.writeI64(iter117)
635
+ oprot.writeListEnd()
636
+ oprot.writeFieldEnd()
637
+ if self.lengthPercentiles is not None:
638
+ oprot.writeFieldBegin('lengthPercentiles', TType.LIST, 7)
639
+ oprot.writeListBegin(TType.LIST, len(self.lengthPercentiles))
640
+ for iter118 in self.lengthPercentiles:
641
+ oprot.writeListBegin(TType.I32, len(iter118))
642
+ for iter119 in iter118:
643
+ oprot.writeI32(iter119)
644
+ oprot.writeListEnd()
645
+ oprot.writeListEnd()
646
+ oprot.writeFieldEnd()
647
+ if self.stringLengthPercentiles is not None:
648
+ oprot.writeFieldBegin('stringLengthPercentiles', TType.LIST, 8)
649
+ oprot.writeListBegin(TType.LIST, len(self.stringLengthPercentiles))
650
+ for iter120 in self.stringLengthPercentiles:
651
+ oprot.writeListBegin(TType.I32, len(iter120))
652
+ for iter121 in iter120:
653
+ oprot.writeI32(iter121)
654
+ oprot.writeListEnd()
655
+ oprot.writeListEnd()
656
+ oprot.writeFieldEnd()
657
+ if self.timestamps is not None:
658
+ oprot.writeFieldBegin('timestamps', TType.LIST, 200)
659
+ oprot.writeListBegin(TType.I64, len(self.timestamps))
660
+ for iter122 in self.timestamps:
661
+ oprot.writeI64(iter122)
662
+ oprot.writeListEnd()
663
+ oprot.writeFieldEnd()
664
+ if self.key is not None:
665
+ oprot.writeFieldBegin('key', TType.STRUCT, 300)
666
+ self.key.write(oprot)
667
+ oprot.writeFieldEnd()
668
+ oprot.writeFieldStop()
669
+ oprot.writeStructEnd()
670
+
671
+ def validate(self):
672
+ return
673
+
674
+ def __repr__(self):
675
+ L = ['%s=%r' % (key, value)
676
+ for key, value in self.__dict__.items()]
677
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
678
+
679
+ def __eq__(self, other):
680
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
681
+
682
+ def __ne__(self, other):
683
+ return not (self == other)
684
+
685
+
686
+ class TileDrift(object):
687
+ """
688
+ Attributes:
689
+ - percentileDrift
690
+ - histogramDrift
691
+ - countChangePercent
692
+ - nullRatioChangePercent
693
+ - innerCountChangePercent
694
+ - innerNullCountChangePercent
695
+ - lengthPercentilesDrift
696
+ - stringLengthPercentilesDrift
697
+
698
+ """
699
+ thrift_spec = None
700
+
701
+
702
+ def __init__(self, percentileDrift = None, histogramDrift = None, countChangePercent = None, nullRatioChangePercent = None, innerCountChangePercent = None, innerNullCountChangePercent = None, lengthPercentilesDrift = None, stringLengthPercentilesDrift = None,):
703
+ self.percentileDrift = percentileDrift
704
+ self.histogramDrift = histogramDrift
705
+ self.countChangePercent = countChangePercent
706
+ self.nullRatioChangePercent = nullRatioChangePercent
707
+ self.innerCountChangePercent = innerCountChangePercent
708
+ self.innerNullCountChangePercent = innerNullCountChangePercent
709
+ self.lengthPercentilesDrift = lengthPercentilesDrift
710
+ self.stringLengthPercentilesDrift = stringLengthPercentilesDrift
711
+
712
+ def read(self, iprot):
713
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
714
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
715
+ return
716
+ iprot.readStructBegin()
717
+ while True:
718
+ (fname, ftype, fid) = iprot.readFieldBegin()
719
+ if ftype == TType.STOP:
720
+ break
721
+ if fid == 1:
722
+ if ftype == TType.DOUBLE:
723
+ self.percentileDrift = iprot.readDouble()
724
+ else:
725
+ iprot.skip(ftype)
726
+ elif fid == 2:
727
+ if ftype == TType.DOUBLE:
728
+ self.histogramDrift = iprot.readDouble()
729
+ else:
730
+ iprot.skip(ftype)
731
+ elif fid == 3:
732
+ if ftype == TType.DOUBLE:
733
+ self.countChangePercent = iprot.readDouble()
734
+ else:
735
+ iprot.skip(ftype)
736
+ elif fid == 4:
737
+ if ftype == TType.DOUBLE:
738
+ self.nullRatioChangePercent = iprot.readDouble()
739
+ else:
740
+ iprot.skip(ftype)
741
+ elif fid == 5:
742
+ if ftype == TType.DOUBLE:
743
+ self.innerCountChangePercent = iprot.readDouble()
744
+ else:
745
+ iprot.skip(ftype)
746
+ elif fid == 6:
747
+ if ftype == TType.DOUBLE:
748
+ self.innerNullCountChangePercent = iprot.readDouble()
749
+ else:
750
+ iprot.skip(ftype)
751
+ elif fid == 7:
752
+ if ftype == TType.DOUBLE:
753
+ self.lengthPercentilesDrift = iprot.readDouble()
754
+ else:
755
+ iprot.skip(ftype)
756
+ elif fid == 8:
757
+ if ftype == TType.DOUBLE:
758
+ self.stringLengthPercentilesDrift = iprot.readDouble()
759
+ else:
760
+ iprot.skip(ftype)
761
+ else:
762
+ iprot.skip(ftype)
763
+ iprot.readFieldEnd()
764
+ iprot.readStructEnd()
765
+
766
+ def write(self, oprot):
767
+ self.validate()
768
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
769
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
770
+ return
771
+ oprot.writeStructBegin('TileDrift')
772
+ if self.percentileDrift is not None:
773
+ oprot.writeFieldBegin('percentileDrift', TType.DOUBLE, 1)
774
+ oprot.writeDouble(self.percentileDrift)
775
+ oprot.writeFieldEnd()
776
+ if self.histogramDrift is not None:
777
+ oprot.writeFieldBegin('histogramDrift', TType.DOUBLE, 2)
778
+ oprot.writeDouble(self.histogramDrift)
779
+ oprot.writeFieldEnd()
780
+ if self.countChangePercent is not None:
781
+ oprot.writeFieldBegin('countChangePercent', TType.DOUBLE, 3)
782
+ oprot.writeDouble(self.countChangePercent)
783
+ oprot.writeFieldEnd()
784
+ if self.nullRatioChangePercent is not None:
785
+ oprot.writeFieldBegin('nullRatioChangePercent', TType.DOUBLE, 4)
786
+ oprot.writeDouble(self.nullRatioChangePercent)
787
+ oprot.writeFieldEnd()
788
+ if self.innerCountChangePercent is not None:
789
+ oprot.writeFieldBegin('innerCountChangePercent', TType.DOUBLE, 5)
790
+ oprot.writeDouble(self.innerCountChangePercent)
791
+ oprot.writeFieldEnd()
792
+ if self.innerNullCountChangePercent is not None:
793
+ oprot.writeFieldBegin('innerNullCountChangePercent', TType.DOUBLE, 6)
794
+ oprot.writeDouble(self.innerNullCountChangePercent)
795
+ oprot.writeFieldEnd()
796
+ if self.lengthPercentilesDrift is not None:
797
+ oprot.writeFieldBegin('lengthPercentilesDrift', TType.DOUBLE, 7)
798
+ oprot.writeDouble(self.lengthPercentilesDrift)
799
+ oprot.writeFieldEnd()
800
+ if self.stringLengthPercentilesDrift is not None:
801
+ oprot.writeFieldBegin('stringLengthPercentilesDrift', TType.DOUBLE, 8)
802
+ oprot.writeDouble(self.stringLengthPercentilesDrift)
803
+ oprot.writeFieldEnd()
804
+ oprot.writeFieldStop()
805
+ oprot.writeStructEnd()
806
+
807
+ def validate(self):
808
+ return
809
+
810
+ def __repr__(self):
811
+ L = ['%s=%r' % (key, value)
812
+ for key, value in self.__dict__.items()]
813
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
814
+
815
+ def __eq__(self, other):
816
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
817
+
818
+ def __ne__(self, other):
819
+ return not (self == other)
820
+
821
+
822
+ class TileDriftSeries(object):
823
+ """
824
+ Attributes:
825
+ - percentileDriftSeries
826
+ - histogramDriftSeries
827
+ - countChangePercentSeries
828
+ - nullRatioChangePercentSeries
829
+ - innerCountChangePercentSeries
830
+ - innerNullCountChangePercentSeries
831
+ - lengthPercentilesDriftSeries
832
+ - stringLengthPercentilesDriftSeries
833
+ - timestamps
834
+ - key
835
+
836
+ """
837
+ thrift_spec = None
838
+
839
+
840
+ def __init__(self, percentileDriftSeries = None, histogramDriftSeries = None, countChangePercentSeries = None, nullRatioChangePercentSeries = None, innerCountChangePercentSeries = None, innerNullCountChangePercentSeries = None, lengthPercentilesDriftSeries = None, stringLengthPercentilesDriftSeries = None, timestamps = None, key = None,):
841
+ self.percentileDriftSeries = percentileDriftSeries
842
+ self.histogramDriftSeries = histogramDriftSeries
843
+ self.countChangePercentSeries = countChangePercentSeries
844
+ self.nullRatioChangePercentSeries = nullRatioChangePercentSeries
845
+ self.innerCountChangePercentSeries = innerCountChangePercentSeries
846
+ self.innerNullCountChangePercentSeries = innerNullCountChangePercentSeries
847
+ self.lengthPercentilesDriftSeries = lengthPercentilesDriftSeries
848
+ self.stringLengthPercentilesDriftSeries = stringLengthPercentilesDriftSeries
849
+ self.timestamps = timestamps
850
+ self.key = key
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 == 1:
862
+ if ftype == TType.LIST:
863
+ self.percentileDriftSeries = []
864
+ (_etype126, _size123) = iprot.readListBegin()
865
+ for _i127 in range(_size123):
866
+ _elem128 = iprot.readDouble()
867
+ self.percentileDriftSeries.append(_elem128)
868
+ iprot.readListEnd()
869
+ else:
870
+ iprot.skip(ftype)
871
+ elif fid == 2:
872
+ if ftype == TType.LIST:
873
+ self.histogramDriftSeries = []
874
+ (_etype132, _size129) = iprot.readListBegin()
875
+ for _i133 in range(_size129):
876
+ _elem134 = iprot.readDouble()
877
+ self.histogramDriftSeries.append(_elem134)
878
+ iprot.readListEnd()
879
+ else:
880
+ iprot.skip(ftype)
881
+ elif fid == 3:
882
+ if ftype == TType.LIST:
883
+ self.countChangePercentSeries = []
884
+ (_etype138, _size135) = iprot.readListBegin()
885
+ for _i139 in range(_size135):
886
+ _elem140 = iprot.readDouble()
887
+ self.countChangePercentSeries.append(_elem140)
888
+ iprot.readListEnd()
889
+ else:
890
+ iprot.skip(ftype)
891
+ elif fid == 4:
892
+ if ftype == TType.LIST:
893
+ self.nullRatioChangePercentSeries = []
894
+ (_etype144, _size141) = iprot.readListBegin()
895
+ for _i145 in range(_size141):
896
+ _elem146 = iprot.readDouble()
897
+ self.nullRatioChangePercentSeries.append(_elem146)
898
+ iprot.readListEnd()
899
+ else:
900
+ iprot.skip(ftype)
901
+ elif fid == 5:
902
+ if ftype == TType.LIST:
903
+ self.innerCountChangePercentSeries = []
904
+ (_etype150, _size147) = iprot.readListBegin()
905
+ for _i151 in range(_size147):
906
+ _elem152 = iprot.readDouble()
907
+ self.innerCountChangePercentSeries.append(_elem152)
908
+ iprot.readListEnd()
909
+ else:
910
+ iprot.skip(ftype)
911
+ elif fid == 6:
912
+ if ftype == TType.LIST:
913
+ self.innerNullCountChangePercentSeries = []
914
+ (_etype156, _size153) = iprot.readListBegin()
915
+ for _i157 in range(_size153):
916
+ _elem158 = iprot.readDouble()
917
+ self.innerNullCountChangePercentSeries.append(_elem158)
918
+ iprot.readListEnd()
919
+ else:
920
+ iprot.skip(ftype)
921
+ elif fid == 7:
922
+ if ftype == TType.LIST:
923
+ self.lengthPercentilesDriftSeries = []
924
+ (_etype162, _size159) = iprot.readListBegin()
925
+ for _i163 in range(_size159):
926
+ _elem164 = iprot.readDouble()
927
+ self.lengthPercentilesDriftSeries.append(_elem164)
928
+ iprot.readListEnd()
929
+ else:
930
+ iprot.skip(ftype)
931
+ elif fid == 8:
932
+ if ftype == TType.LIST:
933
+ self.stringLengthPercentilesDriftSeries = []
934
+ (_etype168, _size165) = iprot.readListBegin()
935
+ for _i169 in range(_size165):
936
+ _elem170 = iprot.readDouble()
937
+ self.stringLengthPercentilesDriftSeries.append(_elem170)
938
+ iprot.readListEnd()
939
+ else:
940
+ iprot.skip(ftype)
941
+ elif fid == 200:
942
+ if ftype == TType.LIST:
943
+ self.timestamps = []
944
+ (_etype174, _size171) = iprot.readListBegin()
945
+ for _i175 in range(_size171):
946
+ _elem176 = iprot.readI64()
947
+ self.timestamps.append(_elem176)
948
+ iprot.readListEnd()
949
+ else:
950
+ iprot.skip(ftype)
951
+ elif fid == 300:
952
+ if ftype == TType.STRUCT:
953
+ self.key = TileSeriesKey()
954
+ self.key.read(iprot)
955
+ else:
956
+ iprot.skip(ftype)
957
+ else:
958
+ iprot.skip(ftype)
959
+ iprot.readFieldEnd()
960
+ iprot.readStructEnd()
961
+
962
+ def write(self, oprot):
963
+ self.validate()
964
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
965
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
966
+ return
967
+ oprot.writeStructBegin('TileDriftSeries')
968
+ if self.percentileDriftSeries is not None:
969
+ oprot.writeFieldBegin('percentileDriftSeries', TType.LIST, 1)
970
+ oprot.writeListBegin(TType.DOUBLE, len(self.percentileDriftSeries))
971
+ for iter177 in self.percentileDriftSeries:
972
+ oprot.writeDouble(iter177)
973
+ oprot.writeListEnd()
974
+ oprot.writeFieldEnd()
975
+ if self.histogramDriftSeries is not None:
976
+ oprot.writeFieldBegin('histogramDriftSeries', TType.LIST, 2)
977
+ oprot.writeListBegin(TType.DOUBLE, len(self.histogramDriftSeries))
978
+ for iter178 in self.histogramDriftSeries:
979
+ oprot.writeDouble(iter178)
980
+ oprot.writeListEnd()
981
+ oprot.writeFieldEnd()
982
+ if self.countChangePercentSeries is not None:
983
+ oprot.writeFieldBegin('countChangePercentSeries', TType.LIST, 3)
984
+ oprot.writeListBegin(TType.DOUBLE, len(self.countChangePercentSeries))
985
+ for iter179 in self.countChangePercentSeries:
986
+ oprot.writeDouble(iter179)
987
+ oprot.writeListEnd()
988
+ oprot.writeFieldEnd()
989
+ if self.nullRatioChangePercentSeries is not None:
990
+ oprot.writeFieldBegin('nullRatioChangePercentSeries', TType.LIST, 4)
991
+ oprot.writeListBegin(TType.DOUBLE, len(self.nullRatioChangePercentSeries))
992
+ for iter180 in self.nullRatioChangePercentSeries:
993
+ oprot.writeDouble(iter180)
994
+ oprot.writeListEnd()
995
+ oprot.writeFieldEnd()
996
+ if self.innerCountChangePercentSeries is not None:
997
+ oprot.writeFieldBegin('innerCountChangePercentSeries', TType.LIST, 5)
998
+ oprot.writeListBegin(TType.DOUBLE, len(self.innerCountChangePercentSeries))
999
+ for iter181 in self.innerCountChangePercentSeries:
1000
+ oprot.writeDouble(iter181)
1001
+ oprot.writeListEnd()
1002
+ oprot.writeFieldEnd()
1003
+ if self.innerNullCountChangePercentSeries is not None:
1004
+ oprot.writeFieldBegin('innerNullCountChangePercentSeries', TType.LIST, 6)
1005
+ oprot.writeListBegin(TType.DOUBLE, len(self.innerNullCountChangePercentSeries))
1006
+ for iter182 in self.innerNullCountChangePercentSeries:
1007
+ oprot.writeDouble(iter182)
1008
+ oprot.writeListEnd()
1009
+ oprot.writeFieldEnd()
1010
+ if self.lengthPercentilesDriftSeries is not None:
1011
+ oprot.writeFieldBegin('lengthPercentilesDriftSeries', TType.LIST, 7)
1012
+ oprot.writeListBegin(TType.DOUBLE, len(self.lengthPercentilesDriftSeries))
1013
+ for iter183 in self.lengthPercentilesDriftSeries:
1014
+ oprot.writeDouble(iter183)
1015
+ oprot.writeListEnd()
1016
+ oprot.writeFieldEnd()
1017
+ if self.stringLengthPercentilesDriftSeries is not None:
1018
+ oprot.writeFieldBegin('stringLengthPercentilesDriftSeries', TType.LIST, 8)
1019
+ oprot.writeListBegin(TType.DOUBLE, len(self.stringLengthPercentilesDriftSeries))
1020
+ for iter184 in self.stringLengthPercentilesDriftSeries:
1021
+ oprot.writeDouble(iter184)
1022
+ oprot.writeListEnd()
1023
+ oprot.writeFieldEnd()
1024
+ if self.timestamps is not None:
1025
+ oprot.writeFieldBegin('timestamps', TType.LIST, 200)
1026
+ oprot.writeListBegin(TType.I64, len(self.timestamps))
1027
+ for iter185 in self.timestamps:
1028
+ oprot.writeI64(iter185)
1029
+ oprot.writeListEnd()
1030
+ oprot.writeFieldEnd()
1031
+ if self.key is not None:
1032
+ oprot.writeFieldBegin('key', TType.STRUCT, 300)
1033
+ self.key.write(oprot)
1034
+ oprot.writeFieldEnd()
1035
+ oprot.writeFieldStop()
1036
+ oprot.writeStructEnd()
1037
+
1038
+ def validate(self):
1039
+ return
1040
+
1041
+ def __repr__(self):
1042
+ L = ['%s=%r' % (key, value)
1043
+ for key, value in self.__dict__.items()]
1044
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1045
+
1046
+ def __eq__(self, other):
1047
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1048
+
1049
+ def __ne__(self, other):
1050
+ return not (self == other)
1051
+
1052
+
1053
+ class DriftSpec(object):
1054
+ """
1055
+ Attributes:
1056
+ - slices
1057
+ - derivations
1058
+ - columnCardinalityHints
1059
+ - tileSize
1060
+ - lookbackWindows
1061
+ - driftMetric
1062
+
1063
+ """
1064
+ thrift_spec = None
1065
+
1066
+
1067
+ def __init__(self, slices = None, derivations = None, columnCardinalityHints = None, tileSize = None, lookbackWindows = None, driftMetric = 0,):
1068
+ self.slices = slices
1069
+ self.derivations = derivations
1070
+ self.columnCardinalityHints = columnCardinalityHints
1071
+ self.tileSize = tileSize
1072
+ self.lookbackWindows = lookbackWindows
1073
+ self.driftMetric = driftMetric
1074
+
1075
+ def read(self, iprot):
1076
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1077
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1078
+ return
1079
+ iprot.readStructBegin()
1080
+ while True:
1081
+ (fname, ftype, fid) = iprot.readFieldBegin()
1082
+ if ftype == TType.STOP:
1083
+ break
1084
+ if fid == 1:
1085
+ if ftype == TType.LIST:
1086
+ self.slices = []
1087
+ (_etype189, _size186) = iprot.readListBegin()
1088
+ for _i190 in range(_size186):
1089
+ _elem191 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1090
+ self.slices.append(_elem191)
1091
+ iprot.readListEnd()
1092
+ else:
1093
+ iprot.skip(ftype)
1094
+ elif fid == 2:
1095
+ if ftype == TType.MAP:
1096
+ self.derivations = {}
1097
+ (_ktype193, _vtype194, _size192) = iprot.readMapBegin()
1098
+ for _i196 in range(_size192):
1099
+ _key197 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1100
+ _val198 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1101
+ self.derivations[_key197] = _val198
1102
+ iprot.readMapEnd()
1103
+ else:
1104
+ iprot.skip(ftype)
1105
+ elif fid == 3:
1106
+ if ftype == TType.MAP:
1107
+ self.columnCardinalityHints = {}
1108
+ (_ktype200, _vtype201, _size199) = iprot.readMapBegin()
1109
+ for _i203 in range(_size199):
1110
+ _key204 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1111
+ _val205 = iprot.readI32()
1112
+ self.columnCardinalityHints[_key204] = _val205
1113
+ iprot.readMapEnd()
1114
+ else:
1115
+ iprot.skip(ftype)
1116
+ elif fid == 4:
1117
+ if ftype == TType.STRUCT:
1118
+ self.tileSize = ai.chronon.api.common.ttypes.Window()
1119
+ self.tileSize.read(iprot)
1120
+ else:
1121
+ iprot.skip(ftype)
1122
+ elif fid == 5:
1123
+ if ftype == TType.LIST:
1124
+ self.lookbackWindows = []
1125
+ (_etype209, _size206) = iprot.readListBegin()
1126
+ for _i210 in range(_size206):
1127
+ _elem211 = ai.chronon.api.common.ttypes.Window()
1128
+ _elem211.read(iprot)
1129
+ self.lookbackWindows.append(_elem211)
1130
+ iprot.readListEnd()
1131
+ else:
1132
+ iprot.skip(ftype)
1133
+ elif fid == 6:
1134
+ if ftype == TType.I32:
1135
+ self.driftMetric = iprot.readI32()
1136
+ else:
1137
+ iprot.skip(ftype)
1138
+ else:
1139
+ iprot.skip(ftype)
1140
+ iprot.readFieldEnd()
1141
+ iprot.readStructEnd()
1142
+
1143
+ def write(self, oprot):
1144
+ self.validate()
1145
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1146
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1147
+ return
1148
+ oprot.writeStructBegin('DriftSpec')
1149
+ if self.slices is not None:
1150
+ oprot.writeFieldBegin('slices', TType.LIST, 1)
1151
+ oprot.writeListBegin(TType.STRING, len(self.slices))
1152
+ for iter212 in self.slices:
1153
+ oprot.writeString(iter212.encode('utf-8') if sys.version_info[0] == 2 else iter212)
1154
+ oprot.writeListEnd()
1155
+ oprot.writeFieldEnd()
1156
+ if self.derivations is not None:
1157
+ oprot.writeFieldBegin('derivations', TType.MAP, 2)
1158
+ oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.derivations))
1159
+ for kiter213, viter214 in self.derivations.items():
1160
+ oprot.writeString(kiter213.encode('utf-8') if sys.version_info[0] == 2 else kiter213)
1161
+ oprot.writeString(viter214.encode('utf-8') if sys.version_info[0] == 2 else viter214)
1162
+ oprot.writeMapEnd()
1163
+ oprot.writeFieldEnd()
1164
+ if self.columnCardinalityHints is not None:
1165
+ oprot.writeFieldBegin('columnCardinalityHints', TType.MAP, 3)
1166
+ oprot.writeMapBegin(TType.STRING, TType.I32, len(self.columnCardinalityHints))
1167
+ for kiter215, viter216 in self.columnCardinalityHints.items():
1168
+ oprot.writeString(kiter215.encode('utf-8') if sys.version_info[0] == 2 else kiter215)
1169
+ oprot.writeI32(viter216)
1170
+ oprot.writeMapEnd()
1171
+ oprot.writeFieldEnd()
1172
+ if self.tileSize is not None:
1173
+ oprot.writeFieldBegin('tileSize', TType.STRUCT, 4)
1174
+ self.tileSize.write(oprot)
1175
+ oprot.writeFieldEnd()
1176
+ if self.lookbackWindows is not None:
1177
+ oprot.writeFieldBegin('lookbackWindows', TType.LIST, 5)
1178
+ oprot.writeListBegin(TType.STRUCT, len(self.lookbackWindows))
1179
+ for iter217 in self.lookbackWindows:
1180
+ iter217.write(oprot)
1181
+ oprot.writeListEnd()
1182
+ oprot.writeFieldEnd()
1183
+ if self.driftMetric is not None:
1184
+ oprot.writeFieldBegin('driftMetric', TType.I32, 6)
1185
+ oprot.writeI32(self.driftMetric)
1186
+ oprot.writeFieldEnd()
1187
+ oprot.writeFieldStop()
1188
+ oprot.writeStructEnd()
1189
+
1190
+ def validate(self):
1191
+ return
1192
+
1193
+ def __repr__(self):
1194
+ L = ['%s=%r' % (key, value)
1195
+ for key, value in self.__dict__.items()]
1196
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1197
+
1198
+ def __eq__(self, other):
1199
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1200
+
1201
+ def __ne__(self, other):
1202
+ return not (self == other)
1203
+
1204
+
1205
+ class JoinDriftRequest(object):
1206
+ """
1207
+ Attributes:
1208
+ - name
1209
+ - startTs
1210
+ - endTs
1211
+ - offset
1212
+ - algorithm
1213
+ - columnName
1214
+
1215
+ """
1216
+ thrift_spec = None
1217
+
1218
+
1219
+ def __init__(self, name = None, startTs = None, endTs = None, offset = None, algorithm = None, columnName = None,):
1220
+ self.name = name
1221
+ self.startTs = startTs
1222
+ self.endTs = endTs
1223
+ self.offset = offset
1224
+ self.algorithm = algorithm
1225
+ self.columnName = columnName
1226
+
1227
+ def read(self, iprot):
1228
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1229
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1230
+ return
1231
+ iprot.readStructBegin()
1232
+ while True:
1233
+ (fname, ftype, fid) = iprot.readFieldBegin()
1234
+ if ftype == TType.STOP:
1235
+ break
1236
+ if fid == 1:
1237
+ if ftype == TType.STRING:
1238
+ self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1239
+ else:
1240
+ iprot.skip(ftype)
1241
+ elif fid == 2:
1242
+ if ftype == TType.I64:
1243
+ self.startTs = iprot.readI64()
1244
+ else:
1245
+ iprot.skip(ftype)
1246
+ elif fid == 3:
1247
+ if ftype == TType.I64:
1248
+ self.endTs = iprot.readI64()
1249
+ else:
1250
+ iprot.skip(ftype)
1251
+ elif fid == 6:
1252
+ if ftype == TType.STRING:
1253
+ self.offset = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1254
+ else:
1255
+ iprot.skip(ftype)
1256
+ elif fid == 7:
1257
+ if ftype == TType.I32:
1258
+ self.algorithm = iprot.readI32()
1259
+ else:
1260
+ iprot.skip(ftype)
1261
+ elif fid == 8:
1262
+ if ftype == TType.STRING:
1263
+ self.columnName = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1264
+ else:
1265
+ iprot.skip(ftype)
1266
+ else:
1267
+ iprot.skip(ftype)
1268
+ iprot.readFieldEnd()
1269
+ iprot.readStructEnd()
1270
+
1271
+ def write(self, oprot):
1272
+ self.validate()
1273
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1274
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1275
+ return
1276
+ oprot.writeStructBegin('JoinDriftRequest')
1277
+ if self.name is not None:
1278
+ oprot.writeFieldBegin('name', TType.STRING, 1)
1279
+ oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
1280
+ oprot.writeFieldEnd()
1281
+ if self.startTs is not None:
1282
+ oprot.writeFieldBegin('startTs', TType.I64, 2)
1283
+ oprot.writeI64(self.startTs)
1284
+ oprot.writeFieldEnd()
1285
+ if self.endTs is not None:
1286
+ oprot.writeFieldBegin('endTs', TType.I64, 3)
1287
+ oprot.writeI64(self.endTs)
1288
+ oprot.writeFieldEnd()
1289
+ if self.offset is not None:
1290
+ oprot.writeFieldBegin('offset', TType.STRING, 6)
1291
+ oprot.writeString(self.offset.encode('utf-8') if sys.version_info[0] == 2 else self.offset)
1292
+ oprot.writeFieldEnd()
1293
+ if self.algorithm is not None:
1294
+ oprot.writeFieldBegin('algorithm', TType.I32, 7)
1295
+ oprot.writeI32(self.algorithm)
1296
+ oprot.writeFieldEnd()
1297
+ if self.columnName is not None:
1298
+ oprot.writeFieldBegin('columnName', TType.STRING, 8)
1299
+ oprot.writeString(self.columnName.encode('utf-8') if sys.version_info[0] == 2 else self.columnName)
1300
+ oprot.writeFieldEnd()
1301
+ oprot.writeFieldStop()
1302
+ oprot.writeStructEnd()
1303
+
1304
+ def validate(self):
1305
+ if self.name is None:
1306
+ raise TProtocolException(message='Required field name is unset!')
1307
+ if self.startTs is None:
1308
+ raise TProtocolException(message='Required field startTs is unset!')
1309
+ if self.endTs is None:
1310
+ raise TProtocolException(message='Required field endTs is unset!')
1311
+ return
1312
+
1313
+ def __repr__(self):
1314
+ L = ['%s=%r' % (key, value)
1315
+ for key, value in self.__dict__.items()]
1316
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1317
+
1318
+ def __eq__(self, other):
1319
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1320
+
1321
+ def __ne__(self, other):
1322
+ return not (self == other)
1323
+
1324
+
1325
+ class JoinDriftResponse(object):
1326
+ """
1327
+ Attributes:
1328
+ - driftSeries
1329
+
1330
+ """
1331
+ thrift_spec = None
1332
+
1333
+
1334
+ def __init__(self, driftSeries = None,):
1335
+ self.driftSeries = driftSeries
1336
+
1337
+ def read(self, iprot):
1338
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1339
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1340
+ return
1341
+ iprot.readStructBegin()
1342
+ while True:
1343
+ (fname, ftype, fid) = iprot.readFieldBegin()
1344
+ if ftype == TType.STOP:
1345
+ break
1346
+ if fid == 1:
1347
+ if ftype == TType.LIST:
1348
+ self.driftSeries = []
1349
+ (_etype221, _size218) = iprot.readListBegin()
1350
+ for _i222 in range(_size218):
1351
+ _elem223 = TileDriftSeries()
1352
+ _elem223.read(iprot)
1353
+ self.driftSeries.append(_elem223)
1354
+ iprot.readListEnd()
1355
+ else:
1356
+ iprot.skip(ftype)
1357
+ else:
1358
+ iprot.skip(ftype)
1359
+ iprot.readFieldEnd()
1360
+ iprot.readStructEnd()
1361
+
1362
+ def write(self, oprot):
1363
+ self.validate()
1364
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1365
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1366
+ return
1367
+ oprot.writeStructBegin('JoinDriftResponse')
1368
+ if self.driftSeries is not None:
1369
+ oprot.writeFieldBegin('driftSeries', TType.LIST, 1)
1370
+ oprot.writeListBegin(TType.STRUCT, len(self.driftSeries))
1371
+ for iter224 in self.driftSeries:
1372
+ iter224.write(oprot)
1373
+ oprot.writeListEnd()
1374
+ oprot.writeFieldEnd()
1375
+ oprot.writeFieldStop()
1376
+ oprot.writeStructEnd()
1377
+
1378
+ def validate(self):
1379
+ if self.driftSeries is None:
1380
+ raise TProtocolException(message='Required field driftSeries is unset!')
1381
+ return
1382
+
1383
+ def __repr__(self):
1384
+ L = ['%s=%r' % (key, value)
1385
+ for key, value in self.__dict__.items()]
1386
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1387
+
1388
+ def __eq__(self, other):
1389
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1390
+
1391
+ def __ne__(self, other):
1392
+ return not (self == other)
1393
+
1394
+
1395
+ class JoinSummaryRequest(object):
1396
+ """
1397
+ Attributes:
1398
+ - name
1399
+ - startTs
1400
+ - endTs
1401
+ - percentiles
1402
+ - columnName
1403
+
1404
+ """
1405
+ thrift_spec = None
1406
+
1407
+
1408
+ def __init__(self, name = None, startTs = None, endTs = None, percentiles = None, columnName = None,):
1409
+ self.name = name
1410
+ self.startTs = startTs
1411
+ self.endTs = endTs
1412
+ self.percentiles = percentiles
1413
+ self.columnName = columnName
1414
+
1415
+ def read(self, iprot):
1416
+ if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
1417
+ iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
1418
+ return
1419
+ iprot.readStructBegin()
1420
+ while True:
1421
+ (fname, ftype, fid) = iprot.readFieldBegin()
1422
+ if ftype == TType.STOP:
1423
+ break
1424
+ if fid == 1:
1425
+ if ftype == TType.STRING:
1426
+ self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1427
+ else:
1428
+ iprot.skip(ftype)
1429
+ elif fid == 2:
1430
+ if ftype == TType.I64:
1431
+ self.startTs = iprot.readI64()
1432
+ else:
1433
+ iprot.skip(ftype)
1434
+ elif fid == 3:
1435
+ if ftype == TType.I64:
1436
+ self.endTs = iprot.readI64()
1437
+ else:
1438
+ iprot.skip(ftype)
1439
+ elif fid == 5:
1440
+ if ftype == TType.STRING:
1441
+ self.percentiles = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1442
+ else:
1443
+ iprot.skip(ftype)
1444
+ elif fid == 8:
1445
+ if ftype == TType.STRING:
1446
+ self.columnName = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString()
1447
+ else:
1448
+ iprot.skip(ftype)
1449
+ else:
1450
+ iprot.skip(ftype)
1451
+ iprot.readFieldEnd()
1452
+ iprot.readStructEnd()
1453
+
1454
+ def write(self, oprot):
1455
+ self.validate()
1456
+ if oprot._fast_encode is not None and self.thrift_spec is not None:
1457
+ oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
1458
+ return
1459
+ oprot.writeStructBegin('JoinSummaryRequest')
1460
+ if self.name is not None:
1461
+ oprot.writeFieldBegin('name', TType.STRING, 1)
1462
+ oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
1463
+ oprot.writeFieldEnd()
1464
+ if self.startTs is not None:
1465
+ oprot.writeFieldBegin('startTs', TType.I64, 2)
1466
+ oprot.writeI64(self.startTs)
1467
+ oprot.writeFieldEnd()
1468
+ if self.endTs is not None:
1469
+ oprot.writeFieldBegin('endTs', TType.I64, 3)
1470
+ oprot.writeI64(self.endTs)
1471
+ oprot.writeFieldEnd()
1472
+ if self.percentiles is not None:
1473
+ oprot.writeFieldBegin('percentiles', TType.STRING, 5)
1474
+ oprot.writeString(self.percentiles.encode('utf-8') if sys.version_info[0] == 2 else self.percentiles)
1475
+ oprot.writeFieldEnd()
1476
+ if self.columnName is not None:
1477
+ oprot.writeFieldBegin('columnName', TType.STRING, 8)
1478
+ oprot.writeString(self.columnName.encode('utf-8') if sys.version_info[0] == 2 else self.columnName)
1479
+ oprot.writeFieldEnd()
1480
+ oprot.writeFieldStop()
1481
+ oprot.writeStructEnd()
1482
+
1483
+ def validate(self):
1484
+ if self.name is None:
1485
+ raise TProtocolException(message='Required field name is unset!')
1486
+ if self.startTs is None:
1487
+ raise TProtocolException(message='Required field startTs is unset!')
1488
+ if self.endTs is None:
1489
+ raise TProtocolException(message='Required field endTs is unset!')
1490
+ if self.columnName is None:
1491
+ raise TProtocolException(message='Required field columnName is unset!')
1492
+ return
1493
+
1494
+ def __repr__(self):
1495
+ L = ['%s=%r' % (key, value)
1496
+ for key, value in self.__dict__.items()]
1497
+ return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
1498
+
1499
+ def __eq__(self, other):
1500
+ return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
1501
+
1502
+ def __ne__(self, other):
1503
+ return not (self == other)
1504
+ all_structs.append(TileKey)
1505
+ TileKey.thrift_spec = (
1506
+ None, # 0
1507
+ (1, TType.STRING, 'column', 'UTF8', None, ), # 1
1508
+ (2, TType.STRING, 'slice', 'UTF8', None, ), # 2
1509
+ (3, TType.STRING, 'name', 'UTF8', None, ), # 3
1510
+ (4, TType.I64, 'sizeMillis', None, None, ), # 4
1511
+ )
1512
+ all_structs.append(TileSummary)
1513
+ TileSummary.thrift_spec = (
1514
+ None, # 0
1515
+ (1, TType.LIST, 'percentiles', (TType.DOUBLE, None, False), None, ), # 1
1516
+ (2, TType.MAP, 'histogram', (TType.STRING, 'UTF8', TType.I64, None, False), None, ), # 2
1517
+ (3, TType.I64, 'count', None, None, ), # 3
1518
+ (4, TType.I64, 'nullCount', None, None, ), # 4
1519
+ (5, TType.I64, 'innerCount', None, None, ), # 5
1520
+ (6, TType.I64, 'innerNullCount', None, None, ), # 6
1521
+ (7, TType.LIST, 'lengthPercentiles', (TType.I32, None, False), None, ), # 7
1522
+ (8, TType.LIST, 'stringLengthPercentiles', (TType.I32, None, False), None, ), # 8
1523
+ )
1524
+ all_structs.append(TileSeriesKey)
1525
+ TileSeriesKey.thrift_spec = (
1526
+ None, # 0
1527
+ (1, TType.STRING, 'column', 'UTF8', None, ), # 1
1528
+ (2, TType.STRING, 'slice', 'UTF8', None, ), # 2
1529
+ (3, TType.STRING, 'groupName', 'UTF8', None, ), # 3
1530
+ (4, TType.STRING, 'nodeName', 'UTF8', None, ), # 4
1531
+ )
1532
+ all_structs.append(TileSummarySeries)
1533
+ TileSummarySeries.thrift_spec = (
1534
+ None, # 0
1535
+ (1, TType.LIST, 'percentiles', (TType.LIST, (TType.DOUBLE, None, False), False), None, ), # 1
1536
+ (2, TType.MAP, 'histogram', (TType.STRING, 'UTF8', TType.LIST, (TType.I64, None, False), False), None, ), # 2
1537
+ (3, TType.LIST, 'count', (TType.I64, None, False), None, ), # 3
1538
+ (4, TType.LIST, 'nullCount', (TType.I64, None, False), None, ), # 4
1539
+ (5, TType.LIST, 'innerCount', (TType.I64, None, False), None, ), # 5
1540
+ (6, TType.LIST, 'innerNullCount', (TType.I64, None, False), None, ), # 6
1541
+ (7, TType.LIST, 'lengthPercentiles', (TType.LIST, (TType.I32, None, False), False), None, ), # 7
1542
+ (8, TType.LIST, 'stringLengthPercentiles', (TType.LIST, (TType.I32, None, False), False), None, ), # 8
1543
+ None, # 9
1544
+ None, # 10
1545
+ None, # 11
1546
+ None, # 12
1547
+ None, # 13
1548
+ None, # 14
1549
+ None, # 15
1550
+ None, # 16
1551
+ None, # 17
1552
+ None, # 18
1553
+ None, # 19
1554
+ None, # 20
1555
+ None, # 21
1556
+ None, # 22
1557
+ None, # 23
1558
+ None, # 24
1559
+ None, # 25
1560
+ None, # 26
1561
+ None, # 27
1562
+ None, # 28
1563
+ None, # 29
1564
+ None, # 30
1565
+ None, # 31
1566
+ None, # 32
1567
+ None, # 33
1568
+ None, # 34
1569
+ None, # 35
1570
+ None, # 36
1571
+ None, # 37
1572
+ None, # 38
1573
+ None, # 39
1574
+ None, # 40
1575
+ None, # 41
1576
+ None, # 42
1577
+ None, # 43
1578
+ None, # 44
1579
+ None, # 45
1580
+ None, # 46
1581
+ None, # 47
1582
+ None, # 48
1583
+ None, # 49
1584
+ None, # 50
1585
+ None, # 51
1586
+ None, # 52
1587
+ None, # 53
1588
+ None, # 54
1589
+ None, # 55
1590
+ None, # 56
1591
+ None, # 57
1592
+ None, # 58
1593
+ None, # 59
1594
+ None, # 60
1595
+ None, # 61
1596
+ None, # 62
1597
+ None, # 63
1598
+ None, # 64
1599
+ None, # 65
1600
+ None, # 66
1601
+ None, # 67
1602
+ None, # 68
1603
+ None, # 69
1604
+ None, # 70
1605
+ None, # 71
1606
+ None, # 72
1607
+ None, # 73
1608
+ None, # 74
1609
+ None, # 75
1610
+ None, # 76
1611
+ None, # 77
1612
+ None, # 78
1613
+ None, # 79
1614
+ None, # 80
1615
+ None, # 81
1616
+ None, # 82
1617
+ None, # 83
1618
+ None, # 84
1619
+ None, # 85
1620
+ None, # 86
1621
+ None, # 87
1622
+ None, # 88
1623
+ None, # 89
1624
+ None, # 90
1625
+ None, # 91
1626
+ None, # 92
1627
+ None, # 93
1628
+ None, # 94
1629
+ None, # 95
1630
+ None, # 96
1631
+ None, # 97
1632
+ None, # 98
1633
+ None, # 99
1634
+ None, # 100
1635
+ None, # 101
1636
+ None, # 102
1637
+ None, # 103
1638
+ None, # 104
1639
+ None, # 105
1640
+ None, # 106
1641
+ None, # 107
1642
+ None, # 108
1643
+ None, # 109
1644
+ None, # 110
1645
+ None, # 111
1646
+ None, # 112
1647
+ None, # 113
1648
+ None, # 114
1649
+ None, # 115
1650
+ None, # 116
1651
+ None, # 117
1652
+ None, # 118
1653
+ None, # 119
1654
+ None, # 120
1655
+ None, # 121
1656
+ None, # 122
1657
+ None, # 123
1658
+ None, # 124
1659
+ None, # 125
1660
+ None, # 126
1661
+ None, # 127
1662
+ None, # 128
1663
+ None, # 129
1664
+ None, # 130
1665
+ None, # 131
1666
+ None, # 132
1667
+ None, # 133
1668
+ None, # 134
1669
+ None, # 135
1670
+ None, # 136
1671
+ None, # 137
1672
+ None, # 138
1673
+ None, # 139
1674
+ None, # 140
1675
+ None, # 141
1676
+ None, # 142
1677
+ None, # 143
1678
+ None, # 144
1679
+ None, # 145
1680
+ None, # 146
1681
+ None, # 147
1682
+ None, # 148
1683
+ None, # 149
1684
+ None, # 150
1685
+ None, # 151
1686
+ None, # 152
1687
+ None, # 153
1688
+ None, # 154
1689
+ None, # 155
1690
+ None, # 156
1691
+ None, # 157
1692
+ None, # 158
1693
+ None, # 159
1694
+ None, # 160
1695
+ None, # 161
1696
+ None, # 162
1697
+ None, # 163
1698
+ None, # 164
1699
+ None, # 165
1700
+ None, # 166
1701
+ None, # 167
1702
+ None, # 168
1703
+ None, # 169
1704
+ None, # 170
1705
+ None, # 171
1706
+ None, # 172
1707
+ None, # 173
1708
+ None, # 174
1709
+ None, # 175
1710
+ None, # 176
1711
+ None, # 177
1712
+ None, # 178
1713
+ None, # 179
1714
+ None, # 180
1715
+ None, # 181
1716
+ None, # 182
1717
+ None, # 183
1718
+ None, # 184
1719
+ None, # 185
1720
+ None, # 186
1721
+ None, # 187
1722
+ None, # 188
1723
+ None, # 189
1724
+ None, # 190
1725
+ None, # 191
1726
+ None, # 192
1727
+ None, # 193
1728
+ None, # 194
1729
+ None, # 195
1730
+ None, # 196
1731
+ None, # 197
1732
+ None, # 198
1733
+ None, # 199
1734
+ (200, TType.LIST, 'timestamps', (TType.I64, None, False), None, ), # 200
1735
+ None, # 201
1736
+ None, # 202
1737
+ None, # 203
1738
+ None, # 204
1739
+ None, # 205
1740
+ None, # 206
1741
+ None, # 207
1742
+ None, # 208
1743
+ None, # 209
1744
+ None, # 210
1745
+ None, # 211
1746
+ None, # 212
1747
+ None, # 213
1748
+ None, # 214
1749
+ None, # 215
1750
+ None, # 216
1751
+ None, # 217
1752
+ None, # 218
1753
+ None, # 219
1754
+ None, # 220
1755
+ None, # 221
1756
+ None, # 222
1757
+ None, # 223
1758
+ None, # 224
1759
+ None, # 225
1760
+ None, # 226
1761
+ None, # 227
1762
+ None, # 228
1763
+ None, # 229
1764
+ None, # 230
1765
+ None, # 231
1766
+ None, # 232
1767
+ None, # 233
1768
+ None, # 234
1769
+ None, # 235
1770
+ None, # 236
1771
+ None, # 237
1772
+ None, # 238
1773
+ None, # 239
1774
+ None, # 240
1775
+ None, # 241
1776
+ None, # 242
1777
+ None, # 243
1778
+ None, # 244
1779
+ None, # 245
1780
+ None, # 246
1781
+ None, # 247
1782
+ None, # 248
1783
+ None, # 249
1784
+ None, # 250
1785
+ None, # 251
1786
+ None, # 252
1787
+ None, # 253
1788
+ None, # 254
1789
+ None, # 255
1790
+ None, # 256
1791
+ None, # 257
1792
+ None, # 258
1793
+ None, # 259
1794
+ None, # 260
1795
+ None, # 261
1796
+ None, # 262
1797
+ None, # 263
1798
+ None, # 264
1799
+ None, # 265
1800
+ None, # 266
1801
+ None, # 267
1802
+ None, # 268
1803
+ None, # 269
1804
+ None, # 270
1805
+ None, # 271
1806
+ None, # 272
1807
+ None, # 273
1808
+ None, # 274
1809
+ None, # 275
1810
+ None, # 276
1811
+ None, # 277
1812
+ None, # 278
1813
+ None, # 279
1814
+ None, # 280
1815
+ None, # 281
1816
+ None, # 282
1817
+ None, # 283
1818
+ None, # 284
1819
+ None, # 285
1820
+ None, # 286
1821
+ None, # 287
1822
+ None, # 288
1823
+ None, # 289
1824
+ None, # 290
1825
+ None, # 291
1826
+ None, # 292
1827
+ None, # 293
1828
+ None, # 294
1829
+ None, # 295
1830
+ None, # 296
1831
+ None, # 297
1832
+ None, # 298
1833
+ None, # 299
1834
+ (300, TType.STRUCT, 'key', [TileSeriesKey, None], None, ), # 300
1835
+ )
1836
+ all_structs.append(TileDrift)
1837
+ TileDrift.thrift_spec = (
1838
+ None, # 0
1839
+ (1, TType.DOUBLE, 'percentileDrift', None, None, ), # 1
1840
+ (2, TType.DOUBLE, 'histogramDrift', None, None, ), # 2
1841
+ (3, TType.DOUBLE, 'countChangePercent', None, None, ), # 3
1842
+ (4, TType.DOUBLE, 'nullRatioChangePercent', None, None, ), # 4
1843
+ (5, TType.DOUBLE, 'innerCountChangePercent', None, None, ), # 5
1844
+ (6, TType.DOUBLE, 'innerNullCountChangePercent', None, None, ), # 6
1845
+ (7, TType.DOUBLE, 'lengthPercentilesDrift', None, None, ), # 7
1846
+ (8, TType.DOUBLE, 'stringLengthPercentilesDrift', None, None, ), # 8
1847
+ )
1848
+ all_structs.append(TileDriftSeries)
1849
+ TileDriftSeries.thrift_spec = (
1850
+ None, # 0
1851
+ (1, TType.LIST, 'percentileDriftSeries', (TType.DOUBLE, None, False), None, ), # 1
1852
+ (2, TType.LIST, 'histogramDriftSeries', (TType.DOUBLE, None, False), None, ), # 2
1853
+ (3, TType.LIST, 'countChangePercentSeries', (TType.DOUBLE, None, False), None, ), # 3
1854
+ (4, TType.LIST, 'nullRatioChangePercentSeries', (TType.DOUBLE, None, False), None, ), # 4
1855
+ (5, TType.LIST, 'innerCountChangePercentSeries', (TType.DOUBLE, None, False), None, ), # 5
1856
+ (6, TType.LIST, 'innerNullCountChangePercentSeries', (TType.DOUBLE, None, False), None, ), # 6
1857
+ (7, TType.LIST, 'lengthPercentilesDriftSeries', (TType.DOUBLE, None, False), None, ), # 7
1858
+ (8, TType.LIST, 'stringLengthPercentilesDriftSeries', (TType.DOUBLE, None, False), None, ), # 8
1859
+ None, # 9
1860
+ None, # 10
1861
+ None, # 11
1862
+ None, # 12
1863
+ None, # 13
1864
+ None, # 14
1865
+ None, # 15
1866
+ None, # 16
1867
+ None, # 17
1868
+ None, # 18
1869
+ None, # 19
1870
+ None, # 20
1871
+ None, # 21
1872
+ None, # 22
1873
+ None, # 23
1874
+ None, # 24
1875
+ None, # 25
1876
+ None, # 26
1877
+ None, # 27
1878
+ None, # 28
1879
+ None, # 29
1880
+ None, # 30
1881
+ None, # 31
1882
+ None, # 32
1883
+ None, # 33
1884
+ None, # 34
1885
+ None, # 35
1886
+ None, # 36
1887
+ None, # 37
1888
+ None, # 38
1889
+ None, # 39
1890
+ None, # 40
1891
+ None, # 41
1892
+ None, # 42
1893
+ None, # 43
1894
+ None, # 44
1895
+ None, # 45
1896
+ None, # 46
1897
+ None, # 47
1898
+ None, # 48
1899
+ None, # 49
1900
+ None, # 50
1901
+ None, # 51
1902
+ None, # 52
1903
+ None, # 53
1904
+ None, # 54
1905
+ None, # 55
1906
+ None, # 56
1907
+ None, # 57
1908
+ None, # 58
1909
+ None, # 59
1910
+ None, # 60
1911
+ None, # 61
1912
+ None, # 62
1913
+ None, # 63
1914
+ None, # 64
1915
+ None, # 65
1916
+ None, # 66
1917
+ None, # 67
1918
+ None, # 68
1919
+ None, # 69
1920
+ None, # 70
1921
+ None, # 71
1922
+ None, # 72
1923
+ None, # 73
1924
+ None, # 74
1925
+ None, # 75
1926
+ None, # 76
1927
+ None, # 77
1928
+ None, # 78
1929
+ None, # 79
1930
+ None, # 80
1931
+ None, # 81
1932
+ None, # 82
1933
+ None, # 83
1934
+ None, # 84
1935
+ None, # 85
1936
+ None, # 86
1937
+ None, # 87
1938
+ None, # 88
1939
+ None, # 89
1940
+ None, # 90
1941
+ None, # 91
1942
+ None, # 92
1943
+ None, # 93
1944
+ None, # 94
1945
+ None, # 95
1946
+ None, # 96
1947
+ None, # 97
1948
+ None, # 98
1949
+ None, # 99
1950
+ None, # 100
1951
+ None, # 101
1952
+ None, # 102
1953
+ None, # 103
1954
+ None, # 104
1955
+ None, # 105
1956
+ None, # 106
1957
+ None, # 107
1958
+ None, # 108
1959
+ None, # 109
1960
+ None, # 110
1961
+ None, # 111
1962
+ None, # 112
1963
+ None, # 113
1964
+ None, # 114
1965
+ None, # 115
1966
+ None, # 116
1967
+ None, # 117
1968
+ None, # 118
1969
+ None, # 119
1970
+ None, # 120
1971
+ None, # 121
1972
+ None, # 122
1973
+ None, # 123
1974
+ None, # 124
1975
+ None, # 125
1976
+ None, # 126
1977
+ None, # 127
1978
+ None, # 128
1979
+ None, # 129
1980
+ None, # 130
1981
+ None, # 131
1982
+ None, # 132
1983
+ None, # 133
1984
+ None, # 134
1985
+ None, # 135
1986
+ None, # 136
1987
+ None, # 137
1988
+ None, # 138
1989
+ None, # 139
1990
+ None, # 140
1991
+ None, # 141
1992
+ None, # 142
1993
+ None, # 143
1994
+ None, # 144
1995
+ None, # 145
1996
+ None, # 146
1997
+ None, # 147
1998
+ None, # 148
1999
+ None, # 149
2000
+ None, # 150
2001
+ None, # 151
2002
+ None, # 152
2003
+ None, # 153
2004
+ None, # 154
2005
+ None, # 155
2006
+ None, # 156
2007
+ None, # 157
2008
+ None, # 158
2009
+ None, # 159
2010
+ None, # 160
2011
+ None, # 161
2012
+ None, # 162
2013
+ None, # 163
2014
+ None, # 164
2015
+ None, # 165
2016
+ None, # 166
2017
+ None, # 167
2018
+ None, # 168
2019
+ None, # 169
2020
+ None, # 170
2021
+ None, # 171
2022
+ None, # 172
2023
+ None, # 173
2024
+ None, # 174
2025
+ None, # 175
2026
+ None, # 176
2027
+ None, # 177
2028
+ None, # 178
2029
+ None, # 179
2030
+ None, # 180
2031
+ None, # 181
2032
+ None, # 182
2033
+ None, # 183
2034
+ None, # 184
2035
+ None, # 185
2036
+ None, # 186
2037
+ None, # 187
2038
+ None, # 188
2039
+ None, # 189
2040
+ None, # 190
2041
+ None, # 191
2042
+ None, # 192
2043
+ None, # 193
2044
+ None, # 194
2045
+ None, # 195
2046
+ None, # 196
2047
+ None, # 197
2048
+ None, # 198
2049
+ None, # 199
2050
+ (200, TType.LIST, 'timestamps', (TType.I64, None, False), None, ), # 200
2051
+ None, # 201
2052
+ None, # 202
2053
+ None, # 203
2054
+ None, # 204
2055
+ None, # 205
2056
+ None, # 206
2057
+ None, # 207
2058
+ None, # 208
2059
+ None, # 209
2060
+ None, # 210
2061
+ None, # 211
2062
+ None, # 212
2063
+ None, # 213
2064
+ None, # 214
2065
+ None, # 215
2066
+ None, # 216
2067
+ None, # 217
2068
+ None, # 218
2069
+ None, # 219
2070
+ None, # 220
2071
+ None, # 221
2072
+ None, # 222
2073
+ None, # 223
2074
+ None, # 224
2075
+ None, # 225
2076
+ None, # 226
2077
+ None, # 227
2078
+ None, # 228
2079
+ None, # 229
2080
+ None, # 230
2081
+ None, # 231
2082
+ None, # 232
2083
+ None, # 233
2084
+ None, # 234
2085
+ None, # 235
2086
+ None, # 236
2087
+ None, # 237
2088
+ None, # 238
2089
+ None, # 239
2090
+ None, # 240
2091
+ None, # 241
2092
+ None, # 242
2093
+ None, # 243
2094
+ None, # 244
2095
+ None, # 245
2096
+ None, # 246
2097
+ None, # 247
2098
+ None, # 248
2099
+ None, # 249
2100
+ None, # 250
2101
+ None, # 251
2102
+ None, # 252
2103
+ None, # 253
2104
+ None, # 254
2105
+ None, # 255
2106
+ None, # 256
2107
+ None, # 257
2108
+ None, # 258
2109
+ None, # 259
2110
+ None, # 260
2111
+ None, # 261
2112
+ None, # 262
2113
+ None, # 263
2114
+ None, # 264
2115
+ None, # 265
2116
+ None, # 266
2117
+ None, # 267
2118
+ None, # 268
2119
+ None, # 269
2120
+ None, # 270
2121
+ None, # 271
2122
+ None, # 272
2123
+ None, # 273
2124
+ None, # 274
2125
+ None, # 275
2126
+ None, # 276
2127
+ None, # 277
2128
+ None, # 278
2129
+ None, # 279
2130
+ None, # 280
2131
+ None, # 281
2132
+ None, # 282
2133
+ None, # 283
2134
+ None, # 284
2135
+ None, # 285
2136
+ None, # 286
2137
+ None, # 287
2138
+ None, # 288
2139
+ None, # 289
2140
+ None, # 290
2141
+ None, # 291
2142
+ None, # 292
2143
+ None, # 293
2144
+ None, # 294
2145
+ None, # 295
2146
+ None, # 296
2147
+ None, # 297
2148
+ None, # 298
2149
+ None, # 299
2150
+ (300, TType.STRUCT, 'key', [TileSeriesKey, None], None, ), # 300
2151
+ )
2152
+ all_structs.append(DriftSpec)
2153
+ DriftSpec.thrift_spec = (
2154
+ None, # 0
2155
+ (1, TType.LIST, 'slices', (TType.STRING, 'UTF8', False), None, ), # 1
2156
+ (2, TType.MAP, 'derivations', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2
2157
+ (3, TType.MAP, 'columnCardinalityHints', (TType.STRING, 'UTF8', TType.I32, None, False), None, ), # 3
2158
+ (4, TType.STRUCT, 'tileSize', [ai.chronon.api.common.ttypes.Window, None], None, ), # 4
2159
+ (5, TType.LIST, 'lookbackWindows', (TType.STRUCT, [ai.chronon.api.common.ttypes.Window, None], False), None, ), # 5
2160
+ (6, TType.I32, 'driftMetric', None, 0, ), # 6
2161
+ )
2162
+ all_structs.append(JoinDriftRequest)
2163
+ JoinDriftRequest.thrift_spec = (
2164
+ None, # 0
2165
+ (1, TType.STRING, 'name', 'UTF8', None, ), # 1
2166
+ (2, TType.I64, 'startTs', None, None, ), # 2
2167
+ (3, TType.I64, 'endTs', None, None, ), # 3
2168
+ None, # 4
2169
+ None, # 5
2170
+ (6, TType.STRING, 'offset', 'UTF8', None, ), # 6
2171
+ (7, TType.I32, 'algorithm', None, None, ), # 7
2172
+ (8, TType.STRING, 'columnName', 'UTF8', None, ), # 8
2173
+ )
2174
+ all_structs.append(JoinDriftResponse)
2175
+ JoinDriftResponse.thrift_spec = (
2176
+ None, # 0
2177
+ (1, TType.LIST, 'driftSeries', (TType.STRUCT, [TileDriftSeries, None], False), None, ), # 1
2178
+ )
2179
+ all_structs.append(JoinSummaryRequest)
2180
+ JoinSummaryRequest.thrift_spec = (
2181
+ None, # 0
2182
+ (1, TType.STRING, 'name', 'UTF8', None, ), # 1
2183
+ (2, TType.I64, 'startTs', None, None, ), # 2
2184
+ (3, TType.I64, 'endTs', None, None, ), # 3
2185
+ None, # 4
2186
+ (5, TType.STRING, 'percentiles', 'UTF8', None, ), # 5
2187
+ None, # 6
2188
+ None, # 7
2189
+ (8, TType.STRING, 'columnName', 'UTF8', None, ), # 8
2190
+ )
2191
+ fix_spec(all_structs)
2192
+ del all_structs