deltacat 0.2.2__py3-none-any.whl → 0.2.3__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/__init__.py CHANGED
@@ -44,7 +44,7 @@ from deltacat.types.tables import TableWriteMode
44
44
 
45
45
  deltacat.logs.configure_deltacat_logger(logging.getLogger(__name__))
46
46
 
47
- __version__ = "0.2.2"
47
+ __version__ = "0.2.3"
48
48
 
49
49
 
50
50
  __all__ = [
@@ -796,13 +796,6 @@ class CompactionSessionAuditInfo(dict):
796
796
  Saves the stats by calling individual setters and returns the cluster telemetry time.
797
797
  """
798
798
 
799
- last_task_completed_at = max(
800
- result.task_completed_at for result in task_results
801
- )
802
-
803
- self[f"{step_name}ResultWaitTimeInSeconds"] = (
804
- task_results_retrieved_at - last_task_completed_at.item()
805
- )
806
799
  self[f"{step_name}TimeInSeconds"] = task_time_in_seconds
807
800
  self[f"{step_name}InvokeTimeInSeconds"] = invoke_time_in_seconds
808
801
 
@@ -827,15 +820,25 @@ class CompactionSessionAuditInfo(dict):
827
820
  f"{step_name}PostObjectStoreMemoryUsedBytes"
828
821
  ] = cluster_utilization_after_task.used_object_store_memory_bytes
829
822
 
830
- peak_task_memory = max(
831
- result.peak_memory_usage_bytes for result in task_results
832
- )
823
+ telemetry_time = 0
824
+ if task_results:
825
+ last_task_completed_at = max(
826
+ result.task_completed_at for result in task_results
827
+ )
833
828
 
834
- telemetry_time = sum(
835
- result.telemetry_time_in_seconds for result in task_results
836
- )
829
+ self[f"{step_name}ResultWaitTimeInSeconds"] = (
830
+ task_results_retrieved_at - last_task_completed_at.item()
831
+ )
832
+
833
+ peak_task_memory = max(
834
+ result.peak_memory_usage_bytes for result in task_results
835
+ )
836
+
837
+ telemetry_time = sum(
838
+ result.telemetry_time_in_seconds for result in task_results
839
+ )
837
840
 
838
- self[f"{step_name}TaskPeakMemoryUsedBytes"] = peak_task_memory.item()
841
+ self[f"{step_name}TaskPeakMemoryUsedBytes"] = peak_task_memory.item()
839
842
 
840
843
  return cluster_util_after_task_latency + telemetry_time
841
844
 
@@ -317,6 +317,10 @@ def group_hash_bucket_indices(
317
317
  hash_group_to_num_rows[hb_group],
318
318
  )
319
319
  del object_ref
320
+
321
+ _, close_latency = timed_invocation(object_store.close)
322
+ logger.info(f"Active connections to the object store closed in {close_latency}")
323
+
320
324
  return hash_bucket_group_to_obj_id_size_tuple
321
325
 
322
326
 
@@ -36,19 +36,15 @@ class MemcachedObjectStore(IObjectStore):
36
36
  self.SEPARATOR = "_"
37
37
  self.port = port
38
38
  self.storage_node_ips = storage_node_ips
39
- self.hasher = None
39
+ self.hasher = RendezvousHash(nodes=self.storage_node_ips, seed=0)
40
40
  self.connect_timeout = connect_timeout
41
41
  self.timeout = timeout
42
42
  self.noreply = noreply
43
- logger.info(f"The storage node IPs: {self.storage_node_ips}")
43
+ logger.info(
44
+ f"The storage node IPs: {self.storage_node_ips} with noreply: {self.noreply}"
45
+ )
44
46
  super().__init__()
45
47
 
46
- def initialize_hasher(self):
47
- if not self.hasher and self.storage_node_ips:
48
- self.hasher = RendezvousHash()
49
- for n in self.storage_node_ips:
50
- self.hasher.add_node(n)
51
-
52
48
  def put_many(self, objects: List[object], *args, **kwargs) -> List[Any]:
53
49
  input = defaultdict(dict)
54
50
  result = []
@@ -73,10 +69,15 @@ class MemcachedObjectStore(IObjectStore):
73
69
  ref = self._create_ref(uid, create_ref_ip)
74
70
  client = self._get_client_by_ip(create_ref_ip)
75
71
 
76
- if client.set(uid.__str__(), serialized, noreply=self.noreply):
77
- return ref
78
- else:
79
- raise RuntimeError("Unable to write to cache")
72
+ try:
73
+ if client.set(uid.__str__(), serialized, noreply=self.noreply):
74
+ return ref
75
+ else:
76
+ raise RuntimeError(f"Unable to write {ref} to cache")
77
+ except BaseException as e:
78
+ raise RuntimeError(
79
+ f"Received {e} while writing ref={ref} and obj size={len(serialized)}"
80
+ )
80
81
 
81
82
  def get_many(self, refs: List[Any], *args, **kwargs) -> List[object]:
82
83
  result = []
@@ -92,7 +93,7 @@ class MemcachedObjectStore(IObjectStore):
92
93
  cache_result = client.get_many(uids)
93
94
  assert len(cache_result) == len(
94
95
  uids
95
- ), f"Not all values were returned from cache as {len(cache_result)} != {len(uids)}"
96
+ ), f"Not all values were returned from cache from {ip} as {len(cache_result)} != {len(uids)}"
96
97
 
97
98
  values = cache_result.values()
98
99
  total_bytes = 0
@@ -119,11 +120,16 @@ class MemcachedObjectStore(IObjectStore):
119
120
  serialized = client.get(uid)
120
121
  return cloudpickle.loads(serialized)
121
122
 
123
+ def close(self) -> None:
124
+ for client in self.client_cache.values():
125
+ client.close()
126
+
127
+ self.client_cache.clear()
128
+
122
129
  def _create_ref(self, uid, ip) -> str:
123
130
  return f"{uid}{self.SEPARATOR}{ip}"
124
131
 
125
132
  def _get_storage_node_ip(self, key: str):
126
- self.initialize_hasher()
127
133
  storage_node_ip = self.hasher.get_node(key)
128
134
  return storage_node_ip
129
135
 
@@ -151,6 +157,7 @@ class MemcachedObjectStore(IObjectStore):
151
157
  retry_delay=1,
152
158
  retry_for=[
153
159
  MemcacheUnexpectedCloseError,
160
+ ConnectionRefusedError,
154
161
  ConnectionResetError,
155
162
  BrokenPipeError,
156
163
  TimeoutError,
@@ -49,3 +49,10 @@ class IObjectStore:
49
49
  """
50
50
  Clears the object store and all the associated data in it.
51
51
  """
52
+
53
+ def close(self, *args, **kwargs) -> None:
54
+ ...
55
+ """
56
+ Closes all the active connections to object store without clearing
57
+ the data in the object store.
58
+ """
@@ -1,6 +1,6 @@
1
1
  import pyarrow as pa
2
2
  import string
3
- from typing import Callable, Dict, List, Optional, Set, Tuple
3
+ from typing import Callable, Dict, List, Optional, Set, Tuple, Union
4
4
  from deltacat.tests.compute.test_util_common import (
5
5
  offer_iso8601_timestamp_list,
6
6
  PartitionKey,
@@ -72,7 +72,7 @@ class BaseCompactorTestCase:
72
72
  sort_keys: List[Optional[SortKey]]
73
73
  partition_keys: Optional[List[PartitionKey]]
74
74
  partition_values: List[Optional[str]]
75
- input_deltas: List[pa.Array]
75
+ input_deltas: Union[List[pa.Array], pa.Table]
76
76
  input_deltas_delta_type: DeltaType
77
77
  expected_terminal_compact_partition_result: pa.Table
78
78
  do_create_placement_group: bool
@@ -104,11 +104,16 @@ class RebaseThenIncrementalCompactionTestCaseParams(BaseCompactorTestCase):
104
104
  rebase_expected_compact_partition_result: pa.Table - expected table after rebase compaction runs. An output that is asserted on in Rebase then Incremental unit tests
105
105
  """
106
106
 
107
- incremental_deltas: pa.Table
107
+ incremental_deltas: Optional[pa.Table]
108
108
  incremental_deltas_delta_type: DeltaType
109
109
  rebase_expected_compact_partition_result: pa.Table
110
110
 
111
111
 
112
+ @dataclass(frozen=True)
113
+ class NoRCFOutputCompactionTestCaseParams(BaseCompactorTestCase):
114
+ pass
115
+
116
+
112
117
  def with_compactor_version_func_test_param(
113
118
  test_cases: Dict[str, BaseCompactorTestCase] = None
114
119
  ):
@@ -1085,10 +1090,55 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
1085
1090
  drop_duplicates=False,
1086
1091
  skip_enabled_compact_partition_drivers=[CompactorVersion.V1],
1087
1092
  ),
