deltacat 1.1.3__py3-none-any.whl → 1.1.5__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.
@@ -84,6 +84,7 @@ def create_src_w_deltas_destination_plus_destination(
84
84
  input_delta_type: DeltaType,
85
85
  partition_values: Optional[List[Any]],
86
86
  ds_mock_kwargs: Optional[Dict[str, Any]],
87
+ simulate_is_inplace: bool = False,
87
88
  ) -> Tuple[Stream, Stream, Optional[Stream]]:
88
89
  import deltacat.tests.local_deltacat_storage as ds
89
90
 
@@ -113,13 +114,23 @@ def create_src_w_deltas_destination_plus_destination(
113
114
  table_version=source_table_version,
114
115
  **ds_mock_kwargs,
115
116
  )
116
- (
117
- destination_table_namespace,
118
- destination_table_name,
119
- destination_table_version,
120
- ) = create_destination_table(
121
- primary_keys, sort_keys, partition_keys, ds_mock_kwargs
122
- )
117
+ destination_table_namespace: Optional[str] = None
118
+ destination_table_name: Optional[str] = None
119
+ destination_table_version: Optional[str] = None
120
+ if not simulate_is_inplace:
121
+ (
122
+ destination_table_namespace,
123
+ destination_table_name,
124
+ destination_table_version,
125
+ ) = create_destination_table(
126
+ primary_keys, sort_keys, partition_keys, ds_mock_kwargs
127
+ )
128
+ else:
129
+ # not creating a table as in-place
130
+ destination_table_namespace = source_namespace
131
+ destination_table_name = source_table_name
132
+ destination_table_version = source_table_version
133
+
123
134
  destination_table_stream: Stream = ds.get_stream(
124
135
  namespace=destination_table_namespace,
125
136
  table_name=destination_table_name,
@@ -0,0 +1,127 @@
1
+ import unittest
2
+ import json
3
+ import ray
4
+ from logging import LogRecord
5
+ from deltacat.logs import JsonFormatter
6
+
7
+
8
+ class TestJsonFormatter(unittest.TestCase):
9
+ def test_usesTime_sanity(self):
10
+
11
+ formatter = JsonFormatter()
12
+
13
+ self.assertFalse(formatter.usesTime())
14
+
15
+ def test_usesTime_success_case(self):
16
+
17
+ formatter = JsonFormatter(fmt_dict={"asctime": "asctime"})
18
+
19
+ self.assertTrue(formatter.usesTime())
20
+
21
+ def test_formatMessage_sanity(self):
22
+
23
+ formatter = JsonFormatter({"message": "msg"})
24
+
25
+ record = LogRecord(
26
+ level="INFO",
27
+ name="test",
28
+ pathname="test",
29
+ lineno=0,
30
+ message="test_message",
31
+ msg="test_message",
32
+ args=None,
33
+ exc_info=None,
34
+ )
35
+
36
+ result = formatter.formatMessage(record)
37
+
38
+ self.assertEqual({"message": "test_message"}, result)
39
+
40
+ def test_format_sanity(self):
41
+ formatter = JsonFormatter({"message": "msg"})
42
+
43
+ record = LogRecord(
44
+ level="INFO",
45
+ name="test",
46
+ pathname="test",
47
+ lineno=0,
48
+ message="test_message",
49
+ msg="test_message",
50
+ args=None,
51
+ exc_info=None,
52
+ )
53
+
54
+ result = formatter.format(record)
55
+
56
+ self.assertEqual({"message": "test_message"}, json.loads(result))
57
+ self.assertFalse(ray.is_initialized())
58
+ self.assertNotIn("ray_runtime_context", json.loads(result))
59
+
60
+ def test_format_when_ray_initialized(self):
61
+ ray.init(local_mode=True, ignore_reinit_error=True)
62
+
63
+ formatter = JsonFormatter({"message": "msg"})
64
+
65
+ record = LogRecord(
66
+ level="INFO",
67
+ name="test",
68
+ pathname="test",
69
+ lineno=0,
70
+ message="test_message",
71
+ msg="test_message",
72
+ args=None,
73
+ exc_info=None,
74
+ )
75
+
76
+ result = formatter.format(record)
77
+ result = json.loads(result)
78
+
79
+ self.assertEqual("test_message", result["message"])
80
+ self.assertTrue(ray.is_initialized())
81
+ self.assertIn("ray_runtime_context", result)
82
+ self.assertIn("job_id", result["ray_runtime_context"])
83
+ self.assertIn("node_id", result["ray_runtime_context"])
84
+ self.assertIn("worker_id", result["ray_runtime_context"])
85
+ self.assertNotIn(
86
+ "task_id",
87
+ result["ray_runtime_context"],
88
+ "We expect task ID not be present outside a remote task",
89
+ )
90
+ ray.shutdown()
91
+
92
+ def test_format_when_ray_initialized_in_task(self):
93
+ # worker mode is only true when local_mode is False
94
+ ray.init(local_mode=False, ignore_reinit_error=True)
95
+
96
+ @ray.remote
97
+ def ray_remote_task():
98
+ formatter = JsonFormatter({"message": "msg"})
99
+
100
+ record = LogRecord(
101
+ level="INFO",
102
+ name="test",
103
+ pathname="test",
104
+ lineno=0,
105
+ message="test_message",
106
+ msg="test_message",
107
+ args=None,
108
+ exc_info=None,
109
+ )
110
+
111
+ result = formatter.format(record)
112
+ result = json.loads(result)
113
+ return result
114
+
115
+ result = ray.get(ray_remote_task.remote())
116
+ self.assertEqual("test_message", result["message"])
117
+ self.assertTrue(ray.is_initialized())
118
+ self.assertIn("ray_runtime_context", result)
119
+ self.assertIn("job_id", result["ray_runtime_context"])
120
+ self.assertIn("node_id", result["ray_runtime_context"])
121
+ self.assertIn("worker_id", result["ray_runtime_context"])
122
+ self.assertIn(
123
+ "task_id",
124
+ result["ray_runtime_context"],
125
+ "We expect task ID to be present inside a remote task",
126
+ )
127
+ ray.shutdown()
@@ -0,0 +1,25 @@
1
+ import unittest
2
+ import ray
3
+ from deltacat.utils.placement import (
4
+ PlacementGroupManager,
5
+ _get_available_resources_per_node,
6
+ )
7
+
8
+
9
+ class TestPlacementGroupManager(unittest.TestCase):
10
+ @classmethod
11
+ def setUpClass(cls):
12
+ super().setUpClass()
13
+ ray.init(local_mode=True, ignore_reinit_error=True)
14
+
15
+ def test_placement_group_manager_sanity(self):
16
+
17
+ pgm = PlacementGroupManager(1, 1, 1)
18
+
19
+ self.assertIsNotNone(pgm)
20
+
21
+ def test_ray_state_api_returns_correctly(self):
22
+
23
+ result = _get_available_resources_per_node()
24
+
25
+ self.assertIsNotNone(result)
deltacat/utils/daft.py CHANGED
@@ -163,5 +163,7 @@ def _get_s3_io_config(s3_client_kwargs) -> IOConfig:
163
163
  retry_mode="adaptive",
164
164
  num_tries=BOTO_MAX_RETRIES,
165
165
  max_connections=DAFT_MAX_S3_CONNECTIONS_PER_FILE,
166
+ connect_timeout_ms=5_000, # Timeout to connect to server
167
+ read_timeout_ms=10_000, # Timeout for first byte from server
166
168
  )
