retab 0.0.42__py3-none-any.whl → 0.0.43__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 (53) hide show
  1. retab/__init__.py +2 -1
  2. retab/client.py +16 -45
  3. retab/resources/consensus/client.py +1 -1
  4. retab/resources/consensus/responses.py +1 -1
  5. retab/resources/documents/client.py +94 -68
  6. retab/resources/documents/extractions.py +55 -46
  7. retab/resources/evaluations/client.py +32 -19
  8. retab/resources/evaluations/documents.py +12 -11
  9. retab/resources/evaluations/iterations.py +48 -30
  10. retab/resources/jsonlUtils.py +3 -4
  11. retab/resources/processors/automations/endpoints.py +49 -39
  12. retab/resources/processors/automations/links.py +52 -43
  13. retab/resources/processors/automations/mailboxes.py +74 -59
  14. retab/resources/processors/automations/outlook.py +104 -82
  15. retab/resources/processors/client.py +35 -30
  16. retab/resources/usage.py +2 -0
  17. retab/types/ai_models.py +1 -1
  18. retab/types/deprecated_evals.py +195 -0
  19. retab/types/evaluations/__init__.py +5 -2
  20. retab/types/evaluations/iterations.py +9 -43
  21. retab/types/evaluations/model.py +20 -22
  22. retab/types/extractions.py +1 -0
  23. retab/types/logs.py +5 -6
  24. retab/types/mime.py +1 -10
  25. retab/types/schemas/enhance.py +22 -5
  26. retab/types/schemas/evaluate.py +1 -1
  27. retab/types/schemas/object.py +26 -0
  28. retab/types/standards.py +2 -2
  29. retab/utils/__init__.py +3 -0
  30. retab/utils/ai_models.py +127 -12
  31. retab/utils/hashing.py +24 -0
  32. retab/utils/json_schema.py +1 -26
  33. retab/utils/mime.py +0 -17
  34. {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/METADATA +3 -5
  35. {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/RECORD +37 -51
  36. retab/_utils/__init__.py +0 -0
  37. retab/_utils/_model_cards/anthropic.yaml +0 -59
  38. retab/_utils/_model_cards/auto.yaml +0 -43
  39. retab/_utils/_model_cards/gemini.yaml +0 -117
  40. retab/_utils/_model_cards/openai.yaml +0 -301
  41. retab/_utils/_model_cards/xai.yaml +0 -28
  42. retab/_utils/ai_models.py +0 -138
  43. retab/_utils/benchmarking.py +0 -484
  44. retab/_utils/chat.py +0 -327
  45. retab/_utils/display.py +0 -440
  46. retab/_utils/json_schema.py +0 -2156
  47. retab/_utils/mime.py +0 -165
  48. retab/_utils/responses.py +0 -169
  49. retab/_utils/stream_context_managers.py +0 -52
  50. retab/_utils/usage/__init__.py +0 -0
  51. retab/_utils/usage/usage.py +0 -301
  52. {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/WHEEL +0 -0
  53. {retab-0.0.42.dist-info → retab-0.0.43.dist-info}/top_level.txt +0 -0
retab/utils/ai_models.py CHANGED
@@ -6,6 +6,7 @@ from ..types.ai_models import AIProvider, GeminiModel, OpenAIModel, xAI_Model, R
6
6
 
7
7
  MODEL_CARDS_DIR = os.path.join(os.path.dirname(__file__), "_model_cards")
8
8
 
9
+
9
10
  def merge_model_cards(base: dict, override: dict) -> dict:
10
11
  result = base.copy()
11
12
  for key, value in override.items():
@@ -17,6 +18,7 @@ def merge_model_cards(base: dict, override: dict) -> dict:
17
18
  result[key] = value
18
19
  return result
19
20
 
21
+
20
22
  def load_model_cards(yaml_file: str) -> list[ModelCard]:
21
23
  raw_cards = yaml.safe_load(open(yaml_file))
22
24
  name_to_card = {c["model"]: c for c in raw_cards if "inherits" not in c}
@@ -31,14 +33,18 @@ def load_model_cards(yaml_file: str) -> list[ModelCard]:
31
33
  final_cards.append(ModelCard(**card))
32
34
  return final_cards
33
35
 
36
+
34
37
  # Load all model cards
35
- model_cards = sum([
36
- load_model_cards(os.path.join(MODEL_CARDS_DIR, "openai.yaml")),
37
- load_model_cards(os.path.join(MODEL_CARDS_DIR, "anthropic.yaml")),
38
- load_model_cards(os.path.join(MODEL_CARDS_DIR, "xai.yaml")),
39
- load_model_cards(os.path.join(MODEL_CARDS_DIR, "gemini.yaml")),
40
- load_model_cards(os.path.join(MODEL_CARDS_DIR, "auto.yaml")),
41
- ], [])
38
+ model_cards = sum(
39
+ [
40
+ load_model_cards(os.path.join(MODEL_CARDS_DIR, "openai.yaml")),
41
+ load_model_cards(os.path.join(MODEL_CARDS_DIR, "anthropic.yaml")),
42
+ load_model_cards(os.path.join(MODEL_CARDS_DIR, "xai.yaml")),
43
+ load_model_cards(os.path.join(MODEL_CARDS_DIR, "gemini.yaml")),
44
+ load_model_cards(os.path.join(MODEL_CARDS_DIR, "auto.yaml")),
45
+ ],
46
+ [],
47
+ )
42
48
  model_cards_dict = {card.model: card for card in model_cards}
43
49
 
44
50
 
@@ -108,7 +114,7 @@ def get_provider_for_model(model_id: str) -> AIProvider:
108
114
 
109
115
 
110
116
  def assert_valid_model_extraction(model: str) -> None:
111
- try:
117
+ try:
112
118
  get_provider_for_model(model)
113
119
  except ValueError:
114
120
  raise ValueError(
@@ -132,7 +138,116 @@ def assert_valid_model_schema_generation(model: str) -> None:
132
138
  return
133
139
  else:
134
140
  raise ValueError(
135
- f"Invalid model format: {model}. Must be either:\n"
136
- f"1. A standard model: {get_args(OpenAIModel)}\n"
137
- f"2. A fine-tuned model in format 'base_model:id' where base_model is one of the standard openai models"
138
- ) from None
141
+ f"Invalid model format: {model}. Must be either:\n"
142
+ f"1. A standard model: {get_args(OpenAIModel)}\n"
143
+ f"2. A fine-tuned model in format 'base_model:id' where base_model is one of the standard openai models"
144
+ ) from None
145
+
146
+
147
+ def get_model_credits(model: str) -> float:
148
+ """
149
+ Get the credit cost for a given model based on its capabilities and size.
150
+
151
+ Credit tiers:
152
+ - 0.1 credits: Micro/nano models (fastest, cheapest)
153
+ - 0.5 credits: Small/mini models (balanced performance)
154
+ - 2.0 credits: Large/advanced models (highest capability)
155
+
156
+ Args:
157
+ model: The model name to look up
158
+
159
+ Returns:
160
+ The credit cost for the model
161
+
162
+ Raises:
163
+ ValueError: If no model card is found for the specified model
164
+ """
165
+ try:
166
+ model_card = get_model_card(model)
167
+ model_name = get_model_from_model_id(model)
168
+ except ValueError:
169
+ # Unknown model, return 0 credits (no billing)
170
+ return 0.0
171
+
172
+ # Define credit mapping based on model capabilities and naming patterns
173
+ model_credits = {
174
+ # 0.1 credit models - Micro/Nano tier (fastest, most efficient)
175
+ "auto-micro": 0.1,
176
+ "gemini-flash-lite": 0.1,
177
+ "gpt-4o-mini": 0.1,
178
+ "gpt-3.5-turbo": 0.1,
179
+ "gpt-4.1-nano": 0.1, # Future model
180
+ # 0.5 credit models - Small/Mini tier (balanced performance)
181
+ "auto-small": 0.5,
182
+ "gemini-flash": 0.5,
183
+ "gpt-4o": 0.5,
184
+ "gpt-4-turbo": 0.5,
185
+ "gpt-4.1-mini": 0.5, # Future model
186
+ "claude-3-haiku": 0.5,
187
+ "claude-3.5-haiku": 0.5,
188
+ # 2.0 credit models - Large/Advanced tier (highest capability)
189
+ "auto-large": 2.0,
190
+ "gemini-pro": 2.0,
191
+ "gpt-4": 2.0,
192
+ "gpt-4.1": 2.0, # Future model
193
+ "o1-mini": 2.0,
194
+ "o1-preview": 2.0,
195
+ "o3": 5.0, # Future model
196
+ "claude-3-sonnet": 2.0,
197
+ "claude-3-opus": 2.0,
198
+ "claude-3.5-sonnet": 2.0,
199
+ "grok-beta": 2.0,
200
+ "grok-2": 2.0,
201
+ # Special reasoning models - Higher tier
202
+ "o1": 3.0,
203
+ "o3-max": 3.0, # Future model, highest tier
204
+ }
205
+
206
+ # Return the credits for the specific model
207
+ if model_name in model_credits:
208
+ return model_credits[model_name]
209
+
210
+ # Fallback logic based on model patterns and capabilities
211
+ model_lower = model_name.lower()
212
+
213
+ # Auto-model fallback logic
214
+ if model_lower.startswith("auto-"):
215
+ if "micro" in model_lower or "nano" in model_lower:
216
+ return 0.1
217
+ elif "small" in model_lower or "mini" in model_lower:
218
+ return 0.5
219
+ elif "large" in model_lower or "pro" in model_lower:
220
+ return 2.0
221
+
222
+ # Gemini model fallback logic
223
+ if "gemini" in model_lower:
224
+ if "lite" in model_lower or "nano" in model_lower:
225
+ return 0.1
226
+ elif "flash" in model_lower:
227
+ return 0.5
228
+ elif "pro" in model_lower or "ultra" in model_lower:
229
+ return 2.0
230
+
231
+ # GPT model fallback logic
232
+ if "gpt" in model_lower:
233
+ if "mini" in model_lower or "3.5" in model_lower:
234
+ return 0.1
235
+ elif "4o" in model_lower and "mini" not in model_lower:
236
+ return 0.5
237
+ elif "4" in model_lower or "o1" in model_lower:
238
+ return 2.0
239
+
240
+ # Claude model fallback logic
241
+ if "claude" in model_lower:
242
+ if "haiku" in model_lower:
243
+ return 0.5
244
+ elif "sonnet" in model_lower or "opus" in model_lower:
245
+ return 2.0
246
+
247
+ # Default for unknown models - use model card info if available
248
+ try:
249
+ # Try to determine based on model card properties
250
+ # This could be enhanced based on the actual ModelCard structure
251
+ return 1.0 # Default middle tier
252
+ except:
253
+ return 0.0 # No billing for completely unknown models
retab/utils/hashing.py ADDED
@@ -0,0 +1,24 @@
1
+ import base64
2
+ import hashlib
3
+ import json
4
+
5
+ from fastapi.encoders import jsonable_encoder
6
+
7
+ # ************* Generalistic utils *************
8
+
9
+
10
+ def generate_blake2b_hash_from_bytes(bytes_: bytes) -> str:
11
+ return hashlib.blake2b(bytes_, digest_size=8).hexdigest()
12
+
13
+
14
+ def generate_blake2b_hash_from_base64(base64_string: str) -> str:
15
+ return generate_blake2b_hash_from_bytes(base64.b64decode(base64_string))
16
+
17
+
18
+ def generate_blake2b_hash_from_string(input_string: str) -> str:
19
+ return generate_blake2b_hash_from_bytes(input_string.encode("utf-8"))
20
+
21
+
22
+ def generate_blake2b_hash_from_dict(input_dict: dict) -> str:
23
+ jsonable_dict = jsonable_encoder(input_dict)
24
+ return generate_blake2b_hash_from_string(json.dumps(jsonable_dict, sort_keys=True).strip())
@@ -15,7 +15,7 @@ from pydantic import BaseModel, BeforeValidator, Field, create_model
15
15
  from pydantic.config import ConfigDict
16
16
 
17
17
  from ..types.schemas.layout import Column, FieldItem, Layout, RefObject, Row, RowList
18
- from .mime import generate_blake2b_hash_from_string
18
+ from .hashing import generate_blake2b_hash_from_string
19
19
 
20
20
  # **** Validation Functions ****
21
21
 
@@ -2091,31 +2091,6 @@ def sanitize(instance: Any, schema: dict[str, Any]) -> Any:
2091
2091
  return __sanitize_instance(instance, expanded_schema)
2092
2092
 
2093
2093
 
2094
- def compute_schema_data_id(json_schema: dict[str, Any]) -> str:
2095
- """Returns the schema_data_id for a given JSON schema.
2096
-
2097
- The schema_data_id is a hash of the schema data, ignoring all prompt/description/default fields
2098
- and other non-structural metadata.
2099
-
2100
- Args:
2101
- json_schema: The JSON schema to compute the ID for
2102
-
2103
- Returns:
2104
- str: A hash string representing the schema data version with "sch_data_id_" prefix
2105
- """
2106
-
2107
- return "sch_data_id_" + generate_blake2b_hash_from_string(
2108
- json.dumps(
2109
- clean_schema(
2110
- copy.deepcopy(json_schema),
2111
- remove_custom_fields=True,
2112
- fields_to_remove=["description", "default", "title", "required", "examples", "deprecated", "readOnly", "writeOnly"],
2113
- ),
2114
- sort_keys=True,
2115
- ).strip()
2116
- )
2117
-
2118
-
2119
2094
  def validate_json_against_schema(
2120
2095
  data: Any,
2121
2096
  schema: dict[str, Any],
retab/utils/mime.py CHANGED
@@ -16,23 +16,6 @@ from ..types.modalities import SUPPORTED_TYPES
16
16
 
17
17
  T = TypeVar("T")
18
18
 
19
-
20
- def generate_blake2b_hash_from_bytes(bytes_: bytes) -> str:
21
- return hashlib.blake2b(bytes_, digest_size=8).hexdigest()
22
-
23
-
24
- def generate_blake2b_hash_from_base64(base64_string: str) -> str:
25
- return generate_blake2b_hash_from_bytes(base64.b64decode(base64_string))
26
-
27
-
28
- def generate_blake2b_hash_from_string(input_string: str) -> str:
29
- return generate_blake2b_hash_from_bytes(input_string.encode("utf-8"))
30
-
31
-
32
- def generate_blake2b_hash_from_dict(input_dict: dict) -> str:
33
- return generate_blake2b_hash_from_string(json.dumps(input_dict, sort_keys=True).strip())
34
-
35
-
36
19
  def convert_pil_image_to_mime_data(image: PIL.Image.Image) -> MIMEData:
37
20
  """Convert a PIL Image object to a MIMEData object.
38
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: retab
3
- Version: 0.0.42
3
+ Version: 0.0.43
4
4
  Summary: Retab official python library
5
5
  Home-page: https://github.com/Retab-dev/retab
6
6
  Author: Retab
@@ -61,7 +61,7 @@ Made with love by the team at [Retab](https://retab.com) 🤍.
61
61
 
62
62
  ### What is Retab?
63
63
 
64
- Retab solves all the major challenges in document processing with LLMs:
64
+ Retab solves all the major challenges in document processing with Large Language Models:
65
65
 
66
66
  1. **Universal Document Preprocessing**: Convert any file type (PDFs, Excel, emails, etc.) into LLM-ready format without writing custom parsers
67
67
  2. **Structured, Schema-driven Extraction**: Get consistent, reliable outputs using schema-based prompt engineering
@@ -90,7 +90,7 @@ Many people haven't yet realized how powerful LLMs have become at document proce
90
90
 
91
91
  ## Code examples
92
92
 
93
- ## You can check our Github repository to see code examples: [python examples](https://github.com/Retab-dev/retab/tree/main/examples) and [jupyter notebooks](https://github.com/Retab-dev/retab-nodejs/tree/main/notebooks).
93
+ You can check our Github repository to see code examples: [python examples](https://github.com/Retab-dev/retab/tree/main/examples) and [jupyter notebooks](https://github.com/Retab-dev/retab-nodejs/tree/main/notebooks).
94
94
 
95
95
  ## Community
96
96
 
@@ -112,8 +112,6 @@ We share our roadmap publicly on [Github](https://github.com/Retab-dev/retab)
112
112
  Among the features we're working on:
113
113
 
114
114
  * [ ] Node.js SDK
115
- * [ ] Low-level speed optimizations for Evals Frontend
116
115
  * [ ] Schema optimization autopilot
117
116
  * [ ] Sources API
118
- * [ ] Parse API for RAG
119
117
 
@@ -1,77 +1,62 @@
1
- retab/__init__.py,sha256=sRurau6z8m4pn7VFKdHr9FyNA9Ffhvg064i2NF0RmPc,124
1
+ retab/__init__.py,sha256=IfXoXvlvx4t1q5Ge6_pCOQnGOymVPxT7Dm1vQJ0OqoA,153
2
2
  retab/_resource.py,sha256=JfAU4UTa05ugWfbrpO7fsVr_pFewht99NkoIfK6kBQM,577
3
- retab/client.py,sha256=gbBSkOWbXLoYXwRGXkhubBeIxAecVHvW_3b9ELNSE2Q,29768
3
+ retab/client.py,sha256=iO7J5n4k767IuIvOSkWFD-QARUFwpVgLef3rIttGZmA,27633
4
4
  retab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- retab/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- retab/_utils/ai_models.py,sha256=u0SDwSd3SNhJaFm6bPepiGIh4BbocGYDKk4qu3kVIxc,4821
7
- retab/_utils/benchmarking.py,sha256=ZSuVcRkYr4gD90yezAv6TuKaFdj2ulc5d5x3lXLbQss,17849
8
- retab/_utils/chat.py,sha256=ZHt6oEX2lZl8O0tIj-rHnqgmDbHxMYEWPkx0fArvojo,14352
9
- retab/_utils/display.py,sha256=ZFPbiBnwEWGR-suS8e9Xilz9OqyYRDwsKYWfbFSJPJM,18868
10
- retab/_utils/json_schema.py,sha256=vbIg4NqREBq_eNbYdBTGw5ykhUmKkSiVRAahAOrWEZg,82237
11
- retab/_utils/mime.py,sha256=S6pH_CmDc7fnb14PIoK3XALwb_Quha34a112joyUNmY,5723
12
- retab/_utils/responses.py,sha256=MqY6G9OCLMJhCZcT5uhky5xv_IRqI43aXRjvBU-L58E,7023
13
- retab/_utils/stream_context_managers.py,sha256=gI1gVQSj3nWz6Mvjz7Ix5AiY0g6vSL-c2tPfuP04izo,2314
14
- retab/_utils/_model_cards/anthropic.yaml,sha256=faGKfsNNvi3Wgu2sFseV5KVOseJClHBPPdBVv6nWyXo,1413
15
- retab/_utils/_model_cards/auto.yaml,sha256=3nMlz9K2l5dNSTk-7zi2Id5oohM2L3E2_di2J6UpfdM,1048
16
- retab/_utils/_model_cards/gemini.yaml,sha256=irV9c0WumgEOIYbAkR2jsisfK_4dY1Tzja2D1j1euF0,2870
17
- retab/_utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPxORUR7JM,7639
18
- retab/_utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
19
- retab/_utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- retab/_utils/usage/usage.py,sha256=g2_Co3gaB1Akgbszd-I7ddXMM-EyI7Gz9SI5SdtlBII,12949
21
5
  retab/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
6
  retab/resources/evals.py,sha256=vOMyCJ0dVy6YZUv4NtkujZBZCByvr0PmSpV6UGnorHw,29927
23
7
  retab/resources/files.py,sha256=-_GejfQjKEk10HHb5npmLOA9cUnVHic2ZQntE8tw4TQ,954
24
8
  retab/resources/finetuning.py,sha256=Rx8XcqB00UIjEDZcCGp5fM2yz5TW1j36aBicrTa0uAY,2587
25
- retab/resources/jsonlUtils.py,sha256=gv4h3gAxks84r1l09vFVaUkqSGzSu1D0bw-J6lLRf5U,45149
9
+ retab/resources/jsonlUtils.py,sha256=FThZ6QRqtOhcHouSn2xUXn9C3kBRnb0ggBmkunidF6g,45075
26
10
  retab/resources/models.py,sha256=4WidFBnTGZEA65DSn2pLP2SRnCVXkMTw7o_m8xVCFC4,2469
27
11
  retab/resources/openai_example.py,sha256=yz34KvfCvHTZ-AJ9GV-N7ljTTSWBmQEQNMHY2FUbEi4,522
28
12
  retab/resources/prompt_optimization.py,sha256=MrzRehmFQK4Ltyr1jhLhx3yO22UxtDpmg9B3CDjirFc,3488
29
13
  retab/resources/schemas.py,sha256=zoxhpCO0jIUx0f7VvS6QAbGlHmxtyBVvmyYoi5aFRQg,16054
30
- retab/resources/usage.py,sha256=OmJMPwmP1TBuZmMKrjaGWnl2mQ9VbQDKSAm6l7Tsaf4,13601
14
+ retab/resources/usage.py,sha256=iyEP16FVFmESnANHTEPzbbQchsMwnoYa9zzlJSQR7-o,13759
31
15
  retab/resources/consensus/__init__.py,sha256=0b3MSOFiYPwkNTrs_dBPRhwSl3kuk8BtG5QXofIUb9M,89
32
- retab/resources/consensus/client.py,sha256=D2TeqqCp0ZvqvQLAe1i3nW8nnf-Ms6zNEXRA9C26TQI,3705
16
+ retab/resources/consensus/client.py,sha256=gRiYUtSeNluCFZ7YfIwwWzg1M4rPpd_MJ0wJIzvzlPY,3736
33
17
  retab/resources/consensus/completions.py,sha256=6vTnqADY6GueV28smYRDQ2yooj94G2WHMlQLyKOXqtw,8372
34
18
  retab/resources/consensus/completions_stream.py,sha256=DlU9od01F1Fmh9WjTLhq4KsntfqXy5jGGwrYauS43Ec,10893
35
- retab/resources/consensus/responses.py,sha256=av__D_3hs8GlV7RnBnrLmtjq6_DzbWwfSP8lzjiHlw8,9935
19
+ retab/resources/consensus/responses.py,sha256=hf1_gXBG8iwrBGyuXx16qCh6ULDXn9a0Uty1C-WiG7s,9966
36
20
  retab/resources/consensus/responses_stream.py,sha256=OopJ9aoO7HctfhLnXzJx8-dkk-4jK_juOw6jUAkzwVM,11671
37
21
  retab/resources/documents/__init__.py,sha256=OjXmngFN0RKqO4SI-mJBNzr6Ex6rMxfq0DxaqzP0RQs,89
38
- retab/resources/documents/client.py,sha256=fTaNecDke_fGEcqQIcTJcGZDKhSMWgZl2bxc6W48oOg,25295
39
- retab/resources/documents/extractions.py,sha256=jMBgirKohgMTsdwX-LQldmvgHVHt-Q2N5810K1tzk9Q,25623
22
+ retab/resources/documents/client.py,sha256=Okf4NvNjH4F5-jTJ7xIBv4LiMyM7TZkonTEDD5SuG6Q,25872
23
+ retab/resources/documents/extractions.py,sha256=KQJMgu_w5TfR3NI-pvNaGayjZc61sCNQleoXfmA00j0,25041
40
24
  retab/resources/evaluations/__init__.py,sha256=3npbUDbxYn3ihnUKV7PRYNBYqL7MZ9AwhQHr7LaIESg,97
41
- retab/resources/evaluations/client.py,sha256=SdI-m_8V0BApparlHO1mYFwvjAGWsHBKD_-Z3ZLcdq0,10658
42
- retab/resources/evaluations/documents.py,sha256=G58AYRpmlGRspwuunwhWB_cqN_Zn5Ukp_f2NAMyxMi4,9489
43
- retab/resources/evaluations/iterations.py,sha256=v9kD1tJ-3I0A02zVIwSInKHwPzGhmub7fc5FEBJkT74,17664
25
+ retab/resources/evaluations/client.py,sha256=JmiyzfomM63jEsv_JoLNz6lySVmq_kla-nq3Z1JMdlg,11241
26
+ retab/resources/evaluations/documents.py,sha256=E6PF7PcIX3r1cTrxYwdaRp8XKp9hCc58wnH0i7Gjnm8,9807
27
+ retab/resources/evaluations/iterations.py,sha256=yJbiNGv9u2ze8t0Ple_o9QpL4W-9ftbxKOu4jsEjrTI,18742
44
28
  retab/resources/processors/__init__.py,sha256=w1HrMdSi3xlrcEDFMQ9BA7rbUhOFWSTkTKkkR2PfFHQ,93
45
- retab/resources/processors/client.py,sha256=EMu7VlniDePhPvlCryGwXWaG2wketLA6vz8JUFs8U0A,20710
29
+ retab/resources/processors/client.py,sha256=81CG3CH63pI7FAxOLHCgAEJWh-1TgNmkvsaxpTkjcRM,20530
46
30
  retab/resources/processors/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
47
31
  retab/resources/processors/automations/client.py,sha256=3w54F0JfC2GYDosLux8LVEjDd_RXqQ29-SyNXGa28U8,10500
48
- retab/resources/processors/automations/endpoints.py,sha256=9ur3OR1b-gKaM4JqiQVaWUS0DmkfNvYgbi_TkbyoXQ4,11046
49
- retab/resources/processors/automations/links.py,sha256=LXOnDlaei07MRIc5KfxhCS5QikE8g0uptuYFeimXFPg,11449
32
+ retab/resources/processors/automations/endpoints.py,sha256=zJ556BNighciPff1laA_bBPZNxT4mWmGi-kDMXa5_tw,10893
33
+ retab/resources/processors/automations/links.py,sha256=cSWLYE1g9VbR2kCckYNuE2xrMHYyGQ6Ei5YXmYjLkR0,11163
50
34
  retab/resources/processors/automations/logs.py,sha256=seBjzv4Tm8fMJcApzZcyR5yXG5YLP0yW5BH5ql7JMcg,8827
51
- retab/resources/processors/automations/mailboxes.py,sha256=7TQcUDM9iX_E_Yg_r2l59Jxf-1p30bx4jTMY-rgD5MQ,16155
52
- retab/resources/processors/automations/outlook.py,sha256=ANX0MftT4VQt8ehZkhN1xpaccph9pDNXYLbO2WW3wsw,15189
35
+ retab/resources/processors/automations/mailboxes.py,sha256=OwThPbkjixPnmIIsOmKRqDp4upGhyrXtwMJ9JFwJUIw,15795
36
+ retab/resources/processors/automations/outlook.py,sha256=UrzyVRMfzkSwbMo4EsAxYkqOs3J8IBN2yrXrv40lo3w,14616
53
37
  retab/resources/processors/automations/tests.py,sha256=nbO6qIkQnpr629ZkCchbfCJOm7KyjDOaLsxXxB3i0cg,6219
54
38
  retab/resources/secrets/__init__.py,sha256=SwofMyk96k0YSyj1d_GRxhpVx4wb4TA97TISsTjB0Kc,105
55
39
  retab/resources/secrets/client.py,sha256=nXt1cgvkWqhA99WTnC1PWbWJq-EbwvoDuCQOa0GJOOU,599
56
40
  retab/resources/secrets/external_api_keys.py,sha256=3TuJxjk65EPUT2XC3wBcYWaVwqzc6QGv9BoHufzxTLU,3759
57
41
  retab/resources/secrets/webhook.py,sha256=2mFDNblQYBGOwgqOG5gfRJkusQX7Hjy28XZ7O7ffkl8,1805
58
42
  retab/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- retab/types/ai_models.py,sha256=DFLW6vi45heZGKkMJrAKs6j9K97Sn2N5IEE4hMoQAJs,4896
43
+ retab/types/ai_models.py,sha256=tnwYd7fgacsz7TAFoheHMCCyS7DRDfLVc8B0l-EV3_I,4945
60
44
  retab/types/browser_canvas.py,sha256=U3yLqJcSwfturcIsNFSblRtFtnG3p-UL1YYoM9KZfdE,70
61
45
  retab/types/chat.py,sha256=l32vhLtNcdmHFjG4iVC617j38x6a2oH7CNPwlvqdF8g,424
62
46
  retab/types/completions.py,sha256=ZQU29bm-FhdOzky4_Dp2N--fedR82C3QfCRZCJCQ-P8,5381
63
47
  retab/types/consensus.py,sha256=EsFCsyZK8NhkQ1BizFpnGN54D24hRFKc0xwt9VpH11c,1161
48
+ retab/types/deprecated_evals.py,sha256=YHxtQxzQ8RgQyzN1CEdAfOP2Nwc07b-XVPydPveTxbg,9306
64
49
  retab/types/evals.py,sha256=JNdWu4hplfSEuSzu9l27ZVr2RO2opUKEruIpKXZosmU,9953
65
50
  retab/types/events.py,sha256=NrisdzJAaJ_kkfgdsqoiDB-Upm0LnbIGZikU_e9XXWw,2195
66
- retab/types/extractions.py,sha256=Pvzu2Bu62X6P055xDj6Du8kf_ilJBiyeYl_uN5GfGVw,6038
51
+ retab/types/extractions.py,sha256=_slYXQrWPi93iMdJIOIm-WzYwWPG2Fiyd3Xx0zfekl0,6144
67
52
  retab/types/inference_settings.py,sha256=F_mBPFVY1yAwsHD11Z2ljMf3zkvviOey_JBnu8yEF84,572
68
- retab/types/logs.py,sha256=uWgul1YpbczzWozuVnBWuVMm6NAZElSE1rXs_O8A98s,9260
53
+ retab/types/logs.py,sha256=mVC11hi2Lv0yh7zeoTMxqFNLaGU0pyziMmT7I8NDuN8,9098
69
54
  retab/types/metrics.py,sha256=0KEWUWW13s_tWjh7oUs33ip9TPwI7LZUNGE7k5qNoOo,1947
70
- retab/types/mime.py,sha256=Fhq04yQoHhyx5wBjx7GNyJqQQJtcM_yEZt7uQxq6Br4,11038
55
+ retab/types/mime.py,sha256=rOu8iER0pRAgT8PTmKIN6ETnUPGfFCZFbQzJUt9bka0,10815
71
56
  retab/types/modalities.py,sha256=_2iGC_EEZT0Y-7PV_nHar5vqeEdsK7oy7ZJPV681nkg,1581
72
57
  retab/types/pagination.py,sha256=-XrKILKX_5isTHTfShLiK3Kwp21Y6Wqy0Jci8lIFQig,109
73
58
  retab/types/predictions.py,sha256=r7XM4rIMkUU10VsUkQ1wYdSkIApSGCXWkWxz7sMdBOk,1292
74
- retab/types/standards.py,sha256=BT8U2x3wBiC-741Bxer9ys0CPb7kWhxt1Wvl2y2aoM0,1452
59
+ retab/types/standards.py,sha256=7aGtuvzzkKidvqY8JB2Cjfn43V80FeKwrTtp162kjKc,1477
75
60
  retab/types/automations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
61
  retab/types/automations/cron.py,sha256=jDx0VzciboQw2_whvBXzgX5ZS0z2DksTgmyhXCSSGMk,3174
77
62
  retab/types/automations/endpoints.py,sha256=IbylkBUBllcrtr9tifug0ptVq2vFKixuQ6e2JfW5Xfw,666
@@ -87,10 +72,10 @@ retab/types/documents/correct_orientation.py,sha256=e-ivsslI6L6Gl0YkcslXw_DH620x
87
72
  retab/types/documents/create_messages.py,sha256=S2nJ4GHZ3hKTZ4kNs5XrCZeaokOsy9LqRC-FVHkFvSY,10285
88
73
  retab/types/documents/extractions.py,sha256=z1XlQLeCGcUAipVB8WGbbUjaBor1bN9BxQzeBaDMj3E,19096
89
74
  retab/types/documents/parse.py,sha256=-gCzloJhZraR_Pi9Je0SL8aP52n0GfO9qH838usPA3w,1418
90
- retab/types/evaluations/__init__.py,sha256=fRQlK6y3x3SHqaukVYd9_zH8HrUk9TpoG9dlOTuIkcY,920
75
+ retab/types/evaluations/__init__.py,sha256=Jr-y_b7hE20LXMJoq4gkA3VF6bCUVGgAIbOWmMaXc7Q,1012
91
76
  retab/types/evaluations/documents.py,sha256=oy0nqTrv0Pe__5ligeNWn5MbqVDAFRSrXYbCVoLxyXw,1268
92
- retab/types/evaluations/iterations.py,sha256=lVHcqmIT0AtJyn7dc_Mw-WbeA0gfTUG1KoifCOFPIkg,4635
93
- retab/types/evaluations/model.py,sha256=_ArYgSP51nh__-0MxzGxWUl8bvISX9Dm6juuybKb6yA,3131
77
+ retab/types/evaluations/iterations.py,sha256=YfiqaTvCxmPIJORHzCgtafshUBRZN9LAo1y2cOPSBco,3306
78
+ retab/types/evaluations/model.py,sha256=I9C8_LxkjrpzYBxcNbhAFUiq9cXAjoSlZDunK23305o,3159
94
79
  retab/types/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
80
  retab/types/jobs/base.py,sha256=R4UXcvgDmkgm4FB0ke5kQrSDWC95TweBLlc08ptfqt8,1695
96
81
  retab/types/jobs/batch_annotation.py,sha256=Rftuu4Q6YzB4c39kWsqPGJ1QbPJrJWjWhupaKGO9kGE,281
@@ -99,21 +84,22 @@ retab/types/jobs/finetune.py,sha256=6O9NUy-ap_aqZ73tYx-NRRdFgKOIvk8WcItGhEUvrSQ,
99
84
  retab/types/jobs/prompt_optimization.py,sha256=P7JI0zKFExCN4ws8kpFrCHBFbrJ4m4-zGJnNVXWa-ic,1306
100
85
  retab/types/jobs/webcrawl.py,sha256=C3_7mW2mmOXs6ypktDIHdjMnify90pFo70wmhrs_TP8,183
101
86
  retab/types/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
- retab/types/schemas/enhance.py,sha256=bkfkC_JCDvEolOdrp27rHbO1njEyrLJAM7qgwHGUYQk,2162
103
- retab/types/schemas/evaluate.py,sha256=M9ZMv2FCcnSRGYBR3CUbCA88pW66EZEZC1YwoJUOei0,2206
87
+ retab/types/schemas/enhance.py,sha256=2FR3APE1yh6_GLoQ8EDFAS1y3oM6B4D4pexP1ohazug,2738
88
+ retab/types/schemas/evaluate.py,sha256=vCXVfC4H44r0lgP1IbxtvlxhoPTZV2l7wWlyERetvBc,2208
104
89
  retab/types/schemas/generate.py,sha256=pb6e6yJ2KPswmNHNkFcRhata7B698yBLnzlFVspJ9mE,1194
105
90
  retab/types/schemas/layout.py,sha256=JLPwQGIWfPBoe1Y5r-MhiNDJigzZ-yKZnVGgox0uqMk,1487
106
- retab/types/schemas/object.py,sha256=JLjeNfV9swAkTgmZo9DtQRNhUQnJmWK3yGeL3BE41Yo,25470
91
+ retab/types/schemas/object.py,sha256=3GG9dpP0qG2E9BTWuSmMjELQtcf4cpM26Uy5nim2QV0,26222
107
92
  retab/types/schemas/templates.py,sha256=Of4gYULkxULhMOv1X1zXe9pd7o3b21vDUF4BYSouAsc,3465
108
93
  retab/types/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
94
  retab/types/secrets/external_api_keys.py,sha256=-yaaOfNLxKpll3oD-0htQlW8S03lyWs9Mmk9HOdyQ3g,437
110
- retab/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- retab/utils/ai_models.py,sha256=u0SDwSd3SNhJaFm6bPepiGIh4BbocGYDKk4qu3kVIxc,4821
95
+ retab/utils/__init__.py,sha256=cta2g2pCC9nDHbM4-s5PwLNqwF31T8oP5wy5UvGrJc8,151
96
+ retab/utils/ai_models.py,sha256=wooYSZAxLiL2i9lSku2266tyown0rhPnjOzoyBgkUH4,8421
112
97
  retab/utils/benchmarking.py,sha256=ZSuVcRkYr4gD90yezAv6TuKaFdj2ulc5d5x3lXLbQss,17849
113
98
  retab/utils/chat.py,sha256=ZHt6oEX2lZl8O0tIj-rHnqgmDbHxMYEWPkx0fArvojo,14352
114
99
  retab/utils/display.py,sha256=ZFPbiBnwEWGR-suS8e9Xilz9OqyYRDwsKYWfbFSJPJM,18868
115
- retab/utils/json_schema.py,sha256=vbIg4NqREBq_eNbYdBTGw5ykhUmKkSiVRAahAOrWEZg,82237
116
- retab/utils/mime.py,sha256=S6pH_CmDc7fnb14PIoK3XALwb_Quha34a112joyUNmY,5723
100
+ retab/utils/hashing.py,sha256=_BMVUvftOcJav68QL0rLkH2dbhW9RRJPzeGC2akR0fc,757
101
+ retab/utils/json_schema.py,sha256=7MBPVMYxc0ExtIRAZSEtMwe3PuVMrWs6CBjSse5X9js,81395
102
+ retab/utils/mime.py,sha256=KQIMncxOkNA9WbG5R9rr5VWmjm_ubGOPG0oPJvJp6_g,5155
117
103
  retab/utils/responses.py,sha256=MqY6G9OCLMJhCZcT5uhky5xv_IRqI43aXRjvBU-L58E,7023
118
104
  retab/utils/stream_context_managers.py,sha256=gI1gVQSj3nWz6Mvjz7Ix5AiY0g6vSL-c2tPfuP04izo,2314
119
105
  retab/utils/_model_cards/anthropic.yaml,sha256=faGKfsNNvi3Wgu2sFseV5KVOseJClHBPPdBVv6nWyXo,1413
@@ -123,7 +109,7 @@ retab/utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPx
123
109
  retab/utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
124
110
  retab/utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
111
  retab/utils/usage/usage.py,sha256=PoQAMSWqEXYIRdp-JW9HjecFVitD_oMbxDMtDJdqWnQ,12948
126
- retab-0.0.42.dist-info/METADATA,sha256=iXf44YON_rAIYSUqLblaiAahfFIMoyTivm1UkPYxrx8,4549
127
- retab-0.0.42.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
128
- retab-0.0.42.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
129
- retab-0.0.42.dist-info/RECORD,,
112
+ retab-0.0.43.dist-info/METADATA,sha256=Z3U8j90ruwggK7JMSjKGJoH8TnDlh9hrKgC4DkxBk_I,4484
113
+ retab-0.0.43.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
114
+ retab-0.0.43.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
115
+ retab-0.0.43.dist-info/RECORD,,
retab/_utils/__init__.py DELETED
File without changes
@@ -1,59 +0,0 @@
1
- - model: "claude-3-5-sonnet-latest"
2
- pricing:
3
- text:
4
- prompt: 3.00
5
- cached_discount: 0.5
6
- completion: 15.00
7
- audio: null
8
- capabilities:
9
- modalities: ["text", "image"]
10
- endpoints: ["chat_completions"]
11
- features: ["streaming", "function_calling"]
12
- permissions:
13
- show_in_free_picker: true
14
- show_in_paid_picker: true
15
-
16
- - model: "claude-3-5-sonnet-20241022"
17
- inherits: "claude-3-5-sonnet-latest"
18
- permissions:
19
- show_in_free_picker: false
20
- show_in_paid_picker: false
21
-
22
- - model: "claude-3-opus-20240229"
23
- pricing:
24
- text:
25
- prompt: 15.00
26
- cached_discount: 0.5
27
- completion: 75.00
28
- audio: null
29
- capabilities:
30
- modalities: ["text", "image"]
31
- endpoints: ["chat_completions"]
32
- features: ["streaming", "function_calling"]
33
- permissions:
34
- show_in_free_picker: true
35
- show_in_paid_picker: true
36
-
37
- - model: "claude-3-sonnet-20240229"
38
- pricing:
39
- text:
40
- prompt: 3.00
41
- cached_discount: 0.5
42
- completion: 15.00
43
- audio: null
44
- capabilities:
45
- modalities: ["text", "image"]
46
- endpoints: ["chat_completions"]
47
- features: ["streaming", "function_calling"]
48
-
49
- - model: "claude-3-haiku-20240307"
50
- pricing:
51
- text:
52
- prompt: 0.25
53
- cached_discount: 0.5
54
- completion: 1.25
55
- audio: null
56
- capabilities:
57
- modalities: ["text", "image"]
58
- endpoints: ["chat_completions"]
59
- features: ["streaming", "function_calling"]
@@ -1,43 +0,0 @@
1
- - model: "auto-large"
2
- pricing:
3
- text:
4
- prompt: 2.00
5
- cached_discount: 0.25
6
- completion: 8.00
7
- audio: null
8
- ft_price_hike: 1.5
9
- capabilities:
10
- modalities: ["text", "image"]
11
- endpoints: ["chat_completions"]
12
- features: ["streaming", "function_calling", "structured_outputs"]
13
- temperature_support: true
14
-
15
- - model: "auto-small"
16
- pricing:
17
- text:
18
- prompt: 0.4
19
- cached_discount: 0.25
20
- completion: 1.6
21
- audio:
22
- prompt: 0.7
23
- cached_discount: 0.175
24
- completion: 1000
25
- capabilities:
26
- modalities: ["text", "image"]
27
- endpoints: ["chat_completions"]
28
- features: ["streaming", "function_calling", "structured_outputs"]
29
- temperature_support: true
30
-
31
- - model: "auto-micro"
32
- pricing:
33
- text:
34
- prompt: 0.1
35
- cached_discount: 0.25
36
- completion: 0.4
37
- audio: null
38
- ft_price_hike: 1.5
39
- capabilities:
40
- modalities: ["text", "image"]
41
- endpoints: ["chat_completions"]
42
- features: ["streaming", "function_calling", "structured_outputs"]
43
- temperature_support: true