palimpzest 0.8.2__py3-none-any.whl → 0.8.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.
Files changed (57) hide show
  1. palimpzest/constants.py +38 -62
  2. palimpzest/core/data/iter_dataset.py +5 -5
  3. palimpzest/core/elements/groupbysig.py +1 -1
  4. palimpzest/core/elements/records.py +91 -109
  5. palimpzest/core/lib/schemas.py +23 -0
  6. palimpzest/core/models.py +3 -3
  7. palimpzest/prompts/__init__.py +2 -6
  8. palimpzest/prompts/convert_prompts.py +10 -66
  9. palimpzest/prompts/critique_and_refine_prompts.py +66 -0
  10. palimpzest/prompts/filter_prompts.py +8 -46
  11. palimpzest/prompts/join_prompts.py +12 -75
  12. palimpzest/prompts/{moa_aggregator_convert_prompts.py → moa_aggregator_prompts.py} +51 -2
  13. palimpzest/prompts/moa_proposer_prompts.py +87 -0
  14. palimpzest/prompts/prompt_factory.py +351 -479
  15. palimpzest/prompts/split_merge_prompts.py +51 -2
  16. palimpzest/prompts/split_proposer_prompts.py +48 -16
  17. palimpzest/prompts/utils.py +109 -0
  18. palimpzest/query/execution/all_sample_execution_strategy.py +1 -1
  19. palimpzest/query/execution/execution_strategy.py +4 -4
  20. palimpzest/query/execution/mab_execution_strategy.py +1 -2
  21. palimpzest/query/execution/parallel_execution_strategy.py +3 -3
  22. palimpzest/query/execution/single_threaded_execution_strategy.py +8 -8
  23. palimpzest/query/generators/generators.py +31 -17
  24. palimpzest/query/operators/__init__.py +15 -2
  25. palimpzest/query/operators/aggregate.py +21 -19
  26. palimpzest/query/operators/compute.py +6 -8
  27. palimpzest/query/operators/convert.py +12 -37
  28. palimpzest/query/operators/critique_and_refine.py +194 -0
  29. palimpzest/query/operators/distinct.py +7 -7
  30. palimpzest/query/operators/filter.py +13 -25
  31. palimpzest/query/operators/join.py +321 -192
  32. palimpzest/query/operators/limit.py +4 -4
  33. palimpzest/query/operators/mixture_of_agents.py +246 -0
  34. palimpzest/query/operators/physical.py +25 -2
  35. palimpzest/query/operators/project.py +4 -4
  36. palimpzest/query/operators/{rag_convert.py → rag.py} +202 -5
  37. palimpzest/query/operators/retrieve.py +10 -9
  38. palimpzest/query/operators/scan.py +9 -10
  39. palimpzest/query/operators/search.py +18 -24
  40. palimpzest/query/operators/split.py +321 -0
  41. palimpzest/query/optimizer/__init__.py +12 -8
  42. palimpzest/query/optimizer/optimizer.py +12 -10
  43. palimpzest/query/optimizer/rules.py +201 -108
  44. palimpzest/query/optimizer/tasks.py +18 -6
  45. palimpzest/validator/validator.py +7 -9
  46. {palimpzest-0.8.2.dist-info → palimpzest-0.8.3.dist-info}/METADATA +3 -8
  47. palimpzest-0.8.3.dist-info/RECORD +95 -0
  48. palimpzest/prompts/critique_and_refine_convert_prompts.py +0 -216
  49. palimpzest/prompts/moa_proposer_convert_prompts.py +0 -75
  50. palimpzest/prompts/util_phrases.py +0 -19
  51. palimpzest/query/operators/critique_and_refine_convert.py +0 -113
  52. palimpzest/query/operators/mixture_of_agents_convert.py +0 -140
  53. palimpzest/query/operators/split_convert.py +0 -170
  54. palimpzest-0.8.2.dist-info/RECORD +0 -95
  55. {palimpzest-0.8.2.dist-info → palimpzest-0.8.3.dist-info}/WHEEL +0 -0
  56. {palimpzest-0.8.2.dist-info → palimpzest-0.8.3.dist-info}/licenses/LICENSE +0 -0
  57. {palimpzest-0.8.2.dist-info → palimpzest-0.8.3.dist-info}/top_level.txt +0 -0
