palimpzest 0.7.6__py3-none-any.whl → 0.7.8__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.
- palimpzest/constants.py +113 -75
- palimpzest/core/data/dataclasses.py +55 -38
- palimpzest/core/elements/index.py +5 -15
- palimpzest/core/elements/records.py +1 -1
- palimpzest/prompts/prompt_factory.py +1 -1
- palimpzest/query/execution/all_sample_execution_strategy.py +216 -0
- palimpzest/query/execution/execution_strategy.py +4 -4
- palimpzest/query/execution/execution_strategy_type.py +7 -1
- palimpzest/query/execution/mab_execution_strategy.py +184 -72
- palimpzest/query/execution/parallel_execution_strategy.py +182 -15
- palimpzest/query/execution/single_threaded_execution_strategy.py +21 -21
- palimpzest/query/generators/api_client_factory.py +6 -7
- palimpzest/query/generators/generators.py +5 -8
- palimpzest/query/operators/aggregate.py +4 -3
- palimpzest/query/operators/convert.py +1 -1
- palimpzest/query/operators/filter.py +1 -1
- palimpzest/query/operators/limit.py +1 -1
- palimpzest/query/operators/map.py +1 -1
- palimpzest/query/operators/physical.py +8 -4
- palimpzest/query/operators/project.py +1 -1
- palimpzest/query/operators/retrieve.py +7 -23
- palimpzest/query/operators/scan.py +1 -1
- palimpzest/query/optimizer/cost_model.py +54 -62
- palimpzest/query/optimizer/optimizer.py +2 -6
- palimpzest/query/optimizer/plan.py +4 -4
- palimpzest/query/optimizer/primitives.py +1 -1
- palimpzest/query/optimizer/rules.py +8 -26
- palimpzest/query/optimizer/tasks.py +3 -3
- palimpzest/query/processor/processing_strategy_type.py +2 -2
- palimpzest/query/processor/sentinel_processor.py +0 -2
- palimpzest/sets.py +2 -3
- palimpzest/utils/generation_helpers.py +1 -1
- palimpzest/utils/model_helpers.py +27 -9
- palimpzest/utils/progress.py +81 -72
- {palimpzest-0.7.6.dist-info → palimpzest-0.7.8.dist-info}/METADATA +4 -2
- {palimpzest-0.7.6.dist-info → palimpzest-0.7.8.dist-info}/RECORD +39 -38
- {palimpzest-0.7.6.dist-info → palimpzest-0.7.8.dist-info}/WHEEL +1 -1
- {palimpzest-0.7.6.dist-info → palimpzest-0.7.8.dist-info}/licenses/LICENSE +0 -0
- {palimpzest-0.7.6.dist-info → palimpzest-0.7.8.dist-info}/top_level.txt +0 -0
palimpzest/utils/progress.py
CHANGED
|
@@ -81,21 +81,21 @@ class ProgressManager(ABC):
|
|
|
81
81
|
expand=True, # Use full width
|
|
82
82
|
)
|
|
83
83
|
|
|
84
|
-
# initialize mapping from
|
|
85
|
-
self.
|
|
84
|
+
# initialize mapping from full_op_id --> ProgressStats
|
|
85
|
+
self.full_op_id_to_stats: dict[str, ProgressStats] = {}
|
|
86
86
|
|
|
87
|
-
# initialize mapping from
|
|
88
|
-
self.
|
|
87
|
+
# initialize mapping from full_op_id --> task
|
|
88
|
+
self.full_op_id_to_task = {}
|
|
89
89
|
|
|
90
90
|
# initialize start time
|
|
91
91
|
self.start_time = None
|
|
92
92
|
|
|
93
|
-
# create mapping from
|
|
94
|
-
self.
|
|
93
|
+
# create mapping from full_op_id --> next_op
|
|
94
|
+
self.full_op_id_to_next_op: dict[str, PhysicalOperator] = {}
|
|
95
95
|
for op_idx, op in enumerate(plan.operators):
|
|
96
|
-
|
|
96
|
+
full_op_id = op.get_full_op_id()
|
|
97
97
|
next_op = plan.operators[op_idx + 1] if op_idx + 1 < len(plan.operators) else None
|
|
98
|
-
self.
|
|
98
|
+
self.full_op_id_to_next_op[full_op_id] = next_op
|
|
99
99
|
|
|
100
100
|
# compute the total number of inputs to be processed by the plan
|
|
101
101
|
datareader_len = len(plan.operators[0].datareader)
|
|
@@ -104,8 +104,7 @@ class ProgressManager(ABC):
|
|
|
104
104
|
# add a task to the progress manager for each operator in the plan
|
|
105
105
|
for op in plan.operators:
|
|
106
106
|
# get the op id and a short string representation of the op; (str(op) is too long)
|
|
107
|
-
|
|
108
|
-
op_str = f"{op.op_name()} ({op_id})"
|
|
107
|
+
op_str = f"{op.op_name()} ({op.get_op_id()})"
|
|
109
108
|
|
|
110
109
|
# update the `total` if we encounter an AggregateOp or LimitScanOp
|
|
111
110
|
if isinstance(op, AggregateOp):
|
|
@@ -113,20 +112,20 @@ class ProgressManager(ABC):
|
|
|
113
112
|
elif isinstance(op, LimitScanOp):
|
|
114
113
|
total = op.limit
|
|
115
114
|
|
|
116
|
-
self.add_task(
|
|
115
|
+
self.add_task(op.get_full_op_id(), op_str, total)
|
|
117
116
|
|
|
118
|
-
def get_task_total(self,
|
|
117
|
+
def get_task_total(self, full_op_id: str) -> int:
|
|
119
118
|
"""Return the current total value for the given task."""
|
|
120
|
-
task = self.
|
|
119
|
+
task = self.full_op_id_to_task[full_op_id]
|
|
121
120
|
return self.progress._tasks[task].total
|
|
122
121
|
|
|
123
|
-
def get_task_description(self,
|
|
122
|
+
def get_task_description(self, full_op_id: str) -> str:
|
|
124
123
|
"""Return the current description for the given task."""
|
|
125
|
-
task = self.
|
|
124
|
+
task = self.full_op_id_to_task[full_op_id]
|
|
126
125
|
return self.progress._tasks[task].description
|
|
127
126
|
|
|
128
127
|
@abstractmethod
|
|
129
|
-
def add_task(self,
|
|
128
|
+
def add_task(self, full_op_id: str, op_str: str, total: int):
|
|
130
129
|
"""Initialize progress tracking for operator execution with total items"""
|
|
131
130
|
pass
|
|
132
131
|
|
|
@@ -136,7 +135,7 @@ class ProgressManager(ABC):
|
|
|
136
135
|
pass
|
|
137
136
|
|
|
138
137
|
@abstractmethod
|
|
139
|
-
def incr(self,
|
|
138
|
+
def incr(self, full_op_id: str, num_outputs: int = 1, display_text: str | None = None, **kwargs):
|
|
140
139
|
"""
|
|
141
140
|
Advance the progress bar for the given operator by one. Modify the downstream operators'
|
|
142
141
|
progress bar `total` to reflect the number of outputs produced by this operator.
|
|
@@ -156,16 +155,6 @@ class ProgressManager(ABC):
|
|
|
156
155
|
"""Clean up and finalize progress tracking"""
|
|
157
156
|
pass
|
|
158
157
|
|
|
159
|
-
def update_stats(self, op_id: str, **kwargs):
|
|
160
|
-
"""Update progress statistics"""
|
|
161
|
-
for key, value in kwargs.items():
|
|
162
|
-
if hasattr(self.op_id_to_stats[op_id], key):
|
|
163
|
-
if key != "total_cost":
|
|
164
|
-
setattr(self.op_id_to_stats[op_id], key, value)
|
|
165
|
-
else:
|
|
166
|
-
self.op_id_to_stats[op_id].total_cost += value
|
|
167
|
-
self.op_id_to_stats[op_id].memory_usage_mb = get_memory_usage()
|
|
168
|
-
|
|
169
158
|
|
|
170
159
|
class MockProgressManager(ProgressManager):
|
|
171
160
|
"""Mock progress manager for testing purposes"""
|
|
@@ -173,13 +162,13 @@ class MockProgressManager(ProgressManager):
|
|
|
173
162
|
def __init__(self, plan: PhysicalPlan | SentinelPlan, num_samples: int | None = None):
|
|
174
163
|
pass
|
|
175
164
|
|
|
176
|
-
def add_task(self,
|
|
165
|
+
def add_task(self, full_op_id: str, op_str: str, total: int):
|
|
177
166
|
pass
|
|
178
167
|
|
|
179
168
|
def start(self):
|
|
180
169
|
pass
|
|
181
170
|
|
|
182
|
-
def incr(self,
|
|
171
|
+
def incr(self, full_op_id: str, num_outputs: int = 1, display_text: str | None = None, **kwargs):
|
|
183
172
|
pass
|
|
184
173
|
|
|
185
174
|
def finish(self):
|
|
@@ -192,7 +181,7 @@ class PZProgressManager(ProgressManager):
|
|
|
192
181
|
super().__init__(plan, num_samples)
|
|
193
182
|
self.console = Console()
|
|
194
183
|
|
|
195
|
-
def add_task(self,
|
|
184
|
+
def add_task(self, full_op_id: str, op_str: str, total: int):
|
|
196
185
|
"""Add a new task to the progress bar"""
|
|
197
186
|
task = self.progress.add_task(
|
|
198
187
|
f"[blue]{op_str}",
|
|
@@ -205,10 +194,10 @@ class PZProgressManager(ProgressManager):
|
|
|
205
194
|
)
|
|
206
195
|
|
|
207
196
|
# store the mapping of operator ID to task ID
|
|
208
|
-
self.
|
|
197
|
+
self.full_op_id_to_task[full_op_id] = task
|
|
209
198
|
|
|
210
199
|
# initialize the stats for this operation
|
|
211
|
-
self.
|
|
200
|
+
self.full_op_id_to_stats[full_op_id] = ProgressStats(start_time=time.time())
|
|
212
201
|
|
|
213
202
|
def start(self):
|
|
214
203
|
# print a newline before starting to separate from previous output
|
|
@@ -220,41 +209,41 @@ class PZProgressManager(ProgressManager):
|
|
|
220
209
|
# start progress bar
|
|
221
210
|
self.progress.start()
|
|
222
211
|
|
|
223
|
-
def incr(self,
|
|
212
|
+
def incr(self, full_op_id: str, num_outputs: int = 1, display_text: str | None = None, **kwargs):
|
|
224
213
|
# get the task for the given operation
|
|
225
|
-
task = self.
|
|
214
|
+
task = self.full_op_id_to_task.get(full_op_id)
|
|
226
215
|
|
|
227
216
|
# update statistics with any additional keyword arguments
|
|
228
217
|
if kwargs != {}:
|
|
229
|
-
self.update_stats(
|
|
218
|
+
self.update_stats(full_op_id, **kwargs)
|
|
230
219
|
|
|
231
220
|
# update progress bar and recent text in one update
|
|
232
221
|
if display_text is not None:
|
|
233
|
-
self.
|
|
222
|
+
self.full_op_id_to_stats[full_op_id].recent_text = display_text
|
|
234
223
|
|
|
235
224
|
# if num_outputs is not 1, update the downstream operators' progress bar total for any
|
|
236
225
|
# operator which is not an AggregateOp or LimitScanOp
|
|
237
226
|
delta = num_outputs - 1
|
|
238
227
|
if delta != 0:
|
|
239
|
-
next_op = self.
|
|
228
|
+
next_op = self.full_op_id_to_next_op[full_op_id]
|
|
240
229
|
while next_op is not None:
|
|
241
230
|
if not isinstance(next_op, (AggregateOp, LimitScanOp)):
|
|
242
|
-
|
|
243
|
-
next_task = self.
|
|
244
|
-
self.progress.update(next_task, total=self.get_task_total(
|
|
231
|
+
next_full_op_id = next_op.get_full_op_id()
|
|
232
|
+
next_task = self.full_op_id_to_task[next_full_op_id]
|
|
233
|
+
self.progress.update(next_task, total=self.get_task_total(next_full_op_id) + delta)
|
|
245
234
|
|
|
246
|
-
next_op = self.
|
|
235
|
+
next_op = self.full_op_id_to_next_op[next_full_op_id]
|
|
247
236
|
|
|
248
237
|
# advance the progress bar for this task
|
|
249
238
|
self.progress.update(
|
|
250
239
|
task,
|
|
251
240
|
advance=1,
|
|
252
|
-
description=f"[bold blue]{self.get_task_description(
|
|
253
|
-
cost=self.
|
|
254
|
-
success=self.
|
|
255
|
-
failed=self.
|
|
241
|
+
description=f"[bold blue]{self.get_task_description(full_op_id)}",
|
|
242
|
+
cost=self.full_op_id_to_stats[full_op_id].total_cost,
|
|
243
|
+
success=self.full_op_id_to_stats[full_op_id].success_count,
|
|
244
|
+
failed=self.full_op_id_to_stats[full_op_id].failure_count,
|
|
256
245
|
memory=get_memory_usage(),
|
|
257
|
-
recent=f"{self.
|
|
246
|
+
recent=f"{self.full_op_id_to_stats[full_op_id].recent_text}" if display_text is not None else "",
|
|
258
247
|
refresh=True,
|
|
259
248
|
)
|
|
260
249
|
|
|
@@ -262,15 +251,25 @@ class PZProgressManager(ProgressManager):
|
|
|
262
251
|
self.progress.stop()
|
|
263
252
|
|
|
264
253
|
# compute total cost, success, and failure
|
|
265
|
-
total_cost = sum(stats.total_cost for stats in self.
|
|
266
|
-
# success_count = sum(stats.success_count for stats in self.
|
|
267
|
-
# failure_count = sum(stats.failure_count for stats in self.
|
|
254
|
+
total_cost = sum(stats.total_cost for stats in self.full_op_id_to_stats.values())
|
|
255
|
+
# success_count = sum(stats.success_count for stats in self.full_op_id_to_stats.values())
|
|
256
|
+
# failure_count = sum(stats.failure_count for stats in self.full_op_id_to_stats.values())
|
|
268
257
|
|
|
269
258
|
# Print final stats on new lines after progress display
|
|
270
259
|
print(f"Total time: {time.time() - self.start_time:.2f}s")
|
|
271
260
|
print(f"Total cost: ${total_cost:.4f}")
|
|
272
261
|
# print(f"Success rate: {success_count}/{success_count + failure_count}")
|
|
273
262
|
|
|
263
|
+
def update_stats(self, full_op_id: str, **kwargs):
|
|
264
|
+
"""Update progress statistics"""
|
|
265
|
+
for key, value in kwargs.items():
|
|
266
|
+
if hasattr(self.full_op_id_to_stats[full_op_id], key):
|
|
267
|
+
if key != "total_cost":
|
|
268
|
+
setattr(self.full_op_id_to_stats[full_op_id], key, value)
|
|
269
|
+
else:
|
|
270
|
+
self.full_op_id_to_stats[full_op_id].total_cost += value
|
|
271
|
+
self.full_op_id_to_stats[full_op_id].memory_usage_mb = get_memory_usage()
|
|
272
|
+
|
|
274
273
|
class PZSentinelProgressManager(ProgressManager):
|
|
275
274
|
def __init__(self, plan: SentinelPlan, sample_budget: int):
|
|
276
275
|
# overall progress bar
|
|
@@ -314,11 +313,11 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
314
313
|
)
|
|
315
314
|
self.live_display = Live(self.progress_table, refresh_per_second=10)
|
|
316
315
|
|
|
317
|
-
# initialize mapping from
|
|
318
|
-
self.
|
|
316
|
+
# initialize mapping from logical_op_id --> ProgressStats
|
|
317
|
+
self.logical_op_id_to_stats: dict[str, ProgressStats] = {}
|
|
319
318
|
|
|
320
|
-
# initialize mapping from
|
|
321
|
-
self.
|
|
319
|
+
# initialize mapping from logical_op_id --> task
|
|
320
|
+
self.logical_op_id_to_task = {}
|
|
322
321
|
|
|
323
322
|
# initialize start time
|
|
324
323
|
self.start_time = None
|
|
@@ -341,12 +340,12 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
341
340
|
is_llm_retrieve = isinstance(physical_op, RetrieveOp) and isinstance(physical_op.index, Collection)
|
|
342
341
|
return is_llm_convert or is_llm_filter or is_llm_retrieve
|
|
343
342
|
|
|
344
|
-
def get_task_description(self,
|
|
343
|
+
def get_task_description(self, logical_op_id: str) -> str:
|
|
345
344
|
"""Return the current description for the given task."""
|
|
346
|
-
task = self.
|
|
345
|
+
task = self.logical_op_id_to_task[logical_op_id]
|
|
347
346
|
return self.op_progress._tasks[task].description
|
|
348
347
|
|
|
349
|
-
def add_task(self,
|
|
348
|
+
def add_task(self, logical_op_id: str, op_str: str, total: int):
|
|
350
349
|
"""Add a new task to the op progress bars"""
|
|
351
350
|
task = self.op_progress.add_task(
|
|
352
351
|
f"[blue]{op_str}",
|
|
@@ -359,10 +358,10 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
359
358
|
)
|
|
360
359
|
|
|
361
360
|
# store the mapping of operator ID to task ID
|
|
362
|
-
self.
|
|
361
|
+
self.logical_op_id_to_task[logical_op_id] = task
|
|
363
362
|
|
|
364
363
|
# initialize the stats for this operation
|
|
365
|
-
self.
|
|
364
|
+
self.logical_op_id_to_stats[logical_op_id] = ProgressStats(start_time=time.time())
|
|
366
365
|
|
|
367
366
|
def start(self):
|
|
368
367
|
# print a newline before starting to separate from previous output
|
|
@@ -374,29 +373,29 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
374
373
|
# start progress bars
|
|
375
374
|
self.live_display.start()
|
|
376
375
|
|
|
377
|
-
def incr(self,
|
|
376
|
+
def incr(self, logical_op_id: str, num_samples: int, display_text: str | None = None, **kwargs):
|
|
378
377
|
# TODO: (above) organize progress bars into a Live / Table / Panel or something
|
|
379
378
|
# get the task for the given operation
|
|
380
|
-
task = self.
|
|
379
|
+
task = self.logical_op_id_to_task.get(logical_op_id)
|
|
381
380
|
|
|
382
381
|
# update statistics with any additional keyword arguments
|
|
383
382
|
if kwargs != {}:
|
|
384
|
-
self.update_stats(
|
|
383
|
+
self.update_stats(logical_op_id, **kwargs)
|
|
385
384
|
|
|
386
385
|
# update progress bar and recent text in one update
|
|
387
386
|
if display_text is not None:
|
|
388
|
-
self.
|
|
387
|
+
self.logical_op_id_to_stats[logical_op_id].recent_text = display_text
|
|
389
388
|
|
|
390
|
-
# advance the op progress bar for this
|
|
389
|
+
# advance the op progress bar for this logical_op_id
|
|
391
390
|
self.op_progress.update(
|
|
392
391
|
task,
|
|
393
392
|
advance=num_samples,
|
|
394
|
-
description=f"[bold blue]{self.get_task_description(
|
|
395
|
-
cost=self.
|
|
396
|
-
success=self.
|
|
397
|
-
failed=self.
|
|
393
|
+
description=f"[bold blue]{self.get_task_description(logical_op_id)}",
|
|
394
|
+
cost=self.logical_op_id_to_stats[logical_op_id].total_cost,
|
|
395
|
+
success=self.logical_op_id_to_stats[logical_op_id].success_count,
|
|
396
|
+
failed=self.logical_op_id_to_stats[logical_op_id].failure_count,
|
|
398
397
|
memory=get_memory_usage(),
|
|
399
|
-
recent=f"{self.
|
|
398
|
+
recent=f"{self.logical_op_id_to_stats[logical_op_id].recent_text}" if display_text is not None else "",
|
|
400
399
|
refresh=True,
|
|
401
400
|
)
|
|
402
401
|
|
|
@@ -404,7 +403,7 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
404
403
|
self.overall_progress.update(
|
|
405
404
|
self.overall_task_id,
|
|
406
405
|
advance=num_samples,
|
|
407
|
-
cost=sum(stats.total_cost for _, stats in self.
|
|
406
|
+
cost=sum(stats.total_cost for _, stats in self.logical_op_id_to_stats.items()),
|
|
408
407
|
refresh=True,
|
|
409
408
|
)
|
|
410
409
|
|
|
@@ -415,15 +414,25 @@ class PZSentinelProgressManager(ProgressManager):
|
|
|
415
414
|
self.live_display.stop()
|
|
416
415
|
|
|
417
416
|
# compute total cost, success, and failure
|
|
418
|
-
total_cost = sum(stats.total_cost for stats in self.
|
|
419
|
-
# success_count = sum(stats.success_count for stats in self.
|
|
420
|
-
# failure_count = sum(stats.failure_count for stats in self.
|
|
417
|
+
total_cost = sum(stats.total_cost for stats in self.logical_op_id_to_stats.values())
|
|
418
|
+
# success_count = sum(stats.success_count for stats in self.logical_op_id_to_stats.values())
|
|
419
|
+
# failure_count = sum(stats.failure_count for stats in self.logical_op_id_to_stats.values())
|
|
421
420
|
|
|
422
421
|
# Print final stats on new lines after progress display
|
|
423
422
|
print(f"Total opt. time: {time.time() - self.start_time:.2f}s")
|
|
424
423
|
print(f"Total opt. cost: ${total_cost:.4f}")
|
|
425
424
|
# print(f"Success rate: {success_count}/{success_count + failure_count}")
|
|
426
425
|
|
|
426
|
+
def update_stats(self, logical_op_id: str, **kwargs):
|
|
427
|
+
"""Update progress statistics"""
|
|
428
|
+
for key, value in kwargs.items():
|
|
429
|
+
if hasattr(self.logical_op_id_to_stats[logical_op_id], key):
|
|
430
|
+
if key != "total_cost":
|
|
431
|
+
setattr(self.logical_op_id_to_stats[logical_op_id], key, value)
|
|
432
|
+
else:
|
|
433
|
+
self.logical_op_id_to_stats[logical_op_id].total_cost += value
|
|
434
|
+
self.logical_op_id_to_stats[logical_op_id].memory_usage_mb = get_memory_usage()
|
|
435
|
+
|
|
427
436
|
def create_progress_manager(
|
|
428
437
|
plan: PhysicalPlan | SentinelPlan,
|
|
429
438
|
num_samples: int | None = None,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: palimpzest
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.8
|
|
4
4
|
Summary: Palimpzest is a system which enables anyone to process AI-powered analytical queries simply by defining them in a declarative language
|
|
5
5
|
Author-email: MIT DSG Semantic Management Lab <michjc@csail.mit.edu>
|
|
6
6
|
Project-URL: homepage, https://palimpzest.org
|
|
@@ -15,7 +15,9 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
15
15
|
Requires-Python: >=3.8
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
+
Requires-Dist: beautifulsoup4>=4.13.4
|
|
18
19
|
Requires-Dist: chromadb>=0.6.3
|
|
20
|
+
Requires-Dist: colorama>=0.4.6
|
|
19
21
|
Requires-Dist: fastapi~=0.115.0
|
|
20
22
|
Requires-Dist: gradio>=5.26.0
|
|
21
23
|
Requires-Dist: numpy>=1.23.2
|
|
@@ -31,9 +33,9 @@ Requires-Dist: pyarrow<19.0.0,>=15.0.0; python_version >= "3.12"
|
|
|
31
33
|
Requires-Dist: pypdf>=5.1.0
|
|
32
34
|
Requires-Dist: pytest-mock>=3.14.0
|
|
33
35
|
Requires-Dist: pyyaml>=6.0.1
|
|
34
|
-
Requires-Dist: ragatouille>=0.0.9
|
|
35
36
|
Requires-Dist: requests>=2.25
|
|
36
37
|
Requires-Dist: ruff>=0.9.0
|
|
38
|
+
Requires-Dist: sentence-transformers>=4.1.0
|
|
37
39
|
Requires-Dist: setuptools>=70.1.1
|
|
38
40
|
Requires-Dist: tabulate>=0.9.0
|
|
39
41
|
Requires-Dist: together>=1.5.5
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
palimpzest/__init__.py,sha256=t-xBXOEaah4dEyHcnKJhDHpPRx7-P2QVwjBmdExVdNc,874
|
|
2
|
-
palimpzest/constants.py,sha256=
|
|
2
|
+
palimpzest/constants.py,sha256=xXkq_y_fdkjHeu9G0nEoOvpu4N4TtFQgTCDAj93Uf1E,17933
|
|
3
3
|
palimpzest/policy.py,sha256=2cMio_AUfZv6lksr_klfP747G4w1nsZJtfmt6zjeaMk,12656
|
|
4
|
-
palimpzest/sets.py,sha256=
|
|
4
|
+
palimpzest/sets.py,sha256=zWpNy466-Klg18wqAd_1t46JZzu44l_CbTbAkmbK-_w,15050
|
|
5
5
|
palimpzest/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
palimpzest/core/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
palimpzest/core/data/dataclasses.py,sha256=
|
|
7
|
+
palimpzest/core/data/dataclasses.py,sha256=EJ2l7OGdaIzCKFMp7vk9K4POIE1cTQVN7_zovLo1zhY,34919
|
|
8
8
|
palimpzest/core/data/datareaders.py,sha256=SMX92MVy_fj1WYv_B-EksdbFdj5tOOFMGXqBfGPB9Cs,16725
|
|
9
9
|
palimpzest/core/elements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
palimpzest/core/elements/filters.py,sha256=fU2x0eWDwfP52_5fUmqJXTuhs4H0vvHtPZLdA3IIw8I,1642
|
|
11
11
|
palimpzest/core/elements/groupbysig.py,sha256=1qHuR2-fcW-E4rxPSieYGSXZYwvFaPwf1ld9VPWvWjw,2233
|
|
12
|
-
palimpzest/core/elements/index.py,sha256=
|
|
13
|
-
palimpzest/core/elements/records.py,sha256=
|
|
12
|
+
palimpzest/core/elements/index.py,sha256=adO67DgzHhA4lBME0-h4SjXfdz9UcNMSDGXTpUdKbgE,1929
|
|
13
|
+
palimpzest/core/elements/records.py,sha256=7CDu2yMy83kcrWXerHHVSfSICDR83fiqrYZEB1V5LnM,15007
|
|
14
14
|
palimpzest/core/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
palimpzest/core/lib/fields.py,sha256=czzN7v4AgRzMSqgCWOelTEOJz3r-RCvwRTxQ3B0xG0U,4099
|
|
16
16
|
palimpzest/core/lib/schemas.py,sha256=_WMPR_YcAIeUNRne7gQLJHLqDNVz7LBxFXN3osu659Q,17105
|
|
@@ -21,53 +21,54 @@ palimpzest/prompts/critique_and_refine_convert_prompts.py,sha256=WoXExBxQ7twswd9
|
|
|
21
21
|
palimpzest/prompts/filter_prompts.py,sha256=iQjn-39h3L0E5wng_UPgAXRHrP1ok329TXpOgZ6Wn1w,2372
|
|
22
22
|
palimpzest/prompts/moa_aggregator_convert_prompts.py,sha256=BQRrtGdr53PTqvXzmFh8kfQ_w9KoKw-zTtmdo-8RFjo,2887
|
|
23
23
|
palimpzest/prompts/moa_proposer_convert_prompts.py,sha256=vcme_K-QA7--slFo91gKTh7x7l66x0u9rBEXI8NsN_I,3460
|
|
24
|
-
palimpzest/prompts/prompt_factory.py,sha256=
|
|
24
|
+
palimpzest/prompts/prompt_factory.py,sha256=ra2swEg46Y5J446mcqeSjomk7j2DOE6jVMiBcZCoU6I,34042
|
|
25
25
|
palimpzest/prompts/split_merge_prompts.py,sha256=0mTZeJhxtvlmv-ro0KwQpxlGgSTwyUhGRHJ-uHk2Zlw,3146
|
|
26
26
|
palimpzest/prompts/split_proposer_prompts.py,sha256=TBHLGaM_ycHjGHrp1JziJoJDw4S5_F4afKSAdt2McKk,2624
|
|
27
27
|
palimpzest/prompts/util_phrases.py,sha256=NWrcHfjJyiOY16Jyt7R50moVnlJDyvSBZ9kBqyX2WQo,751
|
|
28
28
|
palimpzest/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
palimpzest/query/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
palimpzest/query/execution/
|
|
31
|
-
palimpzest/query/execution/
|
|
32
|
-
palimpzest/query/execution/
|
|
33
|
-
palimpzest/query/execution/
|
|
30
|
+
palimpzest/query/execution/all_sample_execution_strategy.py,sha256=0-n_NxwC4eQ0d7qAfvNdV9grBFBIUgrpYGNefzl33No,10470
|
|
31
|
+
palimpzest/query/execution/execution_strategy.py,sha256=G5q-obhzO_odfXslR-YAQJd6vMs3TJsrfXhdmN-y-EA,21857
|
|
32
|
+
palimpzest/query/execution/execution_strategy_type.py,sha256=7zKpaB5j5cialRX15dx9nAUjtx8b8JjEHlSuPyeyd90,1076
|
|
33
|
+
palimpzest/query/execution/mab_execution_strategy.py,sha256=9c1F5d8RKjmDCS6AN8wrkbQha8kvSR24XtUW3v80R08,34756
|
|
34
|
+
palimpzest/query/execution/parallel_execution_strategy.py,sha256=H47MpktsOYFDcnm1lINNUfgjJhf2WxLA1iROyGFBmEc,17381
|
|
34
35
|
palimpzest/query/execution/random_sampling_execution_strategy.py,sha256=jWPd-sBsTbkwxXRlKgnR3FO6jEEqViaYUvBb0RJkP5g,11585
|
|
35
|
-
palimpzest/query/execution/single_threaded_execution_strategy.py,sha256
|
|
36
|
+
palimpzest/query/execution/single_threaded_execution_strategy.py,sha256=-31gg7ha0D97g2zipzF72f7nrJFcDuiRKmo10_q5ykE,12389
|
|
36
37
|
palimpzest/query/generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
palimpzest/query/generators/api_client_factory.py,sha256=
|
|
38
|
-
palimpzest/query/generators/generators.py,sha256=
|
|
38
|
+
palimpzest/query/generators/api_client_factory.py,sha256=lH9p5wRehECc7m1dWOGAGivD2F5x6hGh5kQCMw2-tfs,1065
|
|
39
|
+
palimpzest/query/generators/generators.py,sha256=HOquErARyNTFya0GiudWyV2UCJEz5g1q2FufXPT7nHE,26032
|
|
39
40
|
palimpzest/query/operators/__init__.py,sha256=fq0YvXuqxLtQyI_LuyOe02KYqYCmD-Sh1M-FcVWnr_A,3163
|
|
40
|
-
palimpzest/query/operators/aggregate.py,sha256=
|
|
41
|
+
palimpzest/query/operators/aggregate.py,sha256=G7jH2k0673t0TtzchCB0a9LLhSWwZb8X20FtuNw8xTQ,10288
|
|
41
42
|
palimpzest/query/operators/code_synthesis_convert.py,sha256=Oki3ZJi6lRD3NFKylulmreFniRVYjrbuKWFe_M90HXM,20992
|
|
42
|
-
palimpzest/query/operators/convert.py,sha256=
|
|
43
|
+
palimpzest/query/operators/convert.py,sha256=wneGeUmQifsSOmBz6HZBdwvmaO-o7UbsJyrwY3_pkyE,16859
|
|
43
44
|
palimpzest/query/operators/critique_and_refine_convert.py,sha256=PCAJIJV5ljADkCmKfkl5Neaf6mu91zFVY_D9m_Prr1c,5179
|
|
44
|
-
palimpzest/query/operators/filter.py,sha256=
|
|
45
|
-
palimpzest/query/operators/limit.py,sha256=
|
|
45
|
+
palimpzest/query/operators/filter.py,sha256=nb3cb7OekqA60SsWxbNSVxZ_Bm-ddLLZ5ql2xSC0-dg,10325
|
|
46
|
+
palimpzest/query/operators/limit.py,sha256=m-rob4SxdmR-JeDGGgjgss7uQkjviMxsj1bnd5wyjWY,2113
|
|
46
47
|
palimpzest/query/operators/logical.py,sha256=5AqUeSyGgLV3uRXn0ZCYSYzrk1eeuSAgSPYTM9gHMdI,16163
|
|
47
|
-
palimpzest/query/operators/map.py,sha256=
|
|
48
|
+
palimpzest/query/operators/map.py,sha256=dLMQR2vgkCtr2SsBbgBxvgcqf9TO9B40V8ylPtxukY4,4950
|
|
48
49
|
palimpzest/query/operators/mixture_of_agents_convert.py,sha256=CU6X7KG1Ivx-8OZ6HSye6auoDUaz0EgVai68_AGxEVA,6675
|
|
49
|
-
palimpzest/query/operators/physical.py,sha256=
|
|
50
|
-
palimpzest/query/operators/project.py,sha256=
|
|
50
|
+
palimpzest/query/operators/physical.py,sha256=HJu6eksVYILEc0Q_YKCtmBuOXNkryxXKf9LxwESOV-k,8052
|
|
51
|
+
palimpzest/query/operators/project.py,sha256=zm01I404wpUGjigK3ATn5ApY7yf1HVFd1ZYWfVlsZsI,2094
|
|
51
52
|
palimpzest/query/operators/rag_convert.py,sha256=kg5PfukNuUs9MWu9BMqsn0CC2L6WchLeg20BWWD7V0Q,10699
|
|
52
|
-
palimpzest/query/operators/retrieve.py,sha256=
|
|
53
|
-
palimpzest/query/operators/scan.py,sha256=
|
|
53
|
+
palimpzest/query/operators/retrieve.py,sha256=9Z52pw8E3DW1wcSUfTZKtL1ImS8FzYJOfUY4F_rJIWE,13093
|
|
54
|
+
palimpzest/query/operators/scan.py,sha256=pOS_9fkBEjwsabLK9Fz08c9n7L74-4mhiWWiVbdFrII,5870
|
|
54
55
|
palimpzest/query/operators/split_convert.py,sha256=QSc4_WKeysl32Q8ovK25UgPwskxS9baJ-sl23fv3ykA,7719
|
|
55
56
|
palimpzest/query/optimizer/__init__.py,sha256=qJtR1nwGurkazInpdwJVQ1vVmBfsA_qXGXU71RkycSE,2465
|
|
56
|
-
palimpzest/query/optimizer/cost_model.py,sha256=
|
|
57
|
-
palimpzest/query/optimizer/optimizer.py,sha256=
|
|
57
|
+
palimpzest/query/optimizer/cost_model.py,sha256=mUPpcKUMxOtg4guY9d26ExN-bFjXVu_Dvvp4eRXyw6A,30190
|
|
58
|
+
palimpzest/query/optimizer/optimizer.py,sha256=hZtnX7iCpsiU8T_8i7a4c91ZYUAcA0KeAX5TZiZJ65s,21229
|
|
58
59
|
palimpzest/query/optimizer/optimizer_strategy.py,sha256=Aek-LsQQO9VuxI1ZLkmadxik87-tRjy4v1_edbAhLMs,9234
|
|
59
60
|
palimpzest/query/optimizer/optimizer_strategy_type.py,sha256=V-MMHvJdnfZKoUX1xxxwh66q1RjN2FL35IsiT1C62c8,1084
|
|
60
|
-
palimpzest/query/optimizer/plan.py,sha256=
|
|
61
|
-
palimpzest/query/optimizer/primitives.py,sha256=
|
|
62
|
-
palimpzest/query/optimizer/rules.py,sha256=
|
|
63
|
-
palimpzest/query/optimizer/tasks.py,sha256=
|
|
61
|
+
palimpzest/query/optimizer/plan.py,sha256=i6lOTSNMcVNf0SruMD3lZ_-Nq3_UWq5X6QFd_lRvYA4,5682
|
|
62
|
+
palimpzest/query/optimizer/primitives.py,sha256=r0zjavxxVCCFABXDwdQxRJmQek6WLo1777suoy7CWEc,4038
|
|
63
|
+
palimpzest/query/optimizer/rules.py,sha256=lPMtOunfG-mcAXn7crYD_ULAfkBRXeeGRr8-0NzzZjU,46853
|
|
64
|
+
palimpzest/query/optimizer/tasks.py,sha256=pPDIV-efm_2S9WVYubu0QGuhh5-4c9SM3XtvfhpLDOY,24855
|
|
64
65
|
palimpzest/query/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
66
|
palimpzest/query/processor/config.py,sha256=dA3GB-nEAIQBllEx4rFy1W8iHYYEZOMOi4MgfZgODuQ,3851
|
|
66
67
|
palimpzest/query/processor/nosentinel_processor.py,sha256=E5XvDLqTuG5aIy-g5bMbDx0UTUBwjNlAuo9W5AvpsCo,1224
|
|
67
|
-
palimpzest/query/processor/processing_strategy_type.py,sha256=
|
|
68
|
+
palimpzest/query/processor/processing_strategy_type.py,sha256=Blq-nKwjbj-BAzCv5QLdYUbj-RhsGZrDKt1xk4H4RPI,1419
|
|
68
69
|
palimpzest/query/processor/query_processor.py,sha256=13DcIeoISPbEgrTaXR-fCT2XfqYXjC-16midStaaVSg,3496
|
|
69
70
|
palimpzest/query/processor/query_processor_factory.py,sha256=2qiFs6dyskreJti7uf179Bs5aJgYXBpP_pgfaIzqpzg,7492
|
|
70
|
-
palimpzest/query/processor/sentinel_processor.py,sha256=
|
|
71
|
+
palimpzest/query/processor/sentinel_processor.py,sha256=QOgrMBWqZAdHO9WqjrSiRGYWNRRh84UJ-S8EsDM_nUo,3870
|
|
71
72
|
palimpzest/query/processor/streaming_processor.py,sha256=tR0KVW-lLLF1MEahaasuqwiTYVw7Y6P0qw2IBKbDZho,5996
|
|
72
73
|
palimpzest/schemabuilder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
74
|
palimpzest/schemabuilder/schema_builder.py,sha256=kGEv-Adba-FNziRrlG0zwx317IuD7rmzNl2GecvnbDw,8528
|
|
@@ -81,14 +82,14 @@ palimpzest/utils/datareader_helpers.py,sha256=-tkIf9iOF7mr-gyrrUQqnHWwRig4OGnowU
|
|
|
81
82
|
palimpzest/utils/demo_helpers.py,sha256=80s2IxlkEOLtLfIEDw_u0cyuNzsjvh-79m12J1q5i_c,2403
|
|
82
83
|
palimpzest/utils/env_helpers.py,sha256=n81KzoJ459pRxo7QmJA7duazwWsfoMGTHc71D2LatFk,334
|
|
83
84
|
palimpzest/utils/field_helpers.py,sha256=Op18ThAnDlALiAkquUQbelHodZZYg378Ct1I8eIkKio,2291
|
|
84
|
-
palimpzest/utils/generation_helpers.py,sha256=
|
|
85
|
+
palimpzest/utils/generation_helpers.py,sha256=KTeVQDXRwM18auR8YsLNR5AdPDjSgO0NoOBagfFdTMs,3213
|
|
85
86
|
palimpzest/utils/hash_helpers.py,sha256=3A8dA7SbXTwnnvZvPVNqqMLlVRhCKyKF_bjNNAu3Exk,334
|
|
86
|
-
palimpzest/utils/model_helpers.py,sha256=
|
|
87
|
-
palimpzest/utils/progress.py,sha256=
|
|
87
|
+
palimpzest/utils/model_helpers.py,sha256=utkjWvcKS7imF6Q39ef82pE8IRvDPoNPis1Mayp_N8w,3074
|
|
88
|
+
palimpzest/utils/progress.py,sha256=RiV753fKV8dFCNan4_wvdN2S3gvTvyRPq4Ksz6nSV1U,18536
|
|
88
89
|
palimpzest/utils/sandbox.py,sha256=Ge96gmzqeOGlNkMCG9A95_PB8wRQbvTFua136of8FcA,6465
|
|
89
90
|
palimpzest/utils/udfs.py,sha256=LjHic54B1az-rKgNLur0wOpaz2ko_UodjLEJrazkxvY,1854
|
|
90
|
-
palimpzest-0.7.
|
|
91
|
-
palimpzest-0.7.
|
|
92
|
-
palimpzest-0.7.
|
|
93
|
-
palimpzest-0.7.
|
|
94
|
-
palimpzest-0.7.
|
|
91
|
+
palimpzest-0.7.8.dist-info/licenses/LICENSE,sha256=5GUlHy9lr-Py9kvV38FF1m3yy3NqM18fefuE9wkWumo,1079
|
|
92
|
+
palimpzest-0.7.8.dist-info/METADATA,sha256=w03zVIf1l4XAoD3tApPZEVJyP6067gm6AVkUvWdF4dQ,7230
|
|
93
|
+
palimpzest-0.7.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
94
|
+
palimpzest-0.7.8.dist-info/top_level.txt,sha256=raV06dJUgohefUn3ZyJS2uqp_Y76EOLA9Y2e_fxt8Ew,11
|
|
95
|
+
palimpzest-0.7.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|