deltacat 1.1.0__py3-none-any.whl → 1.1.2__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.
deltacat/utils/metrics.py CHANGED
@@ -1,6 +1,10 @@
1
1
  from dataclasses import dataclass
2
+ from typing import Optional
2
3
 
3
4
  import logging
5
+ import ray
6
+ import time
7
+ import functools
4
8
 
5
9
  from aws_embedded_metrics import metric_scope
6
10
  from aws_embedded_metrics.config import get_config
@@ -18,11 +22,13 @@ logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
18
22
  DEFAULT_DELTACAT_METRICS_NAMESPACE = "ray-deltacat-metrics"
19
23
  DEFAULT_DELTACAT_LOG_GROUP_NAME = "ray-deltacat-metrics-EMF-logs"
20
24
  DEFAULT_DELTACAT_LOG_STREAM_CALLABLE = get_node_ip_address
25
+ METRICS_CONFIG_ACTOR_NAME = "metrics-config-actor"
21
26
 
22
27
 
23
28
  class MetricsTarget(str, Enum):
24
29
  CLOUDWATCH = "cloudwatch"
25
30
  CLOUDWATCH_EMF = "cloudwatch_emf"
31
+ NOOP = "noop"
26
32
 
27
33
 
28
34
  @dataclass
@@ -42,27 +48,16 @@ class MetricsConfig:
42
48
  self.metrics_kwargs = metrics_kwargs
43
49
 
44
50
 
45
- class MetricsType(str, Enum):
46
- TIMER = "timer"
47
-
48
-
49
- def _build_metrics_name(metrics_type: Enum, metrics_name: str) -> str:
50
- metrics_name_with_type = f"{metrics_name}_{metrics_type}"
51
- return metrics_name_with_type
52
-
53
-
54
51
  def _build_cloudwatch_metrics(
55
52
  metrics_name: str,
56
- metrics_type: Enum,
57
53
  value: str,
58
54
  metrics_dimensions: List[Dict[str, str]],
59
55
  timestamp: datetime,
60
56
  **kwargs,
61
57
  ) -> Dict[str, Any]:
62
- metrics_name_with_type = _build_metrics_name(metrics_type, metrics_name)
63
58
  return [
64
59
  {
65
- "MetricName": f"{metrics_name_with_type}",
60
+ "MetricName": metrics_name,
66
61
  "Dimensions": metrics_dimensions,
67
62
  "Timestamp": timestamp,
68
63
  "Value": value,
@@ -73,7 +68,6 @@ def _build_cloudwatch_metrics(
73
68
 
74
69
  def _emit_metrics(
75
70
  metrics_name: str,
76
- metrics_type: Enum,
77
71
  metrics_config: MetricsConfig,
78
72
  value: str,
79
73
  **kwargs,
@@ -85,7 +79,6 @@ def _emit_metrics(
85
79
  if metrics_target in METRICS_TARGET_TO_EMITTER_DICT:
86
80
  METRICS_TARGET_TO_EMITTER_DICT.get(metrics_target)(
87
81
  metrics_name=metrics_name,
88
- metrics_type=metrics_type,
89
82
  metrics_config=metrics_config,
90
83
  value=value,
91
84
  **kwargs,
@@ -94,9 +87,15 @@ def _emit_metrics(
94
87
  logger.warning(f"{metrics_target} is not a supported metrics target type.")
95
88
 
96
89
 
90
+ def _emit_noop_metrics(
91
+ *args,
92
+ **kwargs,
93
+ ) -> None:
94
+ pass
95
+
96
+
97
97
  def _emit_cloudwatch_metrics(
98
98
  metrics_name: str,
99
- metrics_type: Enum,
100
99
  metrics_config: MetricsConfig,
101
100
  value: str,
102
101
  **kwargs,
@@ -111,7 +110,6 @@ def _emit_cloudwatch_metrics(
111
110
 
112
111
  metrics_data = _build_cloudwatch_metrics(
113
112
  metrics_name,
114
- metrics_type,
115
113
  value,
116
114
  metrics_dimensions,
117
115
  current_time,
@@ -128,14 +126,13 @@ def _emit_cloudwatch_metrics(
128
126
  except Exception as e:
129
127
  logger.warning(
130
128
  f"Failed to publish Cloudwatch metrics with name: {metrics_name}, "
131
- f"type: {metrics_type}, with exception: {e}, response: {response}"
129
+ f"with exception: {e}, response: {response}"
132
130
  )
133
131
 
134
132
 
135
133
  @metric_scope
136
134
  def _emit_cloudwatch_emf_metrics(
137
135
  metrics_name: str,
138
- metrics_type: Enum,
139
136
  metrics_config: MetricsConfig,
140
137
  value: str,
141
138
  metrics: MetricsLogger,
@@ -155,7 +152,6 @@ def _emit_cloudwatch_emf_metrics(
155
152
  dimensions = dict(
156
153
  [(dim["Name"], dim["Value"]) for dim in metrics_config.metrics_dimensions]
157
154
  )
158
- metrics_name_with_type = _build_metrics_name(metrics_type, metrics_name)
159
155
  try:
160
156
  metrics.set_timestamp(current_time)
161
157
  metrics.set_dimensions(dimensions)
@@ -177,25 +173,164 @@ def _emit_cloudwatch_emf_metrics(
177
173
  else DEFAULT_DELTACAT_LOG_STREAM_CALLABLE()
178
174
  )
179
175
 
180
- metrics.put_metric(metrics_name_with_type, value)
176
+ metrics.put_metric(metrics_name, value)
181
177
  except Exception as e:
182
178
  logger.warning(
183
- f"Failed to publish Cloudwatch EMF metrics with name: {metrics_name_with_type}, "
184
- f"type: {metrics_type}, with exception: {e}"
179
+ f"Failed to publish Cloudwatch EMF metrics with name: {metrics_name}", e
185
180
  )
186
181
 
187
182
 
188
183
  METRICS_TARGET_TO_EMITTER_DICT: Dict[str, Callable] = {
189
184
  MetricsTarget.CLOUDWATCH: _emit_cloudwatch_metrics,
190
185
  MetricsTarget.CLOUDWATCH_EMF: _emit_cloudwatch_emf_metrics,
186
+ MetricsTarget.NOOP: _emit_noop_metrics,
191
187
  }
192
188
 
193
189
 
190
+ @ray.remote
191
+ class MetricsActor:
192
+ metrics_config: MetricsConfig = None
193
+
194
+ def set_metrics_config(self, config: MetricsConfig) -> None:
195
+ self.metrics_config = config
196
+
197
+ def get_metrics_config(self) -> MetricsConfig:
198
+ return self.metrics_config
199
+
200
+
201
+ def _emit_ignore_exceptions(name: Optional[str], value: Any):
202
+ try:
203
+ config_cache: MetricsActor = MetricsActor.options(
204
+ name=METRICS_CONFIG_ACTOR_NAME, get_if_exists=True
205
+ ).remote()
206
+ config = ray.get(config_cache.get_metrics_config.remote())
207
+ if config:
208
+ _emit_metrics(metrics_name=name, value=value, metrics_config=config)
209
+ except BaseException as ex:
210
+ logger.warning("Emitting metrics failed", ex)
211
+
212
+
194
213
  def emit_timer_metrics(metrics_name, value, metrics_config, **kwargs):
195
214
  _emit_metrics(
196
215
  metrics_name=metrics_name,
197
- metrics_type=MetricsType.TIMER,
198
216
  metrics_config=metrics_config,
199
217
  value=value,
200
218
  **kwargs,
201
219
  )
220
+
221
+
222
+ def latency_metric(original_func=None, name: Optional[str] = None):
223
+ """
224
+ A decorator that emits latency metrics of a function
225
+ based on configured metrics config.
226
+ """
227
+
228
+ def _decorate(func):
229
+ metrics_name = name or f"{func.__name__}_time"
230
+
231
+ @functools.wraps(func)
232
+ def wrapper(*args, **kwargs):
233
+ start = time.monotonic()
234
+ try:
235
+ return func(*args, **kwargs)
236
+ finally:
237
+ end = time.monotonic()
238
+ _emit_ignore_exceptions(name=metrics_name, value=end - start)
239
+
240
+ return wrapper
241
+
242
+ if original_func:
243
+ return _decorate(original_func)
244
+
245
+ return _decorate
246
+
247
+
248
+ def success_metric(original_func=None, name: Optional[str] = None):
249
+ """
250
+ A decorator that emits success metrics of a function
251
+ based on configured metrics config.
252
+ """
253
+
254
+ def _decorate(func):
255
+ metrics_name = name or f"{func.__name__}_success_count"
256
+
257
+ @functools.wraps(func)
258
+ def wrapper(*args, **kwargs):
259
+ result = func(*args, **kwargs)
260
+ _emit_ignore_exceptions(name=metrics_name, value=1)
261
+ return result
262
+
263
+ return wrapper
264
+
265
+ if original_func:
266
+ return _decorate(original_func)
267
+
268
+ return _decorate
269
+
270
+
271
+ def failure_metric(original_func=None, name: Optional[str] = None):
272
+ """
273
+ A decorator that emits failure metrics of a function
274
+ based on configured metrics config.
275
+ """
276
+
277
+ def _decorate(func):
278
+ metrics_name = name or f"{func.__name__}_failure_count"
279
+
280
+ @functools.wraps(func)
281
+ def wrapper(*args, **kwargs):
282
+ try:
283
+ return func(*args, **kwargs)
284
+ except BaseException as ex:
285
+ exception_name = type(ex).__name__
286
+ # We emit two metrics, one for exception class and
287
+ # another for just the specified metric name.
288
+ _emit_ignore_exceptions(
289
+ name=f"{metrics_name}.{exception_name}", value=1
290
+ )
291
+ _emit_ignore_exceptions(name=metrics_name, value=1)
292
+ raise ex
293
+
294
+ return wrapper
295
+
296
+ if original_func:
297
+ return _decorate(original_func)
298
+
299
+ return _decorate
300
+
301
+
302
+ def metrics(original_func=None, prefix: Optional[str] = None):
303
+ """
304
+ A decorator that emits all metrics for a function.
305
+ """
306
+
307
+ def _decorate(func):
308
+ name = prefix or func.__name__
309
+ failure_metrics_name = f"{name}_failure_count"
310
+ success_metrics_name = f"{name}_success_count"
311
+ latency_metrics_name = f"{name}_time"
312
+
313
+ @functools.wraps(func)
314
+ def wrapper(*args, **kwargs):
315
+ start = time.monotonic()
316
+ try:
317
+ result = func(*args, **kwargs)
318
+ _emit_ignore_exceptions(name=success_metrics_name, value=1)
319
+ return result
320
+ except BaseException as ex:
321
+ exception_name = type(ex).__name__
322
+ _emit_ignore_exceptions(
323
+ name=f"{failure_metrics_name}.{exception_name}", value=1
324
+ )
325
+ _emit_ignore_exceptions(name=failure_metrics_name, value=1)
326
+ raise ex
327
+ finally:
328
+ end = time.monotonic()
329
+ _emit_ignore_exceptions(name=latency_metrics_name, value=end - start)
330
+
331
+ return wrapper
332
+
333
+ if original_func:
334
+ return _decorate(original_func)
335
+
336
+ return _decorate
@@ -36,13 +36,15 @@ class ClusterUtilization:
36
36
  used_resources[key] = cluster_resources[key] - available_resources[key]
37
37
 
38
38
  self.total_memory_bytes = cluster_resources.get("memory")
39
- self.used_memory_bytes = used_resources.get("memory")
39
+ self.used_memory_bytes = used_resources.get("memory", 0.0)
40
40
  self.total_cpu = cluster_resources.get("CPU")
41
- self.used_cpu = used_resources.get("CPU")
41
+ self.used_cpu = used_resources.get("CPU", 0)
42
42
  self.total_object_store_memory_bytes = cluster_resources.get(
43
43
  "object_store_memory"
44
44
  )
45
- self.used_object_store_memory_bytes = used_resources.get("object_store_memory")
45
+ self.used_object_store_memory_bytes = used_resources.get(
46
+ "object_store_memory", 0.0
47
+ )
46
48
  self.used_memory_percent = (
47
49
  self.used_memory_bytes / self.total_memory_bytes
48
50
  ) * 100
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: A scalable, fast, ACID-compliant Data Catalog powered by Ray.
5
5
  Home-page: https://github.com/ray-project/deltacat
6
6
  Author: Ray Team
@@ -1,11 +1,11 @@
1
- deltacat/__init__.py,sha256=jgsxhhooY-sexT3kAhQirASpDPtehwb4RDqDt_3rcaQ,1777
1
+ deltacat/__init__.py,sha256=1qjk3DyuuYXNfuzWlEqKVNNPDDpBkV8gwsSgJiMCq1s,1777
2
2
  deltacat/constants.py,sha256=_6oRI-3yp5c8J1qKGQZrt89I9-ttT_gSSvVsJ0h8Duc,1939
3
3
  deltacat/exceptions.py,sha256=xqZf8CwysNYP2d39pf27OnXGStPREgBgIM-e2Tts-TI,199
4
- deltacat/logs.py,sha256=9XWuTBoWhhAF9rAL6t9veXmnAlJHsaqk0lTxteVPqyQ,5674
4
+ deltacat/logs.py,sha256=YT26oj-oKZReyBEhiBQU5jc246aSu_d4B2bZcUVBHmE,6550
5
5
  deltacat/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- deltacat/aws/clients.py,sha256=WKgbgaq8CacH81nvvcqrjdshGtYvQicvBeOLg1m7wCA,6501
7
- deltacat/aws/constants.py,sha256=luXWMO_8eatq8f9NlFjNM7q362j77JwzTM2BEVS_8-8,353
8
- deltacat/aws/s3u.py,sha256=aK1_pyfipd9Jq1ZiaOC-gszyIIfc1TSbch6YmuZmjt0,23878
6
+ deltacat/aws/clients.py,sha256=VgddlV3AEjlBGIFmhhHxokYzwJ-lXnmHAeprVyADduI,6948
7
+ deltacat/aws/constants.py,sha256=Ti8D92AFY3lY2eoOwYBSI1eqS8gMykX5DHf4w3xPybE,492
8
+ deltacat/aws/s3u.py,sha256=7-ZNz8fui_S5nprxtMO8PGa-G1YOXfidqcguzTTOvL8,24118
9
9
  deltacat/aws/redshift/__init__.py,sha256=7SvjG-dqox8zZUhFicTsUvpG5vXYDl_QQ3ohlHOgTKc,342
10
10
  deltacat/aws/redshift/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  deltacat/aws/redshift/model/manifest.py,sha256=ThgpdwzaWz493Zz9e8HSWwuxEheA1nDuypM3pe4vozk,12987
@@ -24,8 +24,8 @@ deltacat/compute/compactor/__init__.py,sha256=ivpOPve1yKi3Vz3tVgp-eeFMNEeUSf-dlR
24
24
  deltacat/compute/compactor/compaction_session.py,sha256=bJpNBSTW7Raoa1gpojDpmVVqQGpvX0AwrusHQhUANcI,27612
25
25
  deltacat/compute/compactor/repartition_session.py,sha256=f5BTTGNv365qSuTioL7QUuVm-px_l8-zz-OC_p7gXt4,7240
26
26
  deltacat/compute/compactor/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- deltacat/compute/compactor/model/compact_partition_params.py,sha256=DdM6YsA5CSAMAwqQ5yscxR-NWadnItpgX18JikdJoQ4,14344
28
- deltacat/compute/compactor/model/compaction_session_audit_info.py,sha256=o8O0v3nOc7m1ZR4W0wQkTdsMyFL24LoMc9kzUo8i5uc,30174
27
+ deltacat/compute/compactor/model/compact_partition_params.py,sha256=I5DHVv4a_Pb3hlfWf5pyUeKcxEtvMu8LLEWFRH9qdfE,15195
28
+ deltacat/compute/compactor/model/compaction_session_audit_info.py,sha256=Aoae5KNmbdYt48utFQR_zrjHTkC9JNd4jPhQmyJji-A,30547
29
29
  deltacat/compute/compactor/model/compactor_version.py,sha256=RwRvManiCxZmzjAWzm1OPDxjB1BEHu1d0fBJyGhXKxA,87
30
30
  deltacat/compute/compactor/model/dedupe_result.py,sha256=1OCV944qJdLQ_-8scisVKl45ej1eRv9OV539QYZtQ-U,292
31
31
  deltacat/compute/compactor/model/delta_annotated.py,sha256=NERB9rOtYg-xzBwvqGJ7_hBOzBC7g6X5M9-Cq5pbdH8,12258
@@ -50,31 +50,31 @@ deltacat/compute/compactor/utils/round_completion_file.py,sha256=DmZfHeAXlQn0DDd
50
50
  deltacat/compute/compactor/utils/sort_key.py,sha256=oK6otg-CSsma6zlGPaKg-KNEvcZRG2NqBlCw1X3_FBc,2397
51
51
  deltacat/compute/compactor/utils/system_columns.py,sha256=CNIgAGos0xAGEpdaQIH7KfbSRrGZgjRbItXMararqXQ,9399
52
52
  deltacat/compute/compactor_v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- deltacat/compute/compactor_v2/compaction_session.py,sha256=8z7fQCHkL1Ei70_HdBh_Ckkstb7B_FiG_rfglJRouLQ,23668
54
- deltacat/compute/compactor_v2/constants.py,sha256=yZgzFD59wiXbXiTVgYPWRodZGpngiSBNFB2jmoZ4fps,1471
53
+ deltacat/compute/compactor_v2/compaction_session.py,sha256=lXLoOiVjvsG-VEFD9afeKMjcExmOMg9I4-JTrTCVSo4,25576
54
+ deltacat/compute/compactor_v2/constants.py,sha256=R5qvsaX-rDrSmSqUl0yLp6A3hVrAD4whYkV2NBkDR9Y,2199
55
55
  deltacat/compute/compactor_v2/deletes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  deltacat/compute/compactor_v2/deletes/delete_file_envelope.py,sha256=AeuH9JRMwp6mvQf6P2cqL92hUEtResQq6qUTS0kIKac,3111
57
57
  deltacat/compute/compactor_v2/deletes/delete_strategy.py,sha256=SMEJOxR-5r92kvKNqtu2w6HmwtmhljcZX1wcNEuS-4w,2833
58
58
  deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py,sha256=U4zxVECXSPs1Nj3iPf_tiRRCs12CF8CHmRt4s_GDzq8,6503
59
59
  deltacat/compute/compactor_v2/deletes/model.py,sha256=kW7kfRe4jVNMnsWQrl0nyKdDpvB9mbJND-MVzAajbAI,558
60
- deltacat/compute/compactor_v2/deletes/utils.py,sha256=g63imGECPpPK9eHdde-6qyCg8_RjXCLF2UdfckPk0h4,6468
60
+ deltacat/compute/compactor_v2/deletes/utils.py,sha256=9CchSw1_caWGWtRHa4ycy58t5T422EN6UB9XYa1zpbk,6640
61
61
  deltacat/compute/compactor_v2/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- deltacat/compute/compactor_v2/model/hash_bucket_input.py,sha256=HS1BLgNCjQoqe7EuM9baQWE6U4BFqU2PVEWFEF725VE,2815
62
+ deltacat/compute/compactor_v2/model/hash_bucket_input.py,sha256=iJy8kLi1dIpFIyfoAjkaAtZvg8Np1z7BsUNGAcWfFm4,3042
63
63
  deltacat/compute/compactor_v2/model/hash_bucket_result.py,sha256=EsY9BPPywhmxlcLKn3kGWzAX4s4BTR2vYyPUB-wAEOc,309
64
64
  deltacat/compute/compactor_v2/model/merge_file_group.py,sha256=1o86t9lc3K6ZvtViVO1SVljCj6f0B3MfB3hqtGm2S0s,7410
65
- deltacat/compute/compactor_v2/model/merge_input.py,sha256=EBfV2SNQjsEnbwKHFnumqGSfALzmz8vdMf41RxZNhZ0,5189
65
+ deltacat/compute/compactor_v2/model/merge_input.py,sha256=ITRBR8gMbJpeRkZhRaVzGEEk3F2WqS2LwEkjd5zcaMQ,5416
66
66
  deltacat/compute/compactor_v2/model/merge_result.py,sha256=_IZTCStpb4UKiRCJYA3g6EhAqjrw0t9vmoDAN8kIK-Y,436
67
67
  deltacat/compute/compactor_v2/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- deltacat/compute/compactor_v2/steps/hash_bucket.py,sha256=QUNgYrxEp3ODr8YjCpIvXNKDQAxMaGhINgB9_jG1jNs,6282
69
- deltacat/compute/compactor_v2/steps/merge.py,sha256=kYeLofIpYXF1FgNyXPIcRRr7SQYYK_DbkT8LPJJZrsw,20731
68
+ deltacat/compute/compactor_v2/steps/hash_bucket.py,sha256=be61umFucTfzeZ03xii1P_NFqXsGmhl55hm_ULuCFPc,6617
69
+ deltacat/compute/compactor_v2/steps/merge.py,sha256=xjLpv93o9bMjihLXXO1j4XCXhyARc5GQI5eWxQRy0XI,21657
70
70
  deltacat/compute/compactor_v2/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
71
  deltacat/compute/compactor_v2/utils/content_type_params.py,sha256=rNKZisxGrLQOkwX8eHUQiFoTR1V-E66pMqWigtrs618,2156
72
72
  deltacat/compute/compactor_v2/utils/dedupe.py,sha256=62tFCY2iRP7I3-45GCIYs6_SJsQl8C5lBEr8gbNfbsw,1932
73
73
  deltacat/compute/compactor_v2/utils/delta.py,sha256=8hjkDeIIkSX-gAQ2utQSp2sZcO2tWZHMTxpFusZwBHw,3635
74
- deltacat/compute/compactor_v2/utils/io.py,sha256=jgIfwrfH2mTFUx1M0TgwZGGfrS4IXjP1PmqwaQmNAJM,5092
75
- deltacat/compute/compactor_v2/utils/merge.py,sha256=hK4Y7acrtgfvWWTz-fAGznEg6qn6dBYu8blQUQVHhs0,5244
74
+ deltacat/compute/compactor_v2/utils/io.py,sha256=autXlE3uHICdCCuJoS7mfdeJbRRiz2_xlz-3izlccB4,5264
75
+ deltacat/compute/compactor_v2/utils/merge.py,sha256=7p8lEmepxNekFFP5uVxgVLvAQRQnscOmUlSj8kUvW2c,5408
76
76
  deltacat/compute/compactor_v2/utils/primary_key_index.py,sha256=MAscmL35WfwN7Is72aFlD_cGhxtZgjRwwR5kS9Yn2uU,11393
77
- deltacat/compute/compactor_v2/utils/task_options.py,sha256=Ndhff9F_zff6zX3mw4AztHkvSBgR4O8SgMUgwq3rvyM,10601
77
+ deltacat/compute/compactor_v2/utils/task_options.py,sha256=MCY0Sz5NCgNMaY92W8p87FvvDB91mnPQ4AhL8ix3BiA,13780
78
78
  deltacat/compute/merge_on_read/__init__.py,sha256=ckbgngmqPjYBYz_NySsR1vNTOb_hNpeL1sYkZKvBI9M,214
79
79
  deltacat/compute/merge_on_read/daft.py,sha256=1oC38u5ig_aTrq7EzyWBo8Ui54rb6yERYMk-vEFbpxM,1400
80
80
  deltacat/compute/merge_on_read/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -109,7 +109,7 @@ deltacat/compute/stats/utils/manifest_stats_file.py,sha256=PtqW5Zc5e09HcfiAgvoZH
109
109
  deltacat/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  deltacat/io/dataset.py,sha256=8w9sPVDpGnjjGVDWB39YSKWxq4zRv9VEfDtj7PYwjqM,3755
111
111
  deltacat/io/file_object_store.py,sha256=HCFeXu9cWXPXVk54MHel_nw3-wIuzhMt2RI6jKzjRYM,1346
112
- deltacat/io/memcached_object_store.py,sha256=dqAIh2hQrEHDv-UOO4n4nRpb9KapVWiev09ewSS2O90,8555
112
+ deltacat/io/memcached_object_store.py,sha256=4Sc7Tue3giKBrRm6zM2G0ZrvDCtubnIp1UvsqA2i9M0,9185
113
113
  deltacat/io/object_store.py,sha256=X6221ZuVx8NOyKUesz8LvjvQ_4vZ6p2RWV6VISL17AY,1576
114
114
  deltacat/io/ray_plasma_object_store.py,sha256=TyoUPWybE_cSISZ2SQa3YfD93QWMp0r82-6WnoVSmzk,905
115
115
  deltacat/io/read_api.py,sha256=BhkjL3xjY-fsa62AA9Yv20_88uTskn4_Bv2W6VmMXVA,7023
@@ -141,7 +141,7 @@ deltacat/tests/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
141
141
  deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py,sha256=SaYQI30d1sxOBVs-Qj9VsMtigp4tWaRFFPmsPdahILc,72082
142
142
  deltacat/tests/compute/compact_partition_test_cases.py,sha256=b6wVg1UP0pahtrS3dojk-_1tSXHjCWd95XBo4J6KEAU,20092
143
143
  deltacat/tests/compute/test_compact_partition_incremental.py,sha256=G_xUERQjtBzAVfipzucdR8ATJviaVwTsj-5rRWVgYJY,10271
144
- deltacat/tests/compute/test_compact_partition_params.py,sha256=MIzIcBscwFA1W-cfTTxVx0zcgbrs8D4bI9Hy4TF5eRo,8322
144
+ deltacat/tests/compute/test_compact_partition_params.py,sha256=Dm5eLyHo8oGMeO3XBbpj1rZqHtPZ1hAB7z2qvzc4Lxk,8497
145
145
  deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=n6Qy-_STWgy3j02QyfZMUChIlHqlTfZjQ-G8yDppvyM,14077
146
146
  deltacat/tests/compute/test_util_common.py,sha256=Skz0ZfHzidArZhIzRDHOYt-5uGBwx6MRfKZpeBnzh9w,6055
147
147
  deltacat/tests/compute/test_util_constant.py,sha256=4o-W3E7r7jhFl1A3OFLLrdKnwcF46zx4lEIDY8ONJ3c,929
@@ -159,7 +159,7 @@ deltacat/tests/compute/compactor_v2/utils/test_task_options.py,sha256=4fc5MJTLm3
159
159
  deltacat/tests/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
160
  deltacat/tests/io/test_cloudpickle_bug_fix.py,sha256=qnYJg_S-nsLai77a4_I3Qs2Jtr_KWQJOxyl96f9PgHA,1376
161
161
  deltacat/tests/io/test_file_object_store.py,sha256=bHEJRleVHwvk-bbvAlNOFnOA_tbR8i0SxtsllMTb8w0,2559
162
- deltacat/tests/io/test_memcached_object_store.py,sha256=gUVYycPkNpq9XxotdJwFZ2HOmNZqwoa1nAC57ZL3TBo,7392
162
+ deltacat/tests/io/test_memcached_object_store.py,sha256=25SB5xTMAG0HKwZwsDLhMreJ0dA6zrCDmHuY955YeLA,8070
163
163
  deltacat/tests/io/test_ray_plasma_object_store.py,sha256=-wJZP6lRtEOogR25wjEiIBGz_lpvWVihwlZ5GqandZU,1911
164
164
  deltacat/tests/io/test_redis_object_store.py,sha256=sZrXrYjkw8u_XrvFilhBbLc8PPnZiuMKa1_Bt9ka5qs,3838
165
165
  deltacat/tests/io/test_s3_object_store.py,sha256=4b7PYEfQJnYGUz6fcLFWVVyRHTlH_yd8CIaCv9l33Gg,1900
@@ -174,6 +174,7 @@ deltacat/tests/test_utils/utils.py,sha256=a32qEwcSSd1lvRi0aJJ4ZLnc1ZyXmoQF_K95za
174
174
  deltacat/tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
175
  deltacat/tests/utils/test_cloudpickle.py,sha256=J0pnBY3-PxlUh6MamZAN1PuquKQPr2iyzjiJ7-Rcl0o,1506
176
176
  deltacat/tests/utils/test_daft.py,sha256=Xal84zR42rXsWQI3lImdDYWOzewomKmhmiUQ59m67V0,6488
177
+ deltacat/tests/utils/test_metrics.py,sha256=kznfueuChhTG3kKnfbVOtxks2uwIWrXlDjY3b2qQaNc,19429
177
178
  deltacat/tests/utils/test_pyarrow.py,sha256=eZAuYp9MUf8lmpIilH57JkURuNsTGZ3IAGC4Gm5hdrM,17307
178
179
  deltacat/tests/utils/test_record_batch_tables.py,sha256=AkG1WyljQmjnl-AxhbFWyo5LnMIKRyLScfgC2B_ES-s,11321
179
180
  deltacat/tests/utils/test_resources.py,sha256=HtpvDrfPZQNtGDXUlsIzc_yd7Vf1cDscZ3YbN0oTvO8,2560
@@ -187,13 +188,13 @@ deltacat/utils/arguments.py,sha256=5y1Xz4HSAD8M8Jt83i6gOEKoYjy_fMQe1V43IhIE4hY,1
187
188
  deltacat/utils/cloudpickle.py,sha256=XE7YDmQe56ksfl3NdYZkzOAhbHSuhNcBZGOehQpgZr0,1187
188
189
  deltacat/utils/common.py,sha256=RG_-enXNpLKaYrqyx1ne2lL10lxN9vK7F631oJP6SE8,1375
189
190
  deltacat/utils/daft.py,sha256=heg6J8NHnTI1UbcjXvsjGBbFKU6f7mvAio-KZuTSuFI,5506
190
- deltacat/utils/metrics.py,sha256=Ob-RXGoNnfTMRXaNbSHoqW8y-n8KfRA9nLuo9AvsReI,6201
191
+ deltacat/utils/metrics.py,sha256=PZeBV4rhlA_7WjucXDe2DyZj5A8pYCQsYoKDwgyqb7E,9937
191
192
  deltacat/utils/numpy.py,sha256=ZiGREobTVT6IZXgPxkSUpLJFN2Hn8KEZcrqybLDXCIA,2027
192
193
  deltacat/utils/pandas.py,sha256=GfwjYb8FUSEeoBdXZI1_NJkdjxPMbCCUhlyRfGbDkn8,9562
193
194
  deltacat/utils/performance.py,sha256=7ZLaMkS1ehPSIhT5uOQVBHvjC70iKHzoFquFo-KL0PI,645
194
195
  deltacat/utils/placement.py,sha256=S80CwD1eEK47lQNr0xTmF9kq092-z6lTTmOOBv8cW_o,11723
195
196
  deltacat/utils/pyarrow.py,sha256=gYcoRhQoBoAFo69WNijMobrLGta4VASg8VarWPiB34Y,28979
196
- deltacat/utils/resources.py,sha256=UhxEnRMP2ts5iFR-h9ORmHe4pmJlLbMWZT80GsLVPEk,8218
197
+ deltacat/utils/resources.py,sha256=Ax1OgLLbZI4oYpp4Ki27OLaST-7I-AJgZwU87FVfY8g,8253
197
198
  deltacat/utils/s3fs.py,sha256=PmUJ5Fm1WmD-_zp_M6yd9VbXvIoJuBeK6ApOdJJApLE,662
198
199
  deltacat/utils/schema.py,sha256=m4Wm4ZQcpttzOUxex4dVneGlHy1_E36HspTcjNYzvVM,1564
199
200
  deltacat/utils/ray_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -202,8 +203,8 @@ deltacat/utils/ray_utils/concurrency.py,sha256=JDVwMiQWrmuSlyCWAoiq9ctoJ0XADEfDD
202
203
  deltacat/utils/ray_utils/dataset.py,sha256=SIljK3UkSqQ6Ntit_iSiYt9yYjN_gGrCTX6_72XdQ3w,3244
203
204
  deltacat/utils/ray_utils/performance.py,sha256=d7JFM7vTXHzkGx9qNQcZzUWajnqINvYRwaM088_FpsE,464
204
205
  deltacat/utils/ray_utils/runtime.py,sha256=5eaBWTDm0IXVoc5Y6aacoVB-f0Mnv-K2ewyTSjHKHwM,5009
205
- deltacat-1.1.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
206
- deltacat-1.1.0.dist-info/METADATA,sha256=rRb66_RxRcgvMfnTnwLGsvubmhW83uhLLIDyNjLQX7E,1780
207
- deltacat-1.1.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
208
- deltacat-1.1.0.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
209
- deltacat-1.1.0.dist-info/RECORD,,
206
+ deltacat-1.1.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
207
+ deltacat-1.1.2.dist-info/METADATA,sha256=r16g6Lc01Nlsb0Dr5DPona2hiOsWLIcscEXkQyfpD3o,1780
208
+ deltacat-1.1.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
209
+ deltacat-1.1.2.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
210
+ deltacat-1.1.2.dist-info/RECORD,,