deltacat 1.1.5__py3-none-any.whl → 1.1.7__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 +1 -1
- deltacat/aws/constants.py +21 -2
- deltacat/aws/s3u.py +107 -33
- deltacat/compute/compactor/model/round_completion_info.py +4 -0
- deltacat/compute/compactor_v2/compaction_session.py +51 -25
- deltacat/compute/compactor_v2/constants.py +12 -0
- deltacat/compute/compactor_v2/model/compaction_session.py +21 -0
- deltacat/compute/compactor_v2/steps/hash_bucket.py +6 -0
- deltacat/compute/compactor_v2/steps/merge.py +6 -0
- deltacat/compute/compactor_v2/utils/task_options.py +8 -2
- deltacat/storage/interface.py +10 -3
- deltacat/tests/aws/test_s3u.py +193 -0
- deltacat/tests/catalog/test_default_catalog_impl.py +2 -0
- deltacat/tests/compute/compact_partition_test_cases.py +61 -0
- deltacat/tests/compute/compactor_v2/test_compaction_session.py +2 -0
- deltacat/tests/compute/test_compact_partition_incremental.py +89 -32
- deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +21 -26
- deltacat/tests/compute/test_util_create_table_deltas_repo.py +45 -2
- deltacat/tests/local_deltacat_storage/__init__.py +38 -19
- deltacat/tests/utils/ray_utils/__init__.py +0 -0
- deltacat/tests/utils/ray_utils/test_concurrency.py +50 -0
- deltacat/tests/utils/test_resources.py +28 -0
- deltacat/utils/resources.py +45 -0
- {deltacat-1.1.5.dist-info → deltacat-1.1.7.dist-info}/METADATA +1 -1
- {deltacat-1.1.5.dist-info → deltacat-1.1.7.dist-info}/RECORD +28 -25
- {deltacat-1.1.5.dist-info → deltacat-1.1.7.dist-info}/LICENSE +0 -0
- {deltacat-1.1.5.dist-info → deltacat-1.1.7.dist-info}/WHEEL +0 -0
- {deltacat-1.1.5.dist-info → deltacat-1.1.7.dist-info}/top_level.txt +0 -0
@@ -37,6 +37,19 @@ from typing import Any, Callable, Dict, List, Optional, Set, Tuple
|
|
37
37
|
from deltacat.types.media import StorageType
|
38
38
|
from deltacat.storage import (
|
39
39
|
DeltaType,
|
40
|
+
DeltaLocator,
|
41
|
+
Partition,
|
42
|
+
PartitionLocator,
|
43
|
+
)
|
44
|
+
from deltacat.types.media import ContentType
|
45
|
+
from deltacat.compute.compactor.model.compact_partition_params import (
|
46
|
+
CompactPartitionParams,
|
47
|
+
)
|
48
|
+
from deltacat.utils.placement import (
|
49
|
+
PlacementGroupManager,
|
50
|
+
)
|
51
|
+
from deltacat.compute.compactor.model.compaction_session_audit_info import (
|
52
|
+
CompactionSessionAuditInfo,
|
40
53
|
)
|
41
54
|
|
42
55
|
DATABASE_FILE_PATH_KEY, DATABASE_FILE_PATH_VALUE = (
|
@@ -54,6 +67,7 @@ MODULE scoped fixtures
|
|
54
67
|
def setup_ray_cluster():
|
55
68
|
ray.init(local_mode=True, ignore_reinit_error=True)
|
56
69
|
yield
|
70
|
+
ray.shutdown()
|
57
71
|
|
58
72
|
|
59
73
|
@pytest.fixture(autouse=True, scope="module")
|
@@ -74,14 +88,14 @@ def cleanup_the_database_file_after_all_compaction_session_package_tests_complet
|
|
74
88
|
|
75
89
|
|
76
90
|
@pytest.fixture(scope="module")
|
77
|
-
def
|
91
|
+
def s3_resource(mock_aws_credential):
|
78
92
|
with mock_s3():
|
79
93
|
yield boto3.resource("s3")
|
80
94
|
|
81
95
|
|
82
96
|
@pytest.fixture(autouse=True, scope="module")
|
83
|
-
def setup_compaction_artifacts_s3_bucket(
|
84
|
-
|
97
|
+
def setup_compaction_artifacts_s3_bucket(s3_resource: ServiceResource):
|
98
|
+
s3_resource.create_bucket(
|
85
99
|
ACL="authenticated-read",
|
86
100
|
Bucket=TEST_S3_RCF_BUCKET_NAME,
|
87
101
|
)
|
@@ -172,7 +186,7 @@ def local_deltacat_storage_kwargs(request: pytest.FixtureRequest):
|
|
172
186
|
ids=[test_name for test_name in REBASE_THEN_INCREMENTAL_TEST_CASES],
|
173
187
|
)
|
174
188
|
def test_compact_partition_rebase_then_incremental(
|
175
|
-
|
189
|
+
s3_resource: ServiceResource,
|
176
190
|
local_deltacat_storage_kwargs: Dict[str, Any],
|
177
191
|
test_name: str,
|
178
192
|
primary_keys: Set[str],
|
@@ -196,25 +210,8 @@ def test_compact_partition_rebase_then_incremental(
|
|
196
210
|
benchmark: BenchmarkFixture,
|
197
211
|
):
|
198
212
|
import deltacat.tests.local_deltacat_storage as ds
|
199
|
-
from deltacat.types.media import ContentType
|
200
|
-
from deltacat.storage import (
|
201
|
-
DeltaLocator,
|
202
|
-
Partition,
|
203
|
-
PartitionLocator,
|
204
|
-
)
|
205
|
-
from deltacat.compute.compactor.model.compact_partition_params import (
|
206
|
-
CompactPartitionParams,
|
207
|
-
)
|
208
|
-
from deltacat.utils.placement import (
|
209
|
-
PlacementGroupManager,
|
210
|
-
)
|
211
|
-
from deltacat.compute.compactor.model.compaction_session_audit_info import (
|
212
|
-
CompactionSessionAuditInfo,
|
213
|
-
)
|
214
213
|
|
215
214
|
ds_mock_kwargs = local_deltacat_storage_kwargs
|
216
|
-
ray.shutdown()
|
217
|
-
ray.init(local_mode=True, ignore_reinit_error=True)
|
218
215
|
"""
|
219
216
|
REBASE
|
220
217
|
"""
|
@@ -280,7 +277,7 @@ def test_compact_partition_rebase_then_incremental(
|
|
280
277
|
# execute
|
281
278
|
rcf_file_s3_uri = benchmark(compact_partition_func, compact_partition_params)
|
282
279
|
compacted_delta_locator: DeltaLocator = get_compacted_delta_locator_from_rcf(
|
283
|
-
|
280
|
+
s3_resource, rcf_file_s3_uri
|
284
281
|
)
|
285
282
|
tables = ds.download_delta(
|
286
283
|
compacted_delta_locator, storage_type=StorageType.LOCAL, **ds_mock_kwargs
|
@@ -346,16 +343,14 @@ def test_compact_partition_rebase_then_incremental(
|
|
346
343
|
assert expected_terminal_exception_message in str(exc_info.value)
|
347
344
|
return
|
348
345
|
rcf_file_s3_uri = compact_partition_func(compact_partition_params)
|
349
|
-
round_completion_info = get_rcf(
|
346
|
+
round_completion_info = get_rcf(s3_resource, rcf_file_s3_uri)
|
350
347
|
compacted_delta_locator_incremental: DeltaLocator = (
|
351
348
|
round_completion_info.compacted_delta_locator
|
352
349
|
)
|
353
350
|
audit_bucket, audit_key = round_completion_info.compaction_audit_url.replace(
|
354
351
|
"s3://", ""
|
355
352
|
).split("/", 1)
|
356
|
-
compaction_audit_obj: dict = read_s3_contents(
|
357
|
-
setup_s3_resource, audit_bucket, audit_key
|
358
|
-
)
|
353
|
+
compaction_audit_obj: dict = read_s3_contents(s3_resource, audit_bucket, audit_key)
|
359
354
|
compaction_audit: CompactionSessionAuditInfo = CompactionSessionAuditInfo(
|
360
355
|
**compaction_audit_obj
|
361
356
|
)
|
@@ -19,6 +19,42 @@ from deltacat.tests.compute.test_util_common import (
|
|
19
19
|
create_destination_table,
|
20
20
|
create_rebase_table,
|
21
21
|
)
|
22
|
+
import logging
|
23
|
+
from deltacat import logs
|
24
|
+
|
25
|
+
logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
|
26
|
+
|
27
|
+
|
28
|
+
def _add_deltas_to_partition(
|
29
|
+
deltas_ingredients: List[Tuple[pa.Table, DeltaType, Optional[Dict[str, str]]]],
|
30
|
+
partition: Optional[Partition],
|
31
|
+
ds_mock_kwargs: Optional[Dict[str, Any]],
|
32
|
+
) -> List[Optional[Delta], int]:
|
33
|
+
import deltacat.tests.local_deltacat_storage as ds
|
34
|
+
|
35
|
+
all_deltas_length = 0
|
36
|
+
for (delta_data, delta_type, delete_parameters) in deltas_ingredients:
|
37
|
+
staged_delta: Delta = ds.stage_delta(
|
38
|
+
delta_data,
|
39
|
+
partition,
|
40
|
+
delta_type,
|
41
|
+
delete_parameters=delete_parameters,
|
42
|
+
**ds_mock_kwargs,
|
43
|
+
)
|
44
|
+
incremental_delta = ds.commit_delta(
|
45
|
+
staged_delta,
|
46
|
+
**ds_mock_kwargs,
|
47
|
+
)
|
48
|
+
all_deltas_length += len(delta_data) if delta_data else 0
|
49
|
+
return incremental_delta, all_deltas_length
|
50
|
+
|
51
|
+
|
52
|
+
def add_late_deltas_to_partition(
|
53
|
+
late_deltas: List[Tuple[pa.Table, DeltaType, Optional[Dict[str, str]]]],
|
54
|
+
source_partition: Optional[Partition],
|
55
|
+
ds_mock_kwargs: Optional[Dict[str, Any]],
|
56
|
+
) -> List[Optional[Delta], int]:
|
57
|
+
return _add_deltas_to_partition(late_deltas, source_partition, ds_mock_kwargs)
|
22
58
|
|
23
59
|
|
24
60
|
def create_incremental_deltas_on_source_table(
|
@@ -85,7 +121,7 @@ def create_src_w_deltas_destination_plus_destination(
|
|
85
121
|
partition_values: Optional[List[Any]],
|
86
122
|
ds_mock_kwargs: Optional[Dict[str, Any]],
|
87
123
|
simulate_is_inplace: bool = False,
|
88
|
-
) -> Tuple[Stream, Stream, Optional[Stream]]:
|
124
|
+
) -> Tuple[Stream, Stream, Optional[Stream], str, str, str]:
|
89
125
|
import deltacat.tests.local_deltacat_storage as ds
|
90
126
|
|
91
127
|
source_namespace, source_table_name, source_table_version = create_src_table(
|
@@ -137,7 +173,14 @@ def create_src_w_deltas_destination_plus_destination(
|
|
137
173
|
table_version=destination_table_version,
|
138
174
|
**ds_mock_kwargs,
|
139
175
|
)
|
140
|
-
return
|
176
|
+
return (
|
177
|
+
source_table_stream_after_committed,
|
178
|
+
destination_table_stream,
|
179
|
+
None,
|
180
|
+
source_namespace,
|
181
|
+
source_table_name,
|
182
|
+
source_table_version,
|
183
|
+
)
|
141
184
|
|
142
185
|
|
143
186
|
def create_src_w_deltas_destination_rebase_w_deltas_strategy(
|
@@ -271,9 +271,7 @@ def list_partition_deltas(
|
|
271
271
|
if not include_manifest:
|
272
272
|
current_delta.manifest = None
|
273
273
|
|
274
|
-
result.sort(
|
275
|
-
reverse=True if not ascending_order else False, key=lambda d: d.stream_position
|
276
|
-
)
|
274
|
+
result.sort(reverse=(not ascending_order), key=lambda d: d.stream_position)
|
277
275
|
return ListResult.of(result, None, None)
|
278
276
|
|
279
277
|
|
@@ -798,33 +796,57 @@ def stage_partition(
|
|
798
796
|
return partition
|
799
797
|
|
800
798
|
|
801
|
-
def commit_partition(
|
799
|
+
def commit_partition(
|
800
|
+
partition: Partition,
|
801
|
+
previous_partition: Optional[Partition] = None,
|
802
|
+
*args,
|
803
|
+
**kwargs,
|
804
|
+
) -> Partition:
|
802
805
|
cur, con = _get_sqlite3_cursor_con(kwargs)
|
803
|
-
pv_partition = get_partition(
|
806
|
+
pv_partition: Optional[Partition] = previous_partition or get_partition(
|
804
807
|
partition.stream_locator,
|
805
808
|
partition_values=partition.partition_values,
|
806
809
|
*args,
|
807
810
|
**kwargs,
|
808
811
|
)
|
809
|
-
|
810
|
-
# deprecate old and commit new one
|
812
|
+
# deprecate old partition and commit new one
|
811
813
|
if pv_partition:
|
812
814
|
pv_partition.state = CommitState.DEPRECATED
|
813
815
|
params = (json.dumps(pv_partition), pv_partition.locator.canonical_string())
|
814
816
|
cur.execute("UPDATE partitions SET value = ? WHERE locator = ?", params)
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
817
|
+
previous_partition_deltas = (
|
818
|
+
list_partition_deltas(
|
819
|
+
pv_partition, ascending_order=False, *args, **kwargs
|
820
|
+
).all_items()
|
821
|
+
or []
|
822
|
+
)
|
823
|
+
partition_deltas: Optional[List[Delta]] = (
|
824
|
+
list_partition_deltas(
|
825
|
+
partition, ascending_order=False, *args, **kwargs
|
826
|
+
).all_items()
|
827
|
+
or []
|
828
|
+
)
|
829
|
+
previous_partition_deltas_spos_gt: List[Delta] = [
|
830
|
+
delta
|
831
|
+
for delta in previous_partition_deltas
|
832
|
+
if delta.stream_position > partition_deltas[0].stream_position
|
833
|
+
]
|
834
|
+
# handle the case if the previous partition deltas have a greater stream position than the partition_delta
|
835
|
+
partition_deltas = previous_partition_deltas_spos_gt + partition_deltas
|
836
|
+
|
837
|
+
stream_position = (
|
838
|
+
partition_deltas[0].stream_position
|
839
|
+
if partition_deltas
|
840
|
+
else partition.stream_position
|
841
|
+
)
|
822
842
|
|
823
843
|
partition.state = CommitState.COMMITTED
|
824
844
|
partition.stream_position = stream_position
|
825
845
|
partition.previous_stream_position = (
|
826
846
|
pv_partition.stream_position if pv_partition else None
|
827
847
|
)
|
848
|
+
if partition_deltas:
|
849
|
+
partition.locator = partition_deltas[0].partition_locator
|
828
850
|
params = (json.dumps(partition), partition.locator.canonical_string())
|
829
851
|
cur.execute("UPDATE partitions SET value = ? WHERE locator = ?", params)
|
830
852
|
con.commit()
|
@@ -975,9 +997,8 @@ def stage_delta(
|
|
975
997
|
|
976
998
|
def commit_delta(delta: Delta, *args, **kwargs) -> Delta:
|
977
999
|
cur, con = _get_sqlite3_cursor_con(kwargs)
|
978
|
-
|
979
|
-
|
980
|
-
delta.locator.stream_position = current_time_ms()
|
1000
|
+
delta_stream_position: Optional[int] = delta.stream_position
|
1001
|
+
delta.locator.stream_position = delta_stream_position or current_time_ms()
|
981
1002
|
|
982
1003
|
params = (
|
983
1004
|
delta.locator.canonical_string(),
|
@@ -995,9 +1016,7 @@ def commit_delta(delta: Delta, *args, **kwargs) -> Delta:
|
|
995
1016
|
cur.execute(
|
996
1017
|
"UPDATE deltas SET partition_locator = ?, value = ? WHERE locator = ?", params
|
997
1018
|
)
|
998
|
-
|
999
1019
|
con.commit()
|
1000
|
-
|
1001
1020
|
return delta
|
1002
1021
|
|
1003
1022
|
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
from unittest import TestCase
|
2
|
+
|
3
|
+
import ray.util.state
|
4
|
+
from deltacat.utils.ray_utils.concurrency import invoke_parallel
|
5
|
+
import ray
|
6
|
+
import time
|
7
|
+
|
8
|
+
|
9
|
+
@ray.remote
|
10
|
+
def f(x):
|
11
|
+
return time.sleep(x)
|
12
|
+
|
13
|
+
|
14
|
+
class TestInvokeParallel(TestCase):
|
15
|
+
@classmethod
|
16
|
+
def setUpClass(cls):
|
17
|
+
super().setUpClass()
|
18
|
+
ray.init(local_mode=True, ignore_reinit_error=True)
|
19
|
+
|
20
|
+
def test_invoke_parallel_when_max_parallelism_is_list_size(self):
|
21
|
+
|
22
|
+
items = [1 for i in range(3)]
|
23
|
+
|
24
|
+
result = invoke_parallel(items=items, ray_task=f, max_parallelism=3)
|
25
|
+
|
26
|
+
self.assertEqual(3, len(result))
|
27
|
+
|
28
|
+
def test_invoke_parallel_when_max_parallelism_is_less_than_list_size(self):
|
29
|
+
@ray.remote
|
30
|
+
def f(x):
|
31
|
+
return x
|
32
|
+
|
33
|
+
items = [i for i in range(3)]
|
34
|
+
|
35
|
+
result = invoke_parallel(items=items, ray_task=f, max_parallelism=1)
|
36
|
+
|
37
|
+
self.assertEqual(3, len(result))
|
38
|
+
|
39
|
+
def test_invoke_parallel_with_options_provider(self):
|
40
|
+
|
41
|
+
items = [1 for i in range(1)]
|
42
|
+
|
43
|
+
result = invoke_parallel(
|
44
|
+
items=items,
|
45
|
+
ray_task=f,
|
46
|
+
max_parallelism=10,
|
47
|
+
options_provider=lambda x, y: {"memory": 1},
|
48
|
+
)
|
49
|
+
|
50
|
+
self.assertEqual(1, len(result))
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import unittest
|
2
2
|
from unittest import mock
|
3
3
|
import time
|
4
|
+
from multiprocessing import Pool
|
5
|
+
import platform
|
4
6
|
|
5
7
|
|
6
8
|
class TestGetCurrentClusterUtilization(unittest.TestCase):
|
@@ -70,3 +72,29 @@ class TestProcessUtilizationOverTimeRange(unittest.TestCase):
|
|
70
72
|
nu.schedule_callback(test_callback, 1)
|
71
73
|
time.sleep(3)
|
72
74
|
self.assertTrue(nu.test_field_set)
|
75
|
+
|
76
|
+
|
77
|
+
class TestTimeoutDecorator(unittest.TestCase):
|
78
|
+
from deltacat.utils.resources import timeout
|
79
|
+
|
80
|
+
@staticmethod
|
81
|
+
@timeout(2)
|
82
|
+
def something_that_runs_xs(x, *args, **kwargs):
|
83
|
+
time.sleep(x)
|
84
|
+
|
85
|
+
def test_timeout(self):
|
86
|
+
if platform.system() != "Windows":
|
87
|
+
self.assertRaises(
|
88
|
+
TimeoutError, lambda: self.something_that_runs_xs(3, test=10)
|
89
|
+
)
|
90
|
+
|
91
|
+
def test_sanity_in_multiprocess(self):
|
92
|
+
if platform.system() != "Windows":
|
93
|
+
# An alarm works per process
|
94
|
+
# https://pubs.opengroup.org/onlinepubs/9699919799/functions/alarm.html
|
95
|
+
with Pool(3) as p:
|
96
|
+
p.map(self.something_that_runs_xs, [1, 1.1, 1.2])
|
97
|
+
|
98
|
+
def test_sanity(self):
|
99
|
+
if platform.system() != "Windows":
|
100
|
+
self.something_that_runs_xs(1, test=10)
|
deltacat/utils/resources.py
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Allow classes to use self-referencing Type hints in Python 3.7.
|
2
2
|
from __future__ import annotations
|
3
3
|
|
4
|
+
import functools
|
5
|
+
import signal
|
4
6
|
from contextlib import AbstractContextManager
|
5
7
|
from types import TracebackType
|
6
8
|
import ray
|
@@ -230,3 +232,46 @@ class ProcessUtilizationOverTimeRange(AbstractContextManager):
|
|
230
232
|
continuous_thread = ScheduleThread()
|
231
233
|
continuous_thread.start()
|
232
234
|
return cease_continuous_run
|
235
|
+
|
236
|
+
|
237
|
+
def timeout(value_in_seconds: int):
|
238
|
+
"""
|
239
|
+
A decorator that will raise a TimeoutError if the decorated function takes longer
|
240
|
+
than the specified timeout.
|
241
|
+
|
242
|
+
Note: The decorator does not work in a multithreading env or on Windows platform.
|
243
|
+
Hence, the default behavior is same as executing a method without timeout set.
|
244
|
+
|
245
|
+
Also note: it is still the responsibility of the caller to clean up any resource leaks
|
246
|
+
during the execution of the underlying function.
|
247
|
+
"""
|
248
|
+
|
249
|
+
def _decorate(func):
|
250
|
+
@functools.wraps(func)
|
251
|
+
def wrapper(*args, **kwargs):
|
252
|
+
current_platform = platform.system()
|
253
|
+
|
254
|
+
def handler(signum, frame):
|
255
|
+
raise TimeoutError(
|
256
|
+
f"Timeout occurred on method: {func.__name__},"
|
257
|
+
f" args={args}, kwargs={kwargs}"
|
258
|
+
)
|
259
|
+
|
260
|
+
if current_platform == "Windows":
|
261
|
+
return func(*args, **kwargs)
|
262
|
+
|
263
|
+
old_handler = signal.signal(signal.SIGALRM, handler)
|
264
|
+
# An alarm works per process.
|
265
|
+
# https://pubs.opengroup.org/onlinepubs/9699919799/functions/alarm.html
|
266
|
+
signal.alarm(value_in_seconds)
|
267
|
+
try:
|
268
|
+
return func(*args, **kwargs)
|
269
|
+
finally:
|
270
|
+
# reset the SIGALRM handler
|
271
|
+
signal.signal(signal.SIGALRM, old_handler)
|
272
|
+
# cancel the alarm
|
273
|
+
signal.alarm(0)
|
274
|
+
|
275
|
+
return wrapper
|
276
|
+
|
277
|
+
return _decorate
|
@@ -1,11 +1,11 @@
|
|
1
|
-
deltacat/__init__.py,sha256=
|
1
|
+
deltacat/__init__.py,sha256=2IToNRi3HWEX5V2CHAd0xKS3PWd580iaaGUmJsj_IYU,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=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=
|
8
|
-
deltacat/aws/s3u.py,sha256=
|
7
|
+
deltacat/aws/constants.py,sha256=5W38VZWlaVl_TIKBNAN1tx7cxyzNQO2cSwtkyc1wRAs,1051
|
8
|
+
deltacat/aws/s3u.py,sha256=19VFR7fc3MDqrcv9n9GLYZQNTGwYHnQO-5Dk8nX5om8,27738
|
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
|
@@ -36,7 +36,7 @@ deltacat/compute/compactor/model/materialize_result.py,sha256=Ngwg1khN55FK2iBKPn
|
|
36
36
|
deltacat/compute/compactor/model/primary_key_index.py,sha256=9EYoxauzXeEY_cYAVSCqDMXps8wEAPSXWk-6_LLNwBU,10449
|
37
37
|
deltacat/compute/compactor/model/pyarrow_write_result.py,sha256=WYIa0DRcyaemR6yUS8_8RLQ2voTmCVNFUL99qxPmt70,1324
|
38
38
|
deltacat/compute/compactor/model/repartition_result.py,sha256=HZy7Ls6toI4rXgVW2yIKMIkVS8o9kxvlIJPvo5_pCxA,140
|
39
|
-
deltacat/compute/compactor/model/round_completion_info.py,sha256=
|
39
|
+
deltacat/compute/compactor/model/round_completion_info.py,sha256=SGR6WeGBGwRNDz6KsSqenlGvo0GYtwbPMnvpm5un0wM,5115
|
40
40
|
deltacat/compute/compactor/model/table_object_store.py,sha256=7BsBsuV8TBudGzy_NfQc7QyzLIP0EXf04DvqaOJNeJE,1487
|
41
41
|
deltacat/compute/compactor/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
42
|
deltacat/compute/compactor/steps/dedupe.py,sha256=iAPRIeMdGxNxaCy2QC_XzRWiNDVkKbkplJY0DVoWwsE,10190
|
@@ -50,8 +50,8 @@ deltacat/compute/compactor/utils/round_completion_file.py,sha256=-j6ZzhJBDrJ6Vz6
|
|
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=
|
54
|
-
deltacat/compute/compactor_v2/constants.py,sha256=
|
53
|
+
deltacat/compute/compactor_v2/compaction_session.py,sha256=ecCz0xsM0OB9GnzfogETOT769W61ejm3izL0BHXpqc8,27574
|
54
|
+
deltacat/compute/compactor_v2/constants.py,sha256=0vwXh66eIx8nGgLoEnlXThiLNL1U-xG_Mw_q_lD4ptQ,2564
|
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
|
@@ -59,14 +59,15 @@ deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py,sha256=
|
|
59
59
|
deltacat/compute/compactor_v2/deletes/model.py,sha256=kW7kfRe4jVNMnsWQrl0nyKdDpvB9mbJND-MVzAajbAI,558
|
60
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/compaction_session.py,sha256=S0ejfZBBwG_fUcg06MjTUx2t7gwZVS8y74DMehqo6sk,579
|
62
63
|
deltacat/compute/compactor_v2/model/hash_bucket_input.py,sha256=iJy8kLi1dIpFIyfoAjkaAtZvg8Np1z7BsUNGAcWfFm4,3042
|
63
64
|
deltacat/compute/compactor_v2/model/hash_bucket_result.py,sha256=EsY9BPPywhmxlcLKn3kGWzAX4s4BTR2vYyPUB-wAEOc,309
|
64
65
|
deltacat/compute/compactor_v2/model/merge_file_group.py,sha256=1o86t9lc3K6ZvtViVO1SVljCj6f0B3MfB3hqtGm2S0s,7410
|
65
66
|
deltacat/compute/compactor_v2/model/merge_input.py,sha256=ITRBR8gMbJpeRkZhRaVzGEEk3F2WqS2LwEkjd5zcaMQ,5416
|
66
67
|
deltacat/compute/compactor_v2/model/merge_result.py,sha256=_IZTCStpb4UKiRCJYA3g6EhAqjrw0t9vmoDAN8kIK-Y,436
|
67
68
|
deltacat/compute/compactor_v2/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
|
-
deltacat/compute/compactor_v2/steps/hash_bucket.py,sha256=
|
69
|
-
deltacat/compute/compactor_v2/steps/merge.py,sha256=
|
69
|
+
deltacat/compute/compactor_v2/steps/hash_bucket.py,sha256=ftALKqMaF9YUcwDLMgie00_wYh2r1QIywbHHHxCjXlk,6852
|
70
|
+
deltacat/compute/compactor_v2/steps/merge.py,sha256=wl7noSryctmAlYKbwszEViYKYGlIDKgFHKGgm6VREMQ,21880
|
70
71
|
deltacat/compute/compactor_v2/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
72
|
deltacat/compute/compactor_v2/utils/content_type_params.py,sha256=rNKZisxGrLQOkwX8eHUQiFoTR1V-E66pMqWigtrs618,2156
|
72
73
|
deltacat/compute/compactor_v2/utils/dedupe.py,sha256=62tFCY2iRP7I3-45GCIYs6_SJsQl8C5lBEr8gbNfbsw,1932
|
@@ -74,7 +75,7 @@ deltacat/compute/compactor_v2/utils/delta.py,sha256=8hjkDeIIkSX-gAQ2utQSp2sZcO2t
|
|
74
75
|
deltacat/compute/compactor_v2/utils/io.py,sha256=autXlE3uHICdCCuJoS7mfdeJbRRiz2_xlz-3izlccB4,5264
|
75
76
|
deltacat/compute/compactor_v2/utils/merge.py,sha256=hK4Y7acrtgfvWWTz-fAGznEg6qn6dBYu8blQUQVHhs0,5244
|
76
77
|
deltacat/compute/compactor_v2/utils/primary_key_index.py,sha256=MAscmL35WfwN7Is72aFlD_cGhxtZgjRwwR5kS9Yn2uU,11393
|
77
|
-
deltacat/compute/compactor_v2/utils/task_options.py,sha256=
|
78
|
+
deltacat/compute/compactor_v2/utils/task_options.py,sha256=kxbedQ9x7BCpr9ltUGzof7XcmTfpvc2_WPZvMBl6yCo,14285
|
78
79
|
deltacat/compute/merge_on_read/__init__.py,sha256=ckbgngmqPjYBYz_NySsR1vNTOb_hNpeL1sYkZKvBI9M,214
|
79
80
|
deltacat/compute/merge_on_read/daft.py,sha256=1oC38u5ig_aTrq7EzyWBo8Ui54rb6yERYMk-vEFbpxM,1400
|
80
81
|
deltacat/compute/merge_on_read/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -119,7 +120,7 @@ deltacat/io/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
120
|
deltacat/io/aws/redshift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
121
|
deltacat/io/aws/redshift/redshift_datasource.py,sha256=X183O4tgBqtaZOSFmMFvp-9mv8NX5kGvRvX0eoSX8rA,22599
|
121
122
|
deltacat/storage/__init__.py,sha256=TeKB48D7xDxIn1EvtqxYk4LSzPk0_aS6Gzxh2wVg3XM,1561
|
122
|
-
deltacat/storage/interface.py,sha256=
|
123
|
+
deltacat/storage/interface.py,sha256=PL6gPyFeyYPwdcqQCGbC2OAGapDKG00fkQ7iTiOcRi4,21913
|
123
124
|
deltacat/storage/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
125
|
deltacat/storage/model/delete_parameters.py,sha256=yF3_gdDiDkMAuLJPlBr4Es25SYijzEKGxArwgXCrNwI,1563
|
125
126
|
deltacat/storage/model/delta.py,sha256=87F3U7r-EVkHtuIFRNQB8b9qcZ-C3FGosCXGGZUl67g,14857
|
@@ -136,25 +137,25 @@ deltacat/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
137
|
deltacat/tests/test_logs.py,sha256=6BEMw8VApFg2msFwCAVosz8NWJYATtX5furHyz8UluM,3828
|
137
138
|
deltacat/tests/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
139
|
deltacat/tests/aws/test_clients.py,sha256=23GMWfz27WWBDXSqphG9mfputsyS7j3I5P_HRk4YoKE,3790
|
139
|
-
deltacat/tests/aws/test_s3u.py,sha256=
|
140
|
+
deltacat/tests/aws/test_s3u.py,sha256=VThBqCe9KIfETax7ylpu7gtOCmkbMbwx7MPjBCj9SJ4,7805
|
140
141
|
deltacat/tests/catalog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
141
|
-
deltacat/tests/catalog/test_default_catalog_impl.py,sha256=
|
142
|
+
deltacat/tests/catalog/test_default_catalog_impl.py,sha256=2l5uwmtLlUJ9yH1LDggtj81fa-pHqbE0-VBt6G4Hyc0,3180
|
142
143
|
deltacat/tests/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
143
144
|
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=
|
145
|
-
deltacat/tests/compute/test_compact_partition_incremental.py,sha256=
|
145
|
+
deltacat/tests/compute/compact_partition_test_cases.py,sha256=IzG8aITqlX5dJqVIiihmKyQlLKolQH7GacKsebc6qRk,25061
|
146
|
+
deltacat/tests/compute/test_compact_partition_incremental.py,sha256=vH2z9F18QdjpQmNKTUk4IIrwRC5Uj7z41Ox7q1rFxZU,13995
|
146
147
|
deltacat/tests/compute/test_compact_partition_params.py,sha256=Dm5eLyHo8oGMeO3XBbpj1rZqHtPZ1hAB7z2qvzc4Lxk,8497
|
147
|
-
deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=
|
148
|
+
deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py,sha256=NvXjgrYAB5zq_SzwjYMYwsTqseAMPNlDjaA6LEBJRbg,14159
|
148
149
|
deltacat/tests/compute/test_util_common.py,sha256=jGc862Rv1gf51HN_Dl9v5gvhj4bnwLidurz9Z8wWJZ0,6066
|
149
150
|
deltacat/tests/compute/test_util_constant.py,sha256=4o-W3E7r7jhFl1A3OFLLrdKnwcF46zx4lEIDY8ONJ3c,929
|
150
|
-
deltacat/tests/compute/test_util_create_table_deltas_repo.py,sha256=
|
151
|
+
deltacat/tests/compute/test_util_create_table_deltas_repo.py,sha256=0iZqcCqJsmQPMe4YW5mSXYZnXt3OU-EVTS7DD0gxbss,8992
|
151
152
|
deltacat/tests/compute/compactor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
152
153
|
deltacat/tests/compute/compactor/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
154
|
deltacat/tests/compute/compactor/steps/test_repartition.py,sha256=0uRguPEKeLSYs746Jv8io-HZMWdyXNcOMBu8GO2mA0M,9305
|
154
155
|
deltacat/tests/compute/compactor/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
155
156
|
deltacat/tests/compute/compactor/utils/test_io.py,sha256=st5mlU4cVU-eQl7B4mvPgNA3izuNwbVawYOp-NcoyrI,4326
|
156
157
|
deltacat/tests/compute/compactor_v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
157
|
-
deltacat/tests/compute/compactor_v2/test_compaction_session.py,sha256=
|
158
|
+
deltacat/tests/compute/compactor_v2/test_compaction_session.py,sha256=xubn1WYSX95oP5HKRm7bFu85z7TOQtNKFbdA3t4VZFQ,3375
|
158
159
|
deltacat/tests/compute/compactor_v2/test_hashlib.py,sha256=8csF2hFWtBvY2MbX3-6iphCsVXxRp0zP1NTnKhfdmkg,328
|
159
160
|
deltacat/tests/compute/compactor_v2/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
161
|
deltacat/tests/compute/compactor_v2/utils/test_task_options.py,sha256=4fc5MJTLm3hFlFHK_-5MfyfzeZtOo8D2kBqDE2b8lh4,862
|
@@ -165,7 +166,7 @@ deltacat/tests/io/test_memcached_object_store.py,sha256=25SB5xTMAG0HKwZwsDLhMreJ
|
|
165
166
|
deltacat/tests/io/test_ray_plasma_object_store.py,sha256=-wJZP6lRtEOogR25wjEiIBGz_lpvWVihwlZ5GqandZU,1911
|
166
167
|
deltacat/tests/io/test_redis_object_store.py,sha256=sZrXrYjkw8u_XrvFilhBbLc8PPnZiuMKa1_Bt9ka5qs,3838
|
167
168
|
deltacat/tests/io/test_s3_object_store.py,sha256=4b7PYEfQJnYGUz6fcLFWVVyRHTlH_yd8CIaCv9l33Gg,1900
|
168
|
-
deltacat/tests/local_deltacat_storage/__init__.py,sha256=
|
169
|
+
deltacat/tests/local_deltacat_storage/__init__.py,sha256=JsngJj0th_JFVCPEH-5MVJ6VhPvcWASB_71eIt6uVGQ,36316
|
169
170
|
deltacat/tests/stats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
171
|
deltacat/tests/stats/test_intervals.py,sha256=S92DgkALQ1WmbLWcxtvS7RlVGvL-XoPJKUUbkdn9_CQ,1955
|
171
172
|
deltacat/tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -180,8 +181,10 @@ deltacat/tests/utils/test_metrics.py,sha256=Ym9nOz1EtB180pLmvugihj1sDTNDMb5opIjj
|
|
180
181
|
deltacat/tests/utils/test_placement.py,sha256=g61wVOMkHe4YJeR9Oxg_BOVQ6bhHHbC3IBYv8YhUu94,597
|
181
182
|
deltacat/tests/utils/test_pyarrow.py,sha256=eZAuYp9MUf8lmpIilH57JkURuNsTGZ3IAGC4Gm5hdrM,17307
|
182
183
|
deltacat/tests/utils/test_record_batch_tables.py,sha256=AkG1WyljQmjnl-AxhbFWyo5LnMIKRyLScfgC2B_ES-s,11321
|
183
|
-
deltacat/tests/utils/test_resources.py,sha256=
|
184
|
+
deltacat/tests/utils/test_resources.py,sha256=0ikhkK2kml90NHnWDjFiLQeoFF2giVfW0R6urfpAaAs,3443
|
184
185
|
deltacat/tests/utils/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
186
|
+
deltacat/tests/utils/ray_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
187
|
+
deltacat/tests/utils/ray_utils/test_concurrency.py,sha256=TjZpX0cjMDEIS79p_--j_BfT0zXKNkTLY1ZzNokBTs0,1211
|
185
188
|
deltacat/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
186
189
|
deltacat/types/media.py,sha256=7_QRU6NbjmJk0GLAn_Km6ja8RE5G3V8jvLfUXqnjnqU,2320
|
187
190
|
deltacat/types/partial_download.py,sha256=9BJ5b0DHyWWeV7wMZjOfYoeH_iil_bjZ9b_WMpUzvHs,2516
|
@@ -197,7 +200,7 @@ deltacat/utils/pandas.py,sha256=GfwjYb8FUSEeoBdXZI1_NJkdjxPMbCCUhlyRfGbDkn8,9562
|
|
197
200
|
deltacat/utils/performance.py,sha256=7ZLaMkS1ehPSIhT5uOQVBHvjC70iKHzoFquFo-KL0PI,645
|
198
201
|
deltacat/utils/placement.py,sha256=Lj20fb-eq8rgMdm_M2MBMfDLwhDM1sS1nJj2DvIK56s,12060
|
199
202
|
deltacat/utils/pyarrow.py,sha256=gYcoRhQoBoAFo69WNijMobrLGta4VASg8VarWPiB34Y,28979
|
200
|
-
deltacat/utils/resources.py,sha256=
|
203
|
+
deltacat/utils/resources.py,sha256=t5vEPisKfqGoAE8jF5Mm7yGKXkiLDVg5OlxPOIR7j-I,9757
|
201
204
|
deltacat/utils/s3fs.py,sha256=PmUJ5Fm1WmD-_zp_M6yd9VbXvIoJuBeK6ApOdJJApLE,662
|
202
205
|
deltacat/utils/schema.py,sha256=m4Wm4ZQcpttzOUxex4dVneGlHy1_E36HspTcjNYzvVM,1564
|
203
206
|
deltacat/utils/ray_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -206,8 +209,8 @@ deltacat/utils/ray_utils/concurrency.py,sha256=JDVwMiQWrmuSlyCWAoiq9ctoJ0XADEfDD
|
|
206
209
|
deltacat/utils/ray_utils/dataset.py,sha256=SIljK3UkSqQ6Ntit_iSiYt9yYjN_gGrCTX6_72XdQ3w,3244
|
207
210
|
deltacat/utils/ray_utils/performance.py,sha256=d7JFM7vTXHzkGx9qNQcZzUWajnqINvYRwaM088_FpsE,464
|
208
211
|
deltacat/utils/ray_utils/runtime.py,sha256=5eaBWTDm0IXVoc5Y6aacoVB-f0Mnv-K2ewyTSjHKHwM,5009
|
209
|
-
deltacat-1.1.
|
210
|
-
deltacat-1.1.
|
211
|
-
deltacat-1.1.
|
212
|
-
deltacat-1.1.
|
213
|
-
deltacat-1.1.
|
212
|
+
deltacat-1.1.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
213
|
+
deltacat-1.1.7.dist-info/METADATA,sha256=xGnSoie5x3xr1PBpTT3hNiyq0QrkqevK-bH2Hr1PTro,1780
|
214
|
+
deltacat-1.1.7.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
215
|
+
deltacat-1.1.7.dist-info/top_level.txt,sha256=RWdIcid4Bv2i2ozLVh-70kJpyB61xEKXod9XXGpiono,9
|
216
|
+
deltacat-1.1.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|