@@ -1,170 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import math
4
-
5
- from pydantic.fields import FieldInfo
6
-
7
- from palimpzest.constants import (
8
- MODEL_CARDS,
9
- NAIVE_EST_NUM_INPUT_TOKENS,
10
- NAIVE_EST_NUM_OUTPUT_TOKENS,
11
- PromptStrategy,
12
- )
13
- from palimpzest.core.elements.records import DataRecord
14
- from palimpzest.core.models import GenerationStats, OperatorCostEstimates
15
- from palimpzest.query.generators.generators import Generator
16
- from palimpzest.query.operators.convert import LLMConvert
17
-
18
-
19
- class SplitConvert(LLMConvert):
20
- def __init__(self, num_chunks: int = 2, min_size_to_chunk: int = 1000, *args, **kwargs):
21
- kwargs["prompt_strategy"] = None
22
- super().__init__(*args, **kwargs)
23
- self.num_chunks = num_chunks
24
- self.min_size_to_chunk = min_size_to_chunk
25
- self.split_generator = Generator(self.model, PromptStrategy.SPLIT_PROPOSER, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
26
- self.split_merge_generator = Generator(self.model, PromptStrategy.SPLIT_MERGER, self.reasoning_effort, self.api_base, self.cardinality, self.desc, self.verbose)
27
-
28
- # crude adjustment factor for naive estimation in no-sentinel setting
29
- self.naive_quality_adjustment = 0.6
30
-
31
- def __str__(self):
32
- op = super().__str__()
33
- op += f" Chunk Size: {str(self.num_chunks)}\n"
34
- op += f" Min Size to Chunk: {str(self.min_size_to_chunk)}\n"
35
- return op
36
-
37
- def get_id_params(self):
38
- id_params = super().get_id_params()
39
- id_params = {"num_chunks": self.num_chunks, "min_size_to_chunk": self.min_size_to_chunk, **id_params}
40
-
41
- return id_params
42
-
43
- def get_op_params(self):
44
- op_params = super().get_op_params()
45
- return {"num_chunks": self.num_chunks, "min_size_to_chunk": self.min_size_to_chunk, **op_params}
46
-
47
- def naive_cost_estimates(self, source_op_cost_estimates: OperatorCostEstimates) -> OperatorCostEstimates:
48
- """
49
- Update the cost per record and quality estimates produced by LLMConvert's naive estimates.
50
- We adjust the cost per record to account for the reduced number of input tokens following
51
- the retrieval of relevant chunks, and we make a crude estimate of the quality degradation
52
- that results from using a downsized input (although this may in fact improve quality in
53
- some cases).
54
- """
55
- # get naive cost estimates from LLMConvert
56
- naive_op_cost_estimates = super().naive_cost_estimates(source_op_cost_estimates)
57
-
58
- # re-compute cost per record assuming we use fewer input tokens; naively assume a single input field
59
- est_num_input_tokens = NAIVE_EST_NUM_INPUT_TOKENS
60
- est_num_output_tokens = NAIVE_EST_NUM_OUTPUT_TOKENS
61
- model_conversion_usd_per_record = (
62
- MODEL_CARDS[self.model.value]["usd_per_input_token"] * est_num_input_tokens
63
- + MODEL_CARDS[self.model.value]["usd_per_output_token"] * est_num_output_tokens
64
- )
65
-
66
- # set refined estimate of cost per record
67
- naive_op_cost_estimates.cost_per_record = model_conversion_usd_per_record
68
- naive_op_cost_estimates.cost_per_record_lower_bound = naive_op_cost_estimates.cost_per_record
69
- naive_op_cost_estimates.cost_per_record_upper_bound = naive_op_cost_estimates.cost_per_record
70
- naive_op_cost_estimates.quality = (naive_op_cost_estimates.quality) * self.naive_quality_adjustment
71
- naive_op_cost_estimates.quality_lower_bound = naive_op_cost_estimates.quality
72
- naive_op_cost_estimates.quality_upper_bound = naive_op_cost_estimates.quality
73
-
74
- return naive_op_cost_estimates
75
-
76
- def is_image_conversion(self) -> bool:
77
- """SplitConvert is currently disallowed on image conversions, so this must be False."""
78
- return False
79
-
80
- def get_text_chunks(self, text: str, num_chunks: int) -> list[str]:
81
- """
82
- Given a text string, chunk it into num_chunks substrings of roughly equal size.
83
- """
84
- chunks = []
85
-
86
- idx, chunk_size = 0, math.ceil(len(text) / num_chunks)
87
- while idx + chunk_size < len(text):
88
- chunks.append(text[idx : idx + chunk_size])
89
- idx += chunk_size
90
-
91
- if idx < len(text):
92
- chunks.append(text[idx:])
93
-
94
- return chunks
95
-
96
- def get_chunked_candidate(self, candidate: DataRecord, input_fields: list[str]) -> list[DataRecord]:
97
- """
98
- For each text field, chunk the content. If a field is smaller than the chunk size,
99
- simply include the full field.
100
- """
101
- # compute mapping from each field to its chunked content
102
- field_name_to_chunked_content = {}
103
- for field_name in input_fields:
104
- field = candidate.get_field_type(field_name)
105
- content = candidate[field_name]
106
-
107
- # do not chunk this field if it is not a string or a list of strings
108
- is_string_field = field.annotation in [str, str | None]
109
- is_list_string_field = field.annotation in [list[str], list[str] | None]
110
- if not (is_string_field or is_list_string_field):
111
- field_name_to_chunked_content[field_name] = [content]
112
- continue
113
-
114
- # if this is a list of strings, join the strings
115
- if is_list_string_field:
116
- content = "[" + ", ".join(content) + "]"
117
-
118
- # skip this field if its length is less than the min size to chunk
119
- if len(content) < self.min_size_to_chunk:
120
- field_name_to_chunked_content[field_name] = [content]
121
- continue
122
-
123
- # chunk the content
124
- field_name_to_chunked_content[field_name] = self.get_text_chunks(content, self.num_chunks)
125
-
126
- # compute the true number of chunks (may be 1 if all fields are not chunked)
127
- num_chunks = max(len(chunks) for chunks in field_name_to_chunked_content.values())
128
-
129
- # create the chunked canidates
130
- candidates = []
131
- for chunk_idx in range(num_chunks):
132
- candidate_copy = candidate.copy()
133
- for field_name in input_fields:
134
- field_chunks = field_name_to_chunked_content[field_name]
135
- candidate_copy[field_name] = field_chunks[chunk_idx] if len(field_chunks) > 1 else field_chunks[0]
136
-
137
- candidates.append(candidate_copy)
138
-
139
- return candidates
140
-
141
- def convert(self, candidate: DataRecord, fields: dict[str, FieldInfo]) -> tuple[dict[str, list], GenerationStats]:
142
- # get the set of input fields to use for the convert operation
143
- input_fields = self.get_input_fields()
144
-
145
- # lookup most relevant chunks for each field using embedding search
146
- candidate_copy = candidate.copy()
147
- chunked_candidates = self.get_chunked_candidate(candidate_copy, input_fields)
148
-
149
- # construct kwargs for generation
150
- gen_kwargs = {"project_cols": input_fields, "output_schema": self.output_schema}
151
-
152
- # generate outputs for each chunk separately
153
- chunk_outputs, chunk_generation_stats_lst = [], []
154
- for candidate in chunked_candidates:
155
- _, reasoning, chunk_generation_stats, _ = self.split_generator(candidate, fields, json_output=False, **gen_kwargs)
156
- chunk_outputs.append(reasoning)
157
- chunk_generation_stats_lst.append(chunk_generation_stats)
158
-
159
- # call the merger
160
- gen_kwargs = {
161
- "project_cols": input_fields,
162
- "output_schema": self.output_schema,
163
- "chunk_outputs": chunk_outputs,
164
- }
165
- field_answers, _, merger_gen_stats, _ = self.split_merge_generator(candidate, fields, **gen_kwargs)
166
-
167
- # compute the total generation stats
168
- generation_stats = sum(chunk_generation_stats_lst) + merger_gen_stats
169
-
170
- return field_answers, generation_stats
@@ -1,95 +0,0 @@
1
- palimpzest/__init__.py,sha256=1PzadDDOVMQJKNEYUH0_tw8tQKUYTT31M0vuzTr2Rqk,1694
2
- palimpzest/constants.py,sha256=GagsbJl1xCAjgt6Biw27KnHSZgiramxhnerhmYe3P_k,24690
3
- palimpzest/policy.py,sha256=lIvw_C_rmwCH4LZaeNkAuixl8zw9RAW_JcSWSHPjKyc,11628
4
- palimpzest/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- palimpzest/agents/compute_agents.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- palimpzest/agents/search_agents.py,sha256=t2QMreB5Ph71aoNk5bBtV-0l8im79z-pMAR3JDAySDw,29418
7
- palimpzest/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- palimpzest/core/models.py,sha256=fLO4T7x0njNeEbUpbhJm9cdnBva0y0Zw5WGBGdzdS_I,42442
9
- palimpzest/core/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- palimpzest/core/data/context.py,sha256=x1xYyu9qW65dvtK_XayIfv_CgsCEPW6Qe0DTiSf9sjU,16207
11
- palimpzest/core/data/context_manager.py,sha256=8hAKWD2jhFZgghTu7AYgjkvKDsJUPVxq8g4nG0HWvfo,6150
12
- palimpzest/core/data/dataset.py,sha256=M7SxPXzHsfj-ljy_P3ckcJNqGf4RwNxtZI02q_tmL2M,28178
13
- palimpzest/core/data/index_dataset.py,sha256=adO67DgzHhA4lBME0-h4SjXfdz9UcNMSDGXTpUdKbgE,1929
14
- palimpzest/core/data/iter_dataset.py,sha256=u7eZNWWT84rH_D8LNIuq0NAnm2roX81ifKTYp-hwY7g,20512
15
- palimpzest/core/elements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- palimpzest/core/elements/filters.py,sha256=fU2x0eWDwfP52_5fUmqJXTuhs4H0vvHtPZLdA3IIw8I,1642
17
- palimpzest/core/elements/groupbysig.py,sha256=Fcbt1GSAkxIILS5me0sWaNMLiptLJ6NIY6BIC0S-g3k,2318
18
- palimpzest/core/elements/records.py,sha256=Su4d8GRNp5-Q1nSWANm-jehyw53tHUl20iGluyEk8NI,19053
19
- palimpzest/core/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- palimpzest/core/lib/schemas.py,sha256=0qauaG3uW5tCJXNAo1i0G0UgbTaQLSLT6GoNDX8494Q,8376
21
- palimpzest/prompts/__init__.py,sha256=sdZbC8RWi_IGjFuzKQMdRjS2Ih4zQnkyzFoJ6Q3Ce70,1764
22
- palimpzest/prompts/agent_prompts.py,sha256=CUzBVLBiPSw8OShtKp4VTpQwtrNMtcMglo-IZHMvuDM,17459
23
- palimpzest/prompts/context_search.py,sha256=s3pti4XNRiIyiWzjVNL_NqmqEc31jzSKMF2SlN0Aaf8,357
24
- palimpzest/prompts/convert_prompts.py,sha256=quoIcdIrP4FoPBXlHKeOPjH5lVn8GH30f1tPiu3Xsyw,6037
25
- palimpzest/prompts/critique_and_refine_convert_prompts.py,sha256=WoXExBxQ7twswd9VCCST26c-2ehZtpD2iQoBi7sqDnQ,7814
26
- palimpzest/prompts/filter_prompts.py,sha256=drTivlA_WnWkAIzY9GjqO_hfwdy432nMtsV-OYa-mlE,4260
27
- palimpzest/prompts/join_prompts.py,sha256=fEGZY_zn_dvOJCeUFYrHdg5P3h_H6Fo3FMmdnXwp2l4,5957
28
- palimpzest/prompts/moa_aggregator_convert_prompts.py,sha256=BQRrtGdr53PTqvXzmFh8kfQ_w9KoKw-zTtmdo-8RFjo,2887
29
- palimpzest/prompts/moa_proposer_convert_prompts.py,sha256=8vhq0bnikbCzS4CDV5IskFPWF0TC7VZGjeGvpOyIBV8,3476
30
- palimpzest/prompts/prompt_factory.py,sha256=MpEYoyPXY3gfFGG60O9rlw5A5UejC3CTRHcO6KRhyww,51733
31
- palimpzest/prompts/split_merge_prompts.py,sha256=0mTZeJhxtvlmv-ro0KwQpxlGgSTwyUhGRHJ-uHk2Zlw,3146
32
- palimpzest/prompts/split_proposer_prompts.py,sha256=X3hufHPAiQyytZ_TFe2wJkVPgJtClZ9fVgz2zNk2Z5Q,2638
33
- palimpzest/prompts/util_phrases.py,sha256=ajxzj-B2gE56IENKVKElqw1xKWOF5IahOOqq026Pr00,876
34
- palimpzest/prompts/validator.py,sha256=pJTZjlt_OiFM3IFOgsJ0jQdayra8iRVrpqENlXI9tQQ,10532
35
- palimpzest/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- palimpzest/query/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- palimpzest/query/execution/all_sample_execution_strategy.py,sha256=3n2hl8m-WFWIu-a8DiSVsGkz4ej3yB7mSdFR0jsiwAU,14366
38
- palimpzest/query/execution/execution_strategy.py,sha256=KwBJbWOBOOPBiWRm3ypHcAQiWbCsvtW6UnVU4tHkYz8,18905
39
- palimpzest/query/execution/execution_strategy_type.py,sha256=vRQBPCQN5_aoyD3TLIeW3VPo15mqF-5RBvEXkENz9FE,987
40
- palimpzest/query/execution/mab_execution_strategy.py,sha256=paVfB8lqNyUuISqfhkTd6RqOZqpyVty1EAN1sZz7erA,43554
41
- palimpzest/query/execution/parallel_execution_strategy.py,sha256=Gn5hB5XddX2jCkxx6d7O-DmitK6fbuwBFnnyKhnGYEw,15706
42
- palimpzest/query/execution/single_threaded_execution_strategy.py,sha256=1eo-Z9G3u92_PjoSX8HmO3D3phYgA8f0Actbgd1-oKY,16247
43
- palimpzest/query/generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- palimpzest/query/generators/generators.py,sha256=WYMcff7axgDEmYqXvy1A-C5FA4s6lI393CcCx-TKTgM,20941
45
- palimpzest/query/operators/__init__.py,sha256=j-yh0P5tzXGa0JU_g8aNn54wCJDXPCMbmtOmazXXEts,3459
46
- palimpzest/query/operators/aggregate.py,sha256=QvWr4C1arFSZWVqPSF5F5On6Ise5OF3VVWNGSq6Gfjk,11230
47
- palimpzest/query/operators/compute.py,sha256=bxMKLRU_o7v603daKeR0FayDZ_V6NLI1fGzgu6E-sac,8473
48
- palimpzest/query/operators/convert.py,sha256=mpXXYdgcH6zPqypzh3SjTqHjq7PDEbkfdZ1_XEml-nw,17334
49
- palimpzest/query/operators/critique_and_refine_convert.py,sha256=PbtKva6e3fh3yeUMGlkcpacPD003bFBzgBsw_yy-8fw,5293
50
- palimpzest/query/operators/distinct.py,sha256=MuF3NlC0QMTSGs0_fe2oly0I5Ow0hfOa7h8BFGhHiCs,2594
51
- palimpzest/query/operators/filter.py,sha256=jmSGV7xZ8uxXzH-Oko7l8ZPZxNf_qJNkYVAYgiSHl9g,10802
52
- palimpzest/query/operators/join.py,sha256=rs9_Y59082dlnSJu9rpRDEuv7jDPItKSpYsC8FCMFDM,17837
53
- palimpzest/query/operators/limit.py,sha256=upJ775cGkxjFHRJm8GpSvtJN1cspg2FVYLN_MrIfUo4,2113
54
- palimpzest/query/operators/logical.py,sha256=K_dRlNKkda35kQ7gYGsrW9PoFuDPzexpjtDq_FYdhVw,20223
55
- palimpzest/query/operators/mixture_of_agents_convert.py,sha256=4v2V612NqdVD0RmcJ5VSgTiVliObku-t-A79SXVnpk0,6753
56
- palimpzest/query/operators/physical.py,sha256=buPZjtP4HKNVfOCNWdBtDnRS217dSsIG74gqZ1jmoyo,8320
57
- palimpzest/query/operators/project.py,sha256=RX5SbHFRwHcMfiQRofIPQr-AHgIDYm68ifiFZAPu7Fo,2094
58
- palimpzest/query/operators/rag_convert.py,sha256=1QQGrE22-Ec3-MNbnaU3k4TGHdpi2qZqZR9MHUniEM4,10691
59
- palimpzest/query/operators/retrieve.py,sha256=v1FTFsSctqH4B37aWgBXYIxgOMJwRWQ2kwwXu1huwaQ,13106
60
- palimpzest/query/operators/scan.py,sha256=Da_EZUrArzlAameHYCmtqo-xbPOFvbTYSktrUcUEUSc,7398
61
- palimpzest/query/operators/search.py,sha256=xydO5Kni0RArpvLSn2ajzD4TcH442VjpP2x9NakjzaA,22842
62
- palimpzest/query/operators/split_convert.py,sha256=acCPlkrUfqHhGD7bU2AXQAhIEeAEIh0itamuCOm4KBk,7787
63
- palimpzest/query/optimizer/__init__.py,sha256=L2E1rOA-8O9oH6JL56wLI1qUVxXBLubJEG1IHMH-HU4,2384
64
- palimpzest/query/optimizer/cost_model.py,sha256=OldPy-TJdfsQbYRoKlb3yWeKbi15jcldTIUS6BTi9T8,12678
65
- palimpzest/query/optimizer/optimizer.py,sha256=mgM6c0d_voGNun2hMzqjfumJVieACtcHsNnBP4LyXAA,19626
66
- palimpzest/query/optimizer/optimizer_strategy.py,sha256=9YlNGkqwgX0WaV6y8tKOOHVN8kC8GjDI3DttvGW5SYY,10206
67
- palimpzest/query/optimizer/optimizer_strategy_type.py,sha256=V-MMHvJdnfZKoUX1xxxwh66q1RjN2FL35IsiT1C62c8,1084
68
- palimpzest/query/optimizer/plan.py,sha256=VIhN7tWT7EoRE9BKYa1qvvOhX7dEaM-aiobByX0qjzg,22900
69
- palimpzest/query/optimizer/primitives.py,sha256=jMMVq37y1tWiPU1lSSKQP9OP-mzkpSxSmUeDajRYYOQ,5445
70
- palimpzest/query/optimizer/rules.py,sha256=9AsuVjhiZUc0snQPNhIqeyKpmqFsSv7e-v6BEbp9CDw,43315
71
- palimpzest/query/optimizer/tasks.py,sha256=DJcKDNbVJox61rnTW0HgT1PtxGx2P_NiLvNroXie-Lg,29509
72
- palimpzest/query/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- palimpzest/query/processor/config.py,sha256=vHVsgeBnKigacO0QA7bLf5q8pJhFWA2j9-p_no2bmYo,2366
74
- palimpzest/query/processor/query_processor.py,sha256=T4ffPbnOX23G8FDITzmM7Iw7DUEDWIHnwl8XLYllgjg,6240
75
- palimpzest/query/processor/query_processor_factory.py,sha256=6w9R1Y8AOV22X8MUf7g2G5Qb15BGEZAXQKbCQJafWJ0,8048
76
- palimpzest/schemabuilder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- palimpzest/schemabuilder/schema_builder.py,sha256=QraGp66dcD-ej6Y2mER40o86G9JqlBkL7swkJzjUAIY,7968
78
- palimpzest/tools/README.md,sha256=56_6LPG80uc0CLVhTBP6I1wgIffNv9cyTr0TmVZqmrM,483
79
- palimpzest/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- palimpzest/tools/allenpdf.py,sha256=fXMOmSDdSSLXDKAPYYJ8k4egtWEBf_Me9Lq9tM3iyoA,1690
81
- palimpzest/tools/pdfparser.py,sha256=0DOVUZLxYfqjxM8WNEfYcyiXb1qW9BWVIHEB_B_YhWA,9570
82
- palimpzest/tools/skema_tools.py,sha256=HXUFpjMhbVxZwKKkATeK-FwtlTCawaCbeP-uHntI1Kg,669
83
- palimpzest/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- palimpzest/utils/env_helpers.py,sha256=n81KzoJ459pRxo7QmJA7duazwWsfoMGTHc71D2LatFk,334
85
- palimpzest/utils/hash_helpers.py,sha256=3A8dA7SbXTwnnvZvPVNqqMLlVRhCKyKF_bjNNAu3Exk,334
86
- palimpzest/utils/model_helpers.py,sha256=X6SlMgD5I5Aj_cxaFaoGaaNvOOqTNZVmjj6zbfn63Yk,2476
87
- palimpzest/utils/progress.py,sha256=7gucyZr82udMDZitrrkAOSKHZVljE3R2wv9nf5gA5TM,20807
88
- palimpzest/utils/udfs.py,sha256=LjHic54B1az-rKgNLur0wOpaz2ko_UodjLEJrazkxvY,1854
89
- palimpzest/validator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- palimpzest/validator/validator.py,sha256=J2tGvJqfg6v5lOQDYYaqAa9d37uVHBrqkNs-a8d1Ic0,16365
91
- palimpzest-0.8.2.dist-info/licenses/LICENSE,sha256=5GUlHy9lr-Py9kvV38FF1m3yy3NqM18fefuE9wkWumo,1079
92
- palimpzest-0.8.2.dist-info/METADATA,sha256=bDa2zFfJr_v4Ef6fzq3SCALSoXoXc0uPnefnmVbAzTA,7286
93
- palimpzest-0.8.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
- palimpzest-0.8.2.dist-info/top_level.txt,sha256=raV06dJUgohefUn3ZyJS2uqp_Y76EOLA9Y2e_fxt8Ew,11
95
- palimpzest-0.8.2.dist-info/RECORD,,