1093
+ "14-rebase-then-empty-incremental-delta": RebaseThenIncrementalCompactionTestCaseParams(
1094
+ primary_keys={"pk_col_1"},
1095
+ sort_keys=[
1096
+ SortKey.of(key_name="sk_col_1"),
1097
+ SortKey.of(key_name="sk_col_2"),
1098
+ ],
1099
+ partition_keys=[PartitionKey.of("region_id", PartitionKeyType.INT)],
1100
+ partition_values=["1"],
1101
+ input_deltas=pa.Table.from_arrays(
1102
+ [
1103
+ pa.array([str(i) for i in range(10)]),
1104
+ pa.array([i for i in range(0, 10)]),
1105
+ pa.array(["foo"] * 10),
1106
+ pa.array([i / 10 for i in range(10, 20)]),
1107
+ ],
1108
+ names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
1109
+ ),
1110
+ input_deltas_delta_type=DeltaType.UPSERT,
1111
+ rebase_expected_compact_partition_result=pa.Table.from_arrays(
1112
+ [
1113
+ pa.array([str(i) for i in range(10)]),
1114
+ pa.array([i for i in range(0, 10)]),
1115
+ pa.array(["foo"] * 10),
1116
+ pa.array([i / 10 for i in range(10, 20)]),
1117
+ ],
1118
+ names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
1119
+ ),
1120
+ incremental_deltas=None,
1121
+ incremental_deltas_delta_type=DeltaType.UPSERT,
1122
+ expected_terminal_compact_partition_result=pa.Table.from_arrays(
1123
+ [
1124
+ pa.array([str(i) for i in range(10)]),
1125
+ pa.array([i for i in range(0, 10)]),
1126
+ pa.array(["foo"] * 10),
1127
+ pa.array([i / 10 for i in range(10, 20)]),
1128
+ ],
1129
+ names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
1130
+ ),
1131
+ do_create_placement_group=False,
1132
+ records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1133
+ hash_bucket_count=1,
1134
+ read_kwargs_provider=None,
1135
+ drop_duplicates=True,
1136
+ skip_enabled_compact_partition_drivers=None,
1137
+ ),
1088
1138
  }