167
169
  )
@@ -2,6 +2,7 @@ import logging
2
2
  import re
3
3
  import time
4
4
  from dataclasses import dataclass
5
+ from packaging.version import Version
5
6
  from typing import Any, Dict, List, Optional, Tuple, Union
6
7
 
7
8
  import ray
@@ -19,6 +20,16 @@ logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
19
20
  # Issue: https://github.com/ray-project/ray/issues/29959
20
21
 
21
22
 
23
+ def _get_available_resources_per_node():
24
+ # This API changed after this commit
25
+ # https://github.com/ray-project/ray/pull/43252
26
+ # TODO: Use this method from a durable State API once it's available
27
+ if Version(ray.__version__) >= Version("2.10.0"):
28
+ return ray._private.state.available_resources_per_node()
29
+ else:
30
+ return ray._private.state.state._available_resources_per_node()
31
+
32
+
22
33
  @dataclass
23
34
  class PlacementGroupConfig:
24
35
  def __init__(self, opts, resource, node_ips):
@@ -90,9 +101,7 @@ class NodeGroupManager:
90
101
  Returns:
91
102
  group_res: a dict of resources, e.g., {'CPU':0,'memory':0,'object_store_memory':0}
92
103
  """
93
- all_available_resources = (
94
- ray._private.state.state._available_resources_per_node()
95
- )
104
+ all_available_resources = _get_available_resources_per_node()
96
105
  group_keys = [x[0] for x in self.init_groups]
97
106
  group_res = {}
98
107
  for k in group_keys:
@@ -127,9 +136,7 @@ class NodeGroupManager:
127
136
  Returns:
128
137
  group_res: dict of updated resource(cpu, memory, object store memory) for a given group
129
138
  """