1089
1139
 
1090
- INCREMENTAL_TEST_CASES = with_compactor_version_func_test_param(INCREMENTAL_TEST_CASES)
1091
1140
 
1141
+ INCREMENTAL_TEST_CASES = with_compactor_version_func_test_param(INCREMENTAL_TEST_CASES)
1092
1142
 
1093
1143
  REBASE_THEN_INCREMENTAL_TEST_CASES = with_compactor_version_func_test_param(
1094
1144
  REBASE_THEN_INCREMENTAL_TEST_CASES
@@ -6,6 +6,8 @@ import sqlite3
6
6
  from sqlite3 import Cursor, Connection
7
7
  import uuid
8
8
  import io
9
+
10
+ from deltacat.tests.test_utils.storage import create_empty_delta
9
11
  from deltacat.utils.common import current_time_ms
10
12
 
11
13
  from deltacat.storage import (
@@ -880,6 +882,20 @@ def stage_delta(
880
882
  manifest_entry_id = uuid.uuid4().__str__()
881
883
  uri = _get_manifest_entry_uri(manifest_entry_id)
882
884
 
885
+ if data is None:
886
+ delta = create_empty_delta(
887
+ partition,
888
+ delta_type,
889
+ author,
890
+ properties=properties,
891
+ manifest_entry_id=manifest_entry_id,
892
+ )
893
+ cur.execute("INSERT OR IGNORE INTO data VALUES (?, ?)", (uri, None))
894
+ params = (delta.locator.canonical_string(), "staged_delta", json.dumps(delta))
895
+ cur.execute("INSERT OR IGNORE INTO deltas VALUES (?, ?, ?)", params)
896
+ con.commit()
897
+ return delta
898
+
883
899
  serialized_data = None
884
900
  if content_type == ContentType.PARQUET:
885
901
  buffer = io.BytesIO()
@@ -0,0 +1,34 @@
1
+ from typing import Optional, Dict
2
+
3
+ from deltacat.aws.redshift import Manifest, ManifestMeta
4
+ from deltacat.storage import Partition, DeltaType, DeltaLocator, Delta
5
+ from deltacat.utils.common import current_time_ms
6
+
7
+
8
+ def create_empty_delta(
9
+ partition: Partition,
10
+ delta_type: DeltaType,
11
+ author: Optional[str],
12
+ properties: Optional[Dict[str, str]] = None,
13
+ manifest_entry_id: Optional[str] = None,
14
+ ) -> Delta:
15
+ stream_position = current_time_ms()
16
+ delta_locator = DeltaLocator.of(partition.locator, stream_position=stream_position)
17
+
18
+ if manifest_entry_id:
19
+ manifest = Manifest.of(
20
+ entries=[],
21
+ author=author,
22
+ uuid=manifest_entry_id,
23
+ )
24
+ else:
25
+ manifest = None
26
+
27
+ return Delta.of(
28
+ delta_locator,
29
+ delta_type=delta_type,
30
+ meta=ManifestMeta(),
31
+ properties=properties,
32
+ manifest=manifest,
33
+ previous_stream_position=partition.stream_position,
34
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 0.2.2
3
+ Version: 0.2.3
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,4 +1,4 @@
1
- deltacat/__init__.py,sha256=I5IWJK3eDrmI6-9aA_IWM9phLnDl1BUzqfptgnFB-VY,1777
1
+ deltacat/__init__.py,sha256=kTmI32iCpdFHBXdpnyOFaK3-Vx09CdQ4ceVhQgAUA40,1777
2
2
  deltacat/constants.py,sha256=_6oRI-3yp5c8J1qKGQZrt89I9-ttT_gSSvVsJ0h8Duc,1939
3
3
  deltacat/exceptions.py,sha256=xqZf8CwysNYP2d39pf27OnXGStPREgBgIM-e2Tts-TI,199
4
4
  deltacat/logs.py,sha256=9XWuTBoWhhAF9rAL6t9veXmnAlJHsaqk0lTxteVPqyQ,5674
@@ -24,7 +24,7 @@ deltacat/compute/compactor/compaction_session.py,sha256=5XxWGY8QixEjUqzVZrdRGD8B
24
24
  deltacat/compute/compactor/repartition_session.py,sha256=f5BTTGNv365qSuTioL7QUuVm-px_l8-zz-OC_p7gXt4,7240
25
25
  deltacat/compute/compactor/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  deltacat/compute/compactor/model/compact_partition_params.py,sha256=110p2Z0M0_SuVzEhUaR0-17lmdR1rXAFYhgtcIhyK7s,14281
27
- deltacat/compute/compactor/model/compaction_session_audit_info.py,sha256=4317RCOLgkTlHkvr7sLh1Bi5UT0gMJeLZbpLd6xWiQ4,31352
27
+ deltacat/compute/compactor/model/compaction_session_audit_info.py,sha256=T1-RAfs2xITCL9p_4MQW0f0y_B8CYiY0LxSAjn4bxt4,31457
28
28
  deltacat/compute/compactor/model/compactor_version.py,sha256=RwRvManiCxZmzjAWzm1OPDxjB1BEHu1d0fBJyGhXKxA,87
29
29
  deltacat/compute/compactor/model/dedupe_result.py,sha256=1OCV944qJdLQ_-8scisVKl45ej1eRv9OV539QYZtQ-U,292
30
30
  deltacat/compute/compactor/model/delta_annotated.py,sha256=NERB9rOtYg-xzBwvqGJ7_hBOzBC7g6X5M9-Cq5pbdH8,12258
@@ -62,7 +62,7 @@ deltacat/compute/compactor_v2/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
62
62
  deltacat/compute/compactor_v2/utils/content_type_params.py,sha256=rNKZisxGrLQOkwX8eHUQiFoTR1V-E66pMqWigtrs618,2156
63
63
  deltacat/compute/compactor_v2/utils/dedupe.py,sha256=62tFCY2iRP7I3-45GCIYs6_SJsQl8C5lBEr8gbNfbsw,1932
64
64
  deltacat/compute/compactor_v2/utils/io.py,sha256=4KV13VKwEtIzkwPJLJmEnp1dMOKHSxkEOQNQVbYrcwY,5177
65
- deltacat/compute/compactor_v2/utils/primary_key_index.py,sha256=NNF-h4zKRegVluAtXSDW4YRdOd4xJ6z_6uDaxfJyBiw,11122
65
+ deltacat/compute/compactor_v2/utils/primary_key_index.py,sha256=j3i7JQyDQh1mAa_TiMZ41s5inRvIyptKzd2CRvH1qbM,11269
66
66
  deltacat/compute/compactor_v2/utils/task_options.py,sha256=4exdjpJ0TKgAeN0XNZywcWYG6XdelSdGVWEh2vZ8-yM,8317
67
67
  deltacat/compute/metastats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
68
  deltacat/compute/metastats/meta_stats.py,sha256=78hN3aN5wLHUFJsZXuv2JLeqA35HZ8mLUWJDMslMj5Q,18731
@@ -92,8 +92,8 @@ deltacat/compute/stats/utils/manifest_stats_file.py,sha256=PtqW5Zc5e09HcfiAgvoZH
92
92
  deltacat/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  deltacat/io/dataset.py,sha256=8w9sPVDpGnjjGVDWB39YSKWxq4zRv9VEfDtj7PYwjqM,3755
94
94
  deltacat/io/file_object_store.py,sha256=HCFeXu9cWXPXVk54MHel_nw3-wIuzhMt2RI6jKzjRYM,1346
95
- deltacat/io/memcached_object_store.py,sha256=8l3NH4nF8si0I7W5Eec6oaxiPO46_7ZypBAtjh6G2PA,5604
96
- deltacat/io/object_store.py,sha256=GX4pK-LY92s3uXRGcj8YsG2FFoiKfcJr2USIVz1ruGg,1380
95
+ deltacat/io/memcached_object_store.py,sha256=bV567DAbKGt2IXbNBNcqBtT3EFopmI65FxXNUAhSBQs,5850
96
+ deltacat/io/object_store.py,sha256=X6221ZuVx8NOyKUesz8LvjvQ_4vZ6p2RWV6VISL17AY,1576
97
97
  deltacat/io/ray_plasma_object_store.py,sha256=pupw7ulZY_EV5dERJDCCW_y_hzVx3Hl_uAvpQTNIh-E,705
98
98
  deltacat/io/read_api.py,sha256=BhkjL3xjY-fsa62AA9Yv20_88uTskn4_Bv2W6VmMXVA,7023
99
99
  deltacat/io/redis_object_store.py,sha256=f54Qw-NMCDjUmKxrrok_swt0LkVDjfmaHdbtAujnxyA,3507
@@ -118,7 +118,7 @@ deltacat/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  deltacat/tests/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
119
  deltacat/tests/aws/test_clients.py,sha256=XOfY_ig5mVeuE4xr02Ut3l1PjmbzQI1eEdeN6QVrfqI,2557
120
120
  deltacat/tests/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- deltacat/tests/compute/compact_partition_test_cases.py,sha256=-JIhvpaslgMxczd12XlxsywZ2LAadVv-wECh0z_TRH0,45937
121
+ deltacat/tests/compute/compact_partition_test_cases.py,sha256=EyZwh-7qKiMmzJT8E_V74cvle5uONYZyt89jmdAu1TI,47952
122
122
  deltacat/tests/compute/test_compact_partition_incremental.py,sha256=82PYTROuqkrz8PdeNu5lHBmO77yCs2gkSjPDtQedjrQ,8677
123
123
  deltacat/tests/compute/test_compact_partition_params.py,sha256=VKBBepclCII0_RF3aguuvCaJtY8RJ_QYEOZRL2S4xK8,8005
124
124
  deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=7P64Lp-tiTqaVHScC3LMAtAZ7iHBAg8dDGY4DJlNrW8,12204
@@ -139,12 +139,13 @@ deltacat/tests/io/test_memcached_object_store.py,sha256=PNnfIGPoAOsgd5PYzXplrSOq
139
139
  deltacat/tests/io/test_ray_plasma_object_store.py,sha256=-wJZP6lRtEOogR25wjEiIBGz_lpvWVihwlZ5GqandZU,1911
140
140
  deltacat/tests/io/test_redis_object_store.py,sha256=sZrXrYjkw8u_XrvFilhBbLc8PPnZiuMKa1_Bt9ka5qs,3838
141
141
  deltacat/tests/io/test_s3_object_store.py,sha256=4b7PYEfQJnYGUz6fcLFWVVyRHTlH_yd8CIaCv9l33Gg,1900
142
- deltacat/tests/local_deltacat_storage/__init__.py,sha256=aWKm8NBDRE_lG_9FLrRrkpKbcyDtuinK8deUAezMmEU,34208
142
+ deltacat/tests/local_deltacat_storage/__init__.py,sha256=Jv0ZVjEvFptoNTZoIFvFYisjkqY4O5HSnviUPbiTQUY,34776
143
143
  deltacat/tests/stats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
144
  deltacat/tests/stats/test_intervals.py,sha256=S92DgkALQ1WmbLWcxtvS7RlVGvL-XoPJKUUbkdn9_CQ,1955
145
145
  deltacat/tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
146
  deltacat/tests/test_utils/constants.py,sha256=zgqFmfIE5ZCtDw4NF-Y4ZEEnaPUP5nDY5768WPod0Fc,208
147
147
  deltacat/tests/test_utils/pyarrow.py,sha256=EZk2Mtqiiu7Z79Lqm-hyHWbH6c-lbYnpvCn35TxVQys,1506
148
+ deltacat/tests/test_utils/storage.py,sha256=93GEn4A5WbMHWk0Ec4Bd7RxeHoSEnBfSarfWhKOSNtM,972
148
149
  deltacat/tests/test_utils/utils.py,sha256=a32qEwcSSd1lvRi0aJJ4ZLnc1ZyXmoQF_K95zaQRk2M,455
149
150
  deltacat/tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
151
  deltacat/tests/utils/test_daft.py,sha256=iN6rAwGXw5F4xT2UZ72bN276hkKVD7XD4WNp5DKgm2Q,5098
@@ -175,8 +176,8 @@ deltacat/utils/ray_utils/concurrency.py,sha256=JDVwMiQWrmuSlyCWAoiq9ctoJ0XADEfDD
175
176
  deltacat/utils/ray_utils/dataset.py,sha256=SIljK3UkSqQ6Ntit_iSiYt9yYjN_gGrCTX6_72XdQ3w,3244
176
177
  deltacat/utils/ray_utils/performance.py,sha256=d7JFM7vTXHzkGx9qNQcZzUWajnqINvYRwaM088_FpsE,464
177
178
  deltacat/utils/ray_utils/runtime.py,sha256=xOVkqL6o8qGsewGvzhMKxmCcqcFZDnNILuz5IGMgxSc,4991
178
- deltacat-0.2.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
179
- deltacat-0.2.2.dist-info/METADATA,sha256=eWf7GzgAkujTLj6lpdK_81OkROWRhQcpkc2RRwuN8yc,1736
180
- deltacat-0.2.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
181
- deltacat-0.2.2.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
182
- deltacat-0.2.2.dist-info/RECORD,,
179
+ deltacat-0.2.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
180
+ deltacat-0.2.3.dist-info/METADATA,sha256=gapTUx-a1Iy9MXzrWng_azqO2C36Q-6F1kDlysM0Cw8,1736
181
+ deltacat-0.2.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
182
+ deltacat-0.2.3.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
183
+ deltacat-0.2.3.dist-info/RECORD,,