130
- all_available_resources = (
131
- ray._private.state.state._available_resources_per_node()
132
- )
139
+ all_available_resources = _get_available_resources_per_node()
133
140
  group_res = {"CPU": 0, "memory": 0, "object_store_memory": 0, "node_id": []}
134
141
  for v in all_available_resources.values():
135
142
  keys = v.keys()
@@ -285,7 +292,7 @@ def _config(
285
292
  for bd in bundles:
286
293
  node_ids.append(bd["node_id"])
287
294
  # query available resources given list of node id
288
- all_nodes_available_res = ray._private.state.state._available_resources_per_node()
295
+ all_nodes_available_res = _get_available_resources_per_node()
289
296
  pg_res = {"CPU": 0, "memory": 0, "object_store_memory": 0}
290
297
  node_ips = []
291
298
  for node_id in node_ids:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.3
3
+ Version: 1.1.5
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
@@ -27,7 +27,7 @@ Requires-Dist: tenacity ==8.1.0
27
27
  Requires-Dist: typing-extensions ==4.4.0
28
28
  Requires-Dist: pymemcache ==4.0.0
29
29
  Requires-Dist: redis ==4.6.0
30
- Requires-Dist: getdaft ==0.2.17
30
+ Requires-Dist: getdaft ==0.2.23
31
31
  Requires-Dist: schedule ==1.2.0
32
32
 
33
33
  # DeltaCAT
@@ -1,11 +1,11 @@
1
- deltacat/__init__.py,sha256=eO5VKENAHF-beW-5X9eJHbQk9EvjaQ09PiyxhQNUuxo,1777
1
+ deltacat/__init__.py,sha256=i3bpmX1O0ZJD9XFiuqF0RHURR1lLKvdTBzVOP90fKQA,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=YT26oj-oKZReyBEhiBQU5jc246aSu_d4B2bZcUVBHmE,6550
4
+ deltacat/logs.py,sha256=6g16VkEFidbaMjgenAjggE1r2l664drMVhreRs8B1IQ,8438
5
5
  deltacat/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
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
7
+ deltacat/aws/constants.py,sha256=aAhOKeLVgtpekA3h9otHUrHqY2bLDWs2QlL7GrdI63g,352
8
+ deltacat/aws/s3u.py,sha256=lgoE6es6N4xfzwyydxmVspROP1hrNfanB6JqjyBoRb4,24859
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
@@ -46,12 +46,12 @@ deltacat/compute/compactor/steps/repartition.py,sha256=_ITw4yvvnNv3wwOYxprzlIz5J
46
46
  deltacat/compute/compactor/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  deltacat/compute/compactor/utils/io.py,sha256=S-JZdjETP_tHblK4j860jLHyX9S6A87BPz3Rl0jGbRM,17303
48
48
  deltacat/compute/compactor/utils/primary_key_index.py,sha256=ay2-7t4mP9I_l5gKkrv5h5_r8Icts8mBcbH7OJBknrY,2435
49
- deltacat/compute/compactor/utils/round_completion_file.py,sha256=DmZfHeAXlQn0DDdcsIHZROHWfyBCKTY3pNUdHzalqkE,2284
49
+ deltacat/compute/compactor/utils/round_completion_file.py,sha256=-j6ZzhJBDrJ6Vz6WKEC-yKcNElkKRfO6S0P2JdJDQD0,2345
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=xAxiTOxHffRvPqkv4ObGM-NWdpxRRMyrS8WWZWrgTFQ,25141
54
- deltacat/compute/compactor_v2/constants.py,sha256=R5qvsaX-rDrSmSqUl0yLp6A3hVrAD4whYkV2NBkDR9Y,2199
53
+ deltacat/compute/compactor_v2/compaction_session.py,sha256=ovOTJUOtq6tIc7krya9IPtonI-_nHJL9NFl5D_R9i4Q,26087
54
+ deltacat/compute/compactor_v2/constants.py,sha256=jGLEK5uS7AcnoVjPGUDIO4ljDbBYZlqzQleKJRKvnZM,2118
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
@@ -72,9 +72,9 @@ deltacat/compute/compactor_v2/utils/content_type_params.py,sha256=rNKZisxGrLQOkw
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
74
  deltacat/compute/compactor_v2/utils/io.py,sha256=autXlE3uHICdCCuJoS7mfdeJbRRiz2_xlz-3izlccB4,5264
75
- deltacat/compute/compactor_v2/utils/merge.py,sha256=7p8lEmepxNekFFP5uVxgVLvAQRQnscOmUlSj8kUvW2c,5408
75
+ deltacat/compute/compactor_v2/utils/merge.py,sha256=hK4Y7acrtgfvWWTz-fAGznEg6qn6dBYu8blQUQVHhs0,5244
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=MCY0Sz5NCgNMaY92W8p87FvvDB91mnPQ4AhL8ix3BiA,13780
77
+ deltacat/compute/compactor_v2/utils/task_options.py,sha256=WK-1-1gncUSZI9yxBEG1AokDZKTBBhisYcYGijlitHY,13857
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
@@ -133,19 +133,21 @@ deltacat/storage/model/table.py,sha256=IOu1ZOrdRkVDB-FOxYMRvnNf5TukIDfbdHWTqHYN_
133
133
  deltacat/storage/model/table_version.py,sha256=cOM9dN-YB_Hhi4h1CzFbldC5qRkm4C1rQ3rpKIZzCNs,7413
134
134
  deltacat/storage/model/types.py,sha256=hj7MmjjVmKT-R9sMUulOWG-FByGZKKaYXNnOWW32mP0,1608
135
135
  deltacat/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
+ deltacat/tests/test_logs.py,sha256=6BEMw8VApFg2msFwCAVosz8NWJYATtX5furHyz8UluM,3828
136
137
  deltacat/tests/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
138
  deltacat/tests/aws/test_clients.py,sha256=23GMWfz27WWBDXSqphG9mfputsyS7j3I5P_HRk4YoKE,3790
139
+ deltacat/tests/aws/test_s3u.py,sha256=QflXbR94o7WobGBm6jhQDK5lJJD2Pd9z2uvi4J7WEJg,437
138
140
  deltacat/tests/catalog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
141
  deltacat/tests/catalog/test_default_catalog_impl.py,sha256=9srCU5yQ159oZ9_PoJ_mWMzVUW5bKV0mnmPJc5zKCQQ,3125
140
142
  deltacat/tests/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py,sha256=SaYQI30d1sxOBVs-Qj9VsMtigp4tWaRFFPmsPdahILc,72082
142
- deltacat/tests/compute/compact_partition_test_cases.py,sha256=b6wVg1UP0pahtrS3dojk-_1tSXHjCWd95XBo4J6KEAU,20092
143
- deltacat/tests/compute/test_compact_partition_incremental.py,sha256=G_xUERQjtBzAVfipzucdR8ATJviaVwTsj-5rRWVgYJY,10271
143
+ deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py,sha256=ctJTmL7JKtEc-2UX8dTVPRct0wCKelGf90Jwd0lgE14,73645
144
+ deltacat/tests/compute/compact_partition_test_cases.py,sha256=uoNRy5oCHXhKktdZABryJ3n_smbimcKINxxNtFfjWsE,22651
145
+ deltacat/tests/compute/test_compact_partition_incremental.py,sha256=NLhGPOa7Y-ymw3_SlFhqI16MppYLUKc7y5ST9QXUbR8,11301
144
146
  deltacat/tests/compute/test_compact_partition_params.py,sha256=Dm5eLyHo8oGMeO3XBbpj1rZqHtPZ1hAB7z2qvzc4Lxk,8497
145
- deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=n6Qy-_STWgy3j02QyfZMUChIlHqlTfZjQ-G8yDppvyM,14077
146
- deltacat/tests/compute/test_util_common.py,sha256=Skz0ZfHzidArZhIzRDHOYt-5uGBwx6MRfKZpeBnzh9w,6055
147
+ deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=nIO2r4tjO0kMhKKEWs2cGALP9-2NiluIGnFCOFmws90,14364
148
+ deltacat/tests/compute/test_util_common.py,sha256=jGc862Rv1gf51HN_Dl9v5gvhj4bnwLidurz9Z8wWJZ0,6066
147
149
  deltacat/tests/compute/test_util_constant.py,sha256=4o-W3E7r7jhFl1A3OFLLrdKnwcF46zx4lEIDY8ONJ3c,929
148
- deltacat/tests/compute/test_util_create_table_deltas_repo.py,sha256=lnII5m86DcMYQrPoVHYKUUpbXTaXO-AB43F8C9alCv4,7142
150
+ deltacat/tests/compute/test_util_create_table_deltas_repo.py,sha256=4i4CrFTBK51uzCswUK7KZz7UjutD5r6ptBQJ0Kj3WvA,7613
149
151
  deltacat/tests/compute/compactor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
152
  deltacat/tests/compute/compactor/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
153
  deltacat/tests/compute/compactor/steps/test_repartition.py,sha256=0uRguPEKeLSYs746Jv8io-HZMWdyXNcOMBu8GO2mA0M,9305
@@ -175,6 +177,7 @@ deltacat/tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
175
177
  deltacat/tests/utils/test_cloudpickle.py,sha256=J0pnBY3-PxlUh6MamZAN1PuquKQPr2iyzjiJ7-Rcl0o,1506
176
178
  deltacat/tests/utils/test_daft.py,sha256=Xal84zR42rXsWQI3lImdDYWOzewomKmhmiUQ59m67V0,6488
177
179
  deltacat/tests/utils/test_metrics.py,sha256=Ym9nOz1EtB180pLmvugihj1sDTNDMb5opIjjr5Nmcls,16339
180
+ deltacat/tests/utils/test_placement.py,sha256=g61wVOMkHe4YJeR9Oxg_BOVQ6bhHHbC3IBYv8YhUu94,597
178
181
  deltacat/tests/utils/test_pyarrow.py,sha256=eZAuYp9MUf8lmpIilH57JkURuNsTGZ3IAGC4Gm5hdrM,17307
179
182
  deltacat/tests/utils/test_record_batch_tables.py,sha256=AkG1WyljQmjnl-AxhbFWyo5LnMIKRyLScfgC2B_ES-s,11321
180
183
  deltacat/tests/utils/test_resources.py,sha256=HtpvDrfPZQNtGDXUlsIzc_yd7Vf1cDscZ3YbN0oTvO8,2560
@@ -187,12 +190,12 @@ deltacat/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
190
  deltacat/utils/arguments.py,sha256=5y1Xz4HSAD8M8Jt83i6gOEKoYjy_fMQe1V43IhIE4hY,1191
188
191
  deltacat/utils/cloudpickle.py,sha256=XE7YDmQe56ksfl3NdYZkzOAhbHSuhNcBZGOehQpgZr0,1187
189
192
  deltacat/utils/common.py,sha256=RG_-enXNpLKaYrqyx1ne2lL10lxN9vK7F631oJP6SE8,1375
190
- deltacat/utils/daft.py,sha256=heg6J8NHnTI1UbcjXvsjGBbFKU6f7mvAio-KZuTSuFI,5506
193
+ deltacat/utils/daft.py,sha256=LGxxUtra7CqxcuZ9TuudrNvuyj_mygQfCpnYL9UIdP4,5650
191
194
  deltacat/utils/metrics.py,sha256=HYKyZSrtVLu8gXezg_TMNUKJp4h1WWI0VEzn0Xlzf-I,10778
192
195
  deltacat/utils/numpy.py,sha256=ZiGREobTVT6IZXgPxkSUpLJFN2Hn8KEZcrqybLDXCIA,2027
193
196
  deltacat/utils/pandas.py,sha256=GfwjYb8FUSEeoBdXZI1_NJkdjxPMbCCUhlyRfGbDkn8,9562
194
197
  deltacat/utils/performance.py,sha256=7ZLaMkS1ehPSIhT5uOQVBHvjC70iKHzoFquFo-KL0PI,645
195
- deltacat/utils/placement.py,sha256=S80CwD1eEK47lQNr0xTmF9kq092-z6lTTmOOBv8cW_o,11723
198
+ deltacat/utils/placement.py,sha256=Lj20fb-eq8rgMdm_M2MBMfDLwhDM1sS1nJj2DvIK56s,12060
196
199
  deltacat/utils/pyarrow.py,sha256=gYcoRhQoBoAFo69WNijMobrLGta4VASg8VarWPiB34Y,28979
197
200
  deltacat/utils/resources.py,sha256=Ax1OgLLbZI4oYpp4Ki27OLaST-7I-AJgZwU87FVfY8g,8253
198
201
  deltacat/utils/s3fs.py,sha256=PmUJ5Fm1WmD-_zp_M6yd9VbXvIoJuBeK6ApOdJJApLE,662
@@ -203,8 +206,8 @@ deltacat/utils/ray_utils/concurrency.py,sha256=JDVwMiQWrmuSlyCWAoiq9ctoJ0XADEfDD
203
206
  deltacat/utils/ray_utils/dataset.py,sha256=SIljK3UkSqQ6Ntit_iSiYt9yYjN_gGrCTX6_72XdQ3w,3244
204
207
  deltacat/utils/ray_utils/performance.py,sha256=d7JFM7vTXHzkGx9qNQcZzUWajnqINvYRwaM088_FpsE,464
205
208
  deltacat/utils/ray_utils/runtime.py,sha256=5eaBWTDm0IXVoc5Y6aacoVB-f0Mnv-K2ewyTSjHKHwM,5009
206
- deltacat-1.1.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
207
- deltacat-1.1.3.dist-info/METADATA,sha256=uj1xTijXxJlOZQy38MbY6Axj7cMjsT75xlKjWZPJyzw,1780
208
- deltacat-1.1.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
209
- deltacat-1.1.3.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
210
- deltacat-1.1.3.dist-info/RECORD,,
209
+ deltacat-1.1.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
210
+ deltacat-1.1.5.dist-info/METADATA,sha256=ZXriHPvPca0lz3LrEfynDq-u4dyxhGvhKaM3m9veiT0,1780
211
+ deltacat-1.1.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
212
+ deltacat-1.1.5.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
213
+ deltacat-1.1.5.dist-info/RECORD,,