retab 0.0.38__py3-none-any.whl → 0.0.40__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 (34) hide show
  1. retab/_utils/_model_cards/anthropic.yaml +59 -0
  2. retab/_utils/_model_cards/auto.yaml +43 -0
  3. retab/_utils/_model_cards/gemini.yaml +117 -0
  4. retab/_utils/_model_cards/openai.yaml +301 -0
  5. retab/_utils/_model_cards/xai.yaml +28 -0
  6. retab/_utils/ai_models.py +109 -71
  7. retab/_utils/responses.py +7 -7
  8. retab/_utils/usage/usage.py +2 -1
  9. retab/resources/consensus/completions.py +14 -14
  10. retab/resources/consensus/completions_stream.py +18 -18
  11. retab/resources/consensus/responses.py +5 -5
  12. retab/resources/consensus/responses_stream.py +5 -5
  13. retab/resources/documents/client.py +122 -27
  14. retab/resources/documents/extractions.py +22 -22
  15. retab/resources/evaluations/documents.py +5 -5
  16. retab/resources/evaluations/iterations.py +7 -7
  17. retab/resources/jsonlUtils.py +2 -2
  18. retab/resources/processors/automations/endpoints.py +2 -2
  19. retab/resources/processors/automations/links.py +2 -2
  20. retab/resources/processors/automations/mailboxes.py +2 -2
  21. retab/resources/processors/automations/outlook.py +2 -2
  22. retab/resources/processors/client.py +7 -7
  23. retab/types/ai_models.py +41 -513
  24. retab/types/automations/webhooks.py +3 -3
  25. retab/types/completions.py +7 -7
  26. retab/types/documents/__init__.py +3 -0
  27. retab/types/documents/extractions.py +17 -17
  28. retab/types/documents/parse.py +32 -0
  29. retab/types/extractions.py +2 -2
  30. retab/types/logs.py +2 -2
  31. {retab-0.0.38.dist-info → retab-0.0.40.dist-info}/METADATA +4 -4
  32. {retab-0.0.38.dist-info → retab-0.0.40.dist-info}/RECORD +34 -28
  33. {retab-0.0.38.dist-info → retab-0.0.40.dist-info}/WHEEL +0 -0
  34. {retab-0.0.38.dist-info → retab-0.0.40.dist-info}/top_level.txt +0 -0
@@ -7,12 +7,12 @@ from openai.types.shared_params.reasoning import Reasoning
7
7
  from openai.types.shared_params.response_format_json_schema import ResponseFormatJSONSchema
8
8
  from pydantic import BaseModel, ConfigDict, Field
9
9
 
10
- from .._utils.ai_models import find_provider_from_model
10
+ from .._utils.ai_models import get_provider_for_model
11
11
  from .ai_models import AIProvider
12
12
  from .chat import ChatCompletionRetabMessage
13
13
 
14
14
 
15
- class UiChatCompletionsRequest(BaseModel):
15
+ class RetabChatCompletionsRequest(BaseModel):
16
16
  model_config = ConfigDict(arbitrary_types_allowed=True)
17
17
  model: str = Field(..., description="Model used for chat completion")
18
18
  messages: list[ChatCompletionRetabMessage] = Field(..., description="Messages to be parsed")
@@ -34,10 +34,10 @@ class UiChatCompletionsRequest(BaseModel):
34
34
  Returns:
35
35
  AIProvider: The AI provider corresponding to the given model.
36
36
  """
37
- return find_provider_from_model(self.model)
37
+ return get_provider_for_model(self.model)
38
38
 
39
39
 
40
- class UiChatCompletionsParseRequest(BaseModel):
40
+ class RetabChatCompletionsParseRequest(BaseModel):
41
41
  model_config = ConfigDict(arbitrary_types_allowed=True)
42
42
  model: str = Field(..., description="Model used for chat completion")
43
43
  messages: list[ChatCompletionRetabMessage] = Field(..., description="Messages to be parsed")
@@ -59,10 +59,10 @@ class UiChatCompletionsParseRequest(BaseModel):
59
59
  Returns:
60
60
  AIProvider: The AI provider corresponding to the given model.
61
61
  """
62
- return find_provider_from_model(self.model)
62
+ return get_provider_for_model(self.model)
63
63
 
64
64
 
65
- class UiChatResponseCreateRequest(BaseModel):
65
+ class RetabChatResponseCreateRequest(BaseModel):
66
66
  input: Union[str, ResponseInputParam] = Field(..., description="Input to be parsed")
67
67
  instructions: Optional[str] = None
68
68
 
@@ -87,4 +87,4 @@ class UiChatResponseCreateRequest(BaseModel):
87
87
  Returns:
88
88
  AIProvider: The AI provider corresponding to the given model.
89
89
  """
90
- return find_provider_from_model(self.model)
90
+ return get_provider_for_model(self.model)
@@ -0,0 +1,3 @@
1
+ from .parse import ParseRequest, ParseResult, RetabUsage
2
+
3
+ __all__ = ["ParseRequest", "ParseResult", "RetabUsage"]
@@ -96,7 +96,7 @@ class FieldLocation(BaseModel):
96
96
  match_level: Literal["token", "line", "block"] | None = Field(default=None, description="The level of the match (token, line, block)")
97
97
 
98
98
 
99
- class UiParsedChoice(ParsedChoice):
99
+ class RetabParsedChoice(ParsedChoice):
100
100
  # Adaptable ParsedChoice that allows None for the finish_reason
101
101
  finish_reason: Literal["stop", "length", "tool_calls", "content_filter", "function_call"] | None = None # type: ignore
102
102
  field_locations: dict[str, list[FieldLocation]] | None = Field(default=None, description="The locations of the fields in the document, if available")
@@ -106,9 +106,9 @@ class UiParsedChoice(ParsedChoice):
106
106
  LikelihoodsSource = Literal["consensus", "log_probs"]
107
107
 
108
108
 
109
- class UiParsedChatCompletion(ParsedChatCompletion):
109
+ class RetabParsedChatCompletion(ParsedChatCompletion):
110
110
  extraction_id: str | None = None
111
- choices: list[UiParsedChoice] # type: ignore
111
+ choices: list[RetabParsedChoice] # type: ignore
112
112
  # Additional metadata fields (UIForm)
113
113
  likelihoods: Optional[dict[str, Any]] = Field(
114
114
  default=None, description="Object defining the uncertainties of the fields extracted when using consensus. Follows the same structure as the extraction object."
@@ -159,7 +159,7 @@ class LogExtractionRequest(BaseModel):
159
159
  ),
160
160
  description="Document analyzed, if not provided a dummy one will be created with the text 'No document provided'",
161
161
  )
162
- completion: dict | UiParsedChatCompletion | Message | ParsedChatCompletion | ChatCompletion | None = None
162
+ completion: dict | RetabParsedChatCompletion | Message | ParsedChatCompletion | ChatCompletion | None = None
163
163
  openai_responses_output: Response | None = None
164
164
  json_schema: dict[str, Any]
165
165
  model: str
@@ -215,7 +215,7 @@ class LogExtractionResponse(BaseModel):
215
215
  error_message: str | None = None
216
216
 
217
217
 
218
- # DocumentExtractResponse = UiParsedChatCompletion
218
+ # DocumentExtractResponse = RetabParsedChatCompletion
219
219
 
220
220
 
221
221
  ###### I'll place here for now -- New Streaming API
@@ -227,7 +227,7 @@ class LogExtractionResponse(BaseModel):
227
227
  # - schema_validation_error: ErrorDetail | None = None # The error in the schema validation of the total accumulated content
228
228
 
229
229
 
230
- class UiParsedChoiceDeltaChunk(ChoiceDeltaChunk):
230
+ class RetabParsedChoiceDeltaChunk(ChoiceDeltaChunk):
231
231
  flat_likelihoods: dict[str, float] = {}
232
232
  flat_parsed: dict[str, Any] = {}
233
233
  flat_deleted_keys: list[str] = []
@@ -236,13 +236,13 @@ class UiParsedChoiceDeltaChunk(ChoiceDeltaChunk):
236
236
  key_mapping: dict[str, Optional[str]] | None = Field(default=None, description="Mapping of consensus keys to original model keys")
237
237
 
238
238
 
239
- class UiParsedChoiceChunk(ChoiceChunk):
240
- delta: UiParsedChoiceDeltaChunk # type: ignore
239
+ class RetabParsedChoiceChunk(ChoiceChunk):
240
+ delta: RetabParsedChoiceDeltaChunk # type: ignore
241
241
 
242
242
 
243
- class UiParsedChatCompletionChunk(StreamingBaseModel, ChatCompletionChunk):
243
+ class RetabParsedChatCompletionChunk(StreamingBaseModel, ChatCompletionChunk):
244
244
  extraction_id: str | None = None
245
- choices: list[UiParsedChoiceChunk] # type: ignore
245
+ choices: list[RetabParsedChoiceChunk] # type: ignore
246
246
  schema_validation_error: ErrorDetail | None = None
247
247
  # Timestamps
248
248
  request_at: datetime.datetime | None = Field(default=None, description="Timestamp of the request")
@@ -273,16 +273,16 @@ class UiParsedChatCompletionChunk(StreamingBaseModel, ChatCompletionChunk):
273
273
  return None
274
274
  return None
275
275
 
276
- def chunk_accumulator(self, previous_cumulated_chunk: "UiParsedChatCompletionChunk | None" = None) -> "UiParsedChatCompletionChunk":
276
+ def chunk_accumulator(self, previous_cumulated_chunk: "RetabParsedChatCompletionChunk | None" = None) -> "RetabParsedChatCompletionChunk":
277
277
  """
278
- Accumulate the chunk into the state, returning a new UiParsedChatCompletionChunk with the accumulated content that could be yielded alone to generate the same state.
278
+ Accumulate the chunk into the state, returning a new RetabParsedChatCompletionChunk with the accumulated content that could be yielded alone to generate the same state.
279
279
  """
280
280
 
281
- def safe_get_delta(chnk: "UiParsedChatCompletionChunk | None", index: int) -> UiParsedChoiceDeltaChunk:
281
+ def safe_get_delta(chnk: "RetabParsedChatCompletionChunk | None", index: int) -> RetabParsedChoiceDeltaChunk:
282
282
  if chnk is not None and index < len(chnk.choices):
283
283
  return chnk.choices[index].delta
284
284
  else:
285
- return UiParsedChoiceDeltaChunk(
285
+ return RetabParsedChoiceDeltaChunk(
286
286
  content="",
287
287
  flat_parsed={},
288
288
  flat_likelihoods={},
@@ -313,7 +313,7 @@ class UiParsedChatCompletionChunk(StreamingBaseModel, ChatCompletionChunk):
313
313
  last_token_at = self.last_token_at
314
314
  request_at = self.request_at
315
315
 
316
- return UiParsedChatCompletionChunk(
316
+ return RetabParsedChatCompletionChunk(
317
317
  extraction_id=self.extraction_id,
318
318
  id=self.id,
319
319
  created=self.created,
@@ -321,8 +321,8 @@ class UiParsedChatCompletionChunk(StreamingBaseModel, ChatCompletionChunk):
321
321
  object=self.object,
322
322
  usage=usage,
323
323
  choices=[
324
- UiParsedChoiceChunk(
325
- delta=UiParsedChoiceDeltaChunk(
324
+ RetabParsedChoiceChunk(
325
+ delta=RetabParsedChoiceDeltaChunk(
326
326
  content=acc_content[i],
327
327
  flat_parsed=acc_flat_parsed[i],
328
328
  flat_likelihoods=acc_flat_likelihoods[i],
@@ -0,0 +1,32 @@
1
+ from typing import Literal
2
+ from pydantic import BaseModel, Field
3
+
4
+ from ..mime import MIMEData, BaseMIMEData
5
+ from ..browser_canvas import BrowserCanvas
6
+
7
+ TableParsingFormat = Literal["markdown", "yaml", "html", "json"]
8
+
9
+
10
+ class RetabUsage(BaseModel):
11
+ """Usage information for document processing."""
12
+
13
+ page_count: int = Field(..., description="Number of pages processed")
14
+ credits: float = Field(..., description="Credits consumed for processing")
15
+
16
+
17
+ class ParseRequest(BaseModel):
18
+ """Request model for document parsing."""
19
+
20
+ document: MIMEData = Field(..., description="Document to parse")
21
+ fast_mode: bool = Field(default=False, description="Use fast mode for parsing (may reduce quality)")
22
+ table_parsing_format: TableParsingFormat = Field(default="html", description="Format for parsing tables")
23
+ image_resolution_dpi: int = Field(default=72, description="DPI for image processing")
24
+ browser_canvas: BrowserCanvas = Field(default="A4", description="Canvas size for document rendering")
25
+
26
+
27
+ class ParseResult(BaseModel):
28
+ """Result of document parsing."""
29
+
30
+ document: BaseMIMEData = Field(..., description="Processed document metadata")
31
+ usage: RetabUsage = Field(..., description="Processing usage information")
32
+ pages: list[str] = Field(..., description="Text content of each page")
@@ -7,7 +7,7 @@ from openai.types.chat.chat_completion_reasoning_effort import ChatCompletionRea
7
7
  from pydantic import BaseModel, Field, computed_field, model_validator
8
8
 
9
9
  from retab.types.chat import ChatCompletionRetabMessage
10
- from retab.types.documents.extractions import UiParsedChatCompletion
10
+ from retab.types.documents.extractions import RetabParsedChatCompletion
11
11
 
12
12
  from .._utils.usage.usage import CostBreakdown, compute_cost_from_model, compute_cost_from_model_with_breakdown
13
13
  from .ai_models import Amount
@@ -44,7 +44,7 @@ class Extraction(BaseModel):
44
44
  file_id: str = Field(default="", description="ID of the first file (deprecated)")
45
45
 
46
46
  status: Literal["success", "failed"] = Field(..., description="Whether the analysis was successful")
47
- completion: UiParsedChatCompletion | ChatCompletion = Field(..., description="Response generated by the analysis")
47
+ completion: RetabParsedChatCompletion | ChatCompletion = Field(..., description="Response generated by the analysis")
48
48
  json_schema: Any = Field(..., description="Response format (JSON Schema or pydantic_v2.BaseModel)")
49
49
  model: str = Field(..., description="Model used for the analysis")
50
50
  temperature: float = Field(default=0.0, description="Temperature used for the analysis")
retab/types/logs.py CHANGED
@@ -11,7 +11,7 @@ from .._utils.json_schema import compute_schema_data_id
11
11
  from .._utils.mime import generate_blake2b_hash_from_string
12
12
  from .._utils.usage.usage import CostBreakdown, compute_cost_from_model, compute_cost_from_model_with_breakdown
13
13
  from .ai_models import Amount
14
- from .documents.extractions import UiParsedChatCompletion
14
+ from .documents.extractions import RetabParsedChatCompletion
15
15
  from .mime import BaseMIMEData
16
16
  from .modalities import Modality
17
17
  from .pagination import ListMetadata
@@ -199,7 +199,7 @@ class AutomationLog(BaseModel):
199
199
  organization_id: str
200
200
  created_at: datetime.datetime = Field(default_factory=lambda: datetime.datetime.now(datetime.timezone.utc))
201
201
  automation_snapshot: AutomationConfig
202
- completion: UiParsedChatCompletion | ChatCompletion
202
+ completion: RetabParsedChatCompletion | ChatCompletion
203
203
  file_metadata: Optional[BaseMIMEData]
204
204
  external_request_log: Optional[ExternalRequestLog]
205
205
  extraction_id: Optional[str] = Field(default=None, description="ID of the extraction")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: retab
3
- Version: 0.0.38
3
+ Version: 0.0.40
4
4
  Summary: Retab official python library
5
5
  Home-page: https://github.com/Retab-dev/retab
6
6
  Author: Retab
@@ -52,7 +52,7 @@ Requires-Dist: ruff
52
52
 
53
53
  Made with love by the team at [Retab](https://retab.dev) 🤍.
54
54
 
55
- [Our Website](https://retab.dev) | [Documentation](https://docs.retab.dev/get-started/introduction) | [Discord](https://discord.com/invite/vc5tWRPqag) | [Twitter](https://x.com/retabAPI)
55
+ [Our Website](https://retab.dev) | [Documentation](https://docs.retab.dev/get-started/introduction) | [Discord](https://discord.com/invite/vc5tWRPqag) | [Twitter](https://x.com/retabdev)
56
56
 
57
57
 
58
58
  </div>
@@ -395,12 +395,12 @@ You can view minimal notebooks that demonstrate how to use Retab to process docu
395
395
 
396
396
  Let's create the future of document processing together!
397
397
 
398
- Join our [discord community](https://discord.com/invite/vc5tWRPqag) to share tips, discuss best practices, and showcase what you build. Or just [tweet](https://x.com/retabAPI) at us.
398
+ Join our [discord community](https://discord.com/invite/vc5tWRPqag) to share tips, discuss best practices, and showcase what you build. Or just [tweet](https://x.com/retabdev) at us.
399
399
 
400
400
  We can't wait to see how you'll use Retab.
401
401
 
402
402
  - [Discord](https://discord.com/invite/vc5tWRPqag)
403
- - [Twitter](https://x.com/retabAPI)
403
+ - [Twitter](https://x.com/retabdev)
404
404
 
405
405
 
406
406
  ## Roadmap
@@ -3,21 +3,26 @@ retab/_resource.py,sha256=JfAU4UTa05ugWfbrpO7fsVr_pFewht99NkoIfK6kBQM,577
3
3
  retab/client.py,sha256=ebU_g0BfIJ6Lz-XsHjlMtomTBy4V_lDDgLTC0AYzDZE,29768
4
4
  retab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  retab/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- retab/_utils/ai_models.py,sha256=mnnUWMkiBD8Xu-K72gkU621OVFCJTdaTc2_vDzuPpNo,3835
6
+ retab/_utils/ai_models.py,sha256=u0SDwSd3SNhJaFm6bPepiGIh4BbocGYDKk4qu3kVIxc,4821
7
7
  retab/_utils/benchmarking.py,sha256=ZSuVcRkYr4gD90yezAv6TuKaFdj2ulc5d5x3lXLbQss,17849
8
8
  retab/_utils/chat.py,sha256=ZHt6oEX2lZl8O0tIj-rHnqgmDbHxMYEWPkx0fArvojo,14352
9
9
  retab/_utils/display.py,sha256=ZFPbiBnwEWGR-suS8e9Xilz9OqyYRDwsKYWfbFSJPJM,18868
10
10
  retab/_utils/json_schema.py,sha256=vbIg4NqREBq_eNbYdBTGw5ykhUmKkSiVRAahAOrWEZg,82237
11
11
  retab/_utils/mime.py,sha256=S6pH_CmDc7fnb14PIoK3XALwb_Quha34a112joyUNmY,5723
12
- retab/_utils/responses.py,sha256=aLAoai8STpIyyf8f2y3uuak4EdBFzn0lPc6JNV7TLrk,6999
12
+ retab/_utils/responses.py,sha256=MqY6G9OCLMJhCZcT5uhky5xv_IRqI43aXRjvBU-L58E,7023
13
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
14
19
  retab/_utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- retab/_utils/usage/usage.py,sha256=gMDC4WCKn4xU8X6y30xpYgsueUE_Wcm1AXiSUG0za4M,12918
20
+ retab/_utils/usage/usage.py,sha256=g2_Co3gaB1Akgbszd-I7ddXMM-EyI7Gz9SI5SdtlBII,12949
16
21
  retab/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
22
  retab/resources/evals.py,sha256=jRgHsFDsoZoTVpFNAtJm9rW1zQGdceLqZ522Mx1-bfo,29928
18
23
  retab/resources/files.py,sha256=-_GejfQjKEk10HHb5npmLOA9cUnVHic2ZQntE8tw4TQ,954
19
24
  retab/resources/finetuning.py,sha256=Rx8XcqB00UIjEDZcCGp5fM2yz5TW1j36aBicrTa0uAY,2587
20
- retab/resources/jsonlUtils.py,sha256=Iq6vvdU7tUZAAheoldl85cGtctJztlg1T9xkGuo775o,45157
25
+ retab/resources/jsonlUtils.py,sha256=8HZJSuY1XGXTXBjovaXlrQ2_qiNMPr8RKnZ-AlC4lHo,45153
21
26
  retab/resources/models.py,sha256=4WidFBnTGZEA65DSn2pLP2SRnCVXkMTw7o_m8xVCFC4,2469
22
27
  retab/resources/openai_example.py,sha256=yz34KvfCvHTZ-AJ9GV-N7ljTTSWBmQEQNMHY2FUbEi4,522
23
28
  retab/resources/prompt_optimization.py,sha256=BJkE7L1w0Z88sR9c1evD8ti4Zqr_xHCFSK4OJmV_M0k,3489
@@ -25,42 +30,42 @@ retab/resources/schemas.py,sha256=YakiA6aqiiusO8BIe_PF2eKC0lTf7Z3Zh1hxeoN8AtI,16
25
30
  retab/resources/usage.py,sha256=OmJMPwmP1TBuZmMKrjaGWnl2mQ9VbQDKSAm6l7Tsaf4,13601
26
31
  retab/resources/consensus/__init__.py,sha256=0b3MSOFiYPwkNTrs_dBPRhwSl3kuk8BtG5QXofIUb9M,89
27
32
  retab/resources/consensus/client.py,sha256=D2TeqqCp0ZvqvQLAe1i3nW8nnf-Ms6zNEXRA9C26TQI,3705
28
- retab/resources/consensus/completions.py,sha256=MzHfVxg_1d5P3eHYZhCgR8b0CnfZBjUvjaUZTEzLVRc,8331
29
- retab/resources/consensus/completions_stream.py,sha256=JDrMAbeC8XwfW_fjaTlTbyf10_2lSFNehcaJELmOUFk,10830
30
- retab/resources/consensus/responses.py,sha256=tapQ_Kso400Gq68PzDv8uSzLVhE5FJCo2ZrVBLoX0rs,9921
31
- retab/resources/consensus/responses_stream.py,sha256=vhdKF1txU_BzkFJm1rcTELslJsG-o_t-YIacw_gps04,11658
33
+ retab/resources/consensus/completions.py,sha256=p9Xn3rUstuVexTXXZbXQzThMzxABeQI6VQr1WuiOC44,8373
34
+ retab/resources/consensus/completions_stream.py,sha256=sb-Fih38qnvbtjhIoA2l6XfFW5SrspXemwn7EKIb1aM,10896
35
+ retab/resources/consensus/responses.py,sha256=mWuFH1rvVDA8wPMnRNq3eR-Tss8xz6nxpQrFxoeJTdQ,9936
36
+ retab/resources/consensus/responses_stream.py,sha256=fnsWxr6AZvZZkMWudvAb4ULFunj0R8cqWeep5atWgOI,11673
32
37
  retab/resources/documents/__init__.py,sha256=OjXmngFN0RKqO4SI-mJBNzr6Ex6rMxfq0DxaqzP0RQs,89
33
- retab/resources/documents/client.py,sha256=_Z_O6awArjMQ3ze7fS67KdZ5fTIS6bLIdCrYUtMqwVg,20901
34
- retab/resources/documents/extractions.py,sha256=yfsyNdvK8Jn2j7H5LldW31nYtbNeddhH9t7ANC_tf7Q,25546
38
+ retab/resources/documents/client.py,sha256=XhtbtQ1vSkMMSf5QiskZNHkQthYRHjU5bomvESoct2E,25364
39
+ retab/resources/documents/extractions.py,sha256=Or_oBDPAwvMAia00xGGC30NH82iFCJ64tyxGGAF1bUU,25627
35
40
  retab/resources/evaluations/__init__.py,sha256=3npbUDbxYn3ihnUKV7PRYNBYqL7MZ9AwhQHr7LaIESg,97
36
41
  retab/resources/evaluations/client.py,sha256=SdI-m_8V0BApparlHO1mYFwvjAGWsHBKD_-Z3ZLcdq0,10658
37
- retab/resources/evaluations/documents.py,sha256=w28pC-sv67HBVGGT2wyU2eJS1oKnYSA-WHp5vffwK60,9475
38
- retab/resources/evaluations/iterations.py,sha256=mlkkECATlju6w2SarJuhuLIIJ9L-Prv3499xTdl7Y5g,17643
42
+ retab/resources/evaluations/documents.py,sha256=zNSQVxKKfDtDw01SLoPUCDSuxATrFBhFwEXKGdGK4UE,9490
43
+ retab/resources/evaluations/iterations.py,sha256=v9kD1tJ-3I0A02zVIwSInKHwPzGhmub7fc5FEBJkT74,17664
39
44
  retab/resources/processors/__init__.py,sha256=w1HrMdSi3xlrcEDFMQ9BA7rbUhOFWSTkTKkkR2PfFHQ,93
40
- retab/resources/processors/client.py,sha256=CPzmyRBG2db1VQNk9zWwXbqfW-b8mEl_yHKUQqfMoos,20059
45
+ retab/resources/processors/client.py,sha256=2292Jry67TFq6d0X74gOOm4fJQ59g4OZr_TacGtw2gA,20080
41
46
  retab/resources/processors/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
42
47
  retab/resources/processors/automations/client.py,sha256=3w54F0JfC2GYDosLux8LVEjDd_RXqQ29-SyNXGa28U8,10500
43
- retab/resources/processors/automations/endpoints.py,sha256=XgKW0D05bXSOqiGBPsPJuWwZaIMvweZ-m7tcgeGkSCo,10932
44
- retab/resources/processors/automations/links.py,sha256=lvupie-mg9JbFKNbYKo3iL8jkhLzgRJxof-tzEJlNY4,11473
48
+ retab/resources/processors/automations/endpoints.py,sha256=I75XyAsIXAsnBn1hk5sxmDJ7yFc2zF-TpQ-KHJWfGo8,10896
49
+ retab/resources/processors/automations/links.py,sha256=HBfpouFBxwjIyDWHyG15XwYRC2lLJLkcywmTUnjQcPI,11449
45
50
  retab/resources/processors/automations/logs.py,sha256=Ft0cH6C2zbm4dLdiQ-3hqC8HU8-23bGOjUGbaauDNAU,8827
46
- retab/resources/processors/automations/mailboxes.py,sha256=MyNysCg9JdboLE4T0fZMUnnyVUnl5evVp0DdQjSTb0g,15894
47
- retab/resources/processors/automations/outlook.py,sha256=ps9HkAaQmQysirH_IAp_g4cGreoU-wQzfY9kqeqCGMU,14935
51
+ retab/resources/processors/automations/mailboxes.py,sha256=fIiD4mFPnxi2Xf0DfTxXQv6f8EH3lWrdvOMoUZqoQrE,15908
52
+ retab/resources/processors/automations/outlook.py,sha256=Zj_sVxpDLCNxh1xaTAZ6GMGd26KtFo7QXrmalUpi4xA,14919
48
53
  retab/resources/processors/automations/tests.py,sha256=Ni02vAdUqK5xt-DtWkVRJRCG3KdykvP_k4ez7vXCzsw,5992
49
54
  retab/resources/secrets/__init__.py,sha256=SwofMyk96k0YSyj1d_GRxhpVx4wb4TA97TISsTjB0Kc,105
50
55
  retab/resources/secrets/client.py,sha256=nXt1cgvkWqhA99WTnC1PWbWJq-EbwvoDuCQOa0GJOOU,599
51
56
  retab/resources/secrets/external_api_keys.py,sha256=3TuJxjk65EPUT2XC3wBcYWaVwqzc6QGv9BoHufzxTLU,3759
52
57
  retab/resources/secrets/webhook.py,sha256=2mFDNblQYBGOwgqOG5gfRJkusQX7Hjy28XZ7O7ffkl8,1805
53
58
  retab/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- retab/types/ai_models.py,sha256=ZQF4jXsv2HCkqJLJoedD-j8TJ5CbnWahJfLStE_kGq8,28243
59
+ retab/types/ai_models.py,sha256=DFLW6vi45heZGKkMJrAKs6j9K97Sn2N5IEE4hMoQAJs,4896
55
60
  retab/types/browser_canvas.py,sha256=U3yLqJcSwfturcIsNFSblRtFtnG3p-UL1YYoM9KZfdE,70
56
61
  retab/types/chat.py,sha256=l32vhLtNcdmHFjG4iVC617j38x6a2oH7CNPwlvqdF8g,424
57
- retab/types/completions.py,sha256=Gkj8K4O0YR0VemyYpNi1mL7arAc1ACCDj0b_6pldQMU,5381
62
+ retab/types/completions.py,sha256=aHrWvKLMyktdVhIX3fkPBjbcWNBsceCTbTSq6ilpecY,5382
58
63
  retab/types/consensus.py,sha256=EsFCsyZK8NhkQ1BizFpnGN54D24hRFKc0xwt9VpH11c,1161
59
64
  retab/types/evals.py,sha256=1yx1rMG92ZZI7f5nWc6C-Z1WwUsBrWg4eLS-LakvC4w,9955
60
65
  retab/types/events.py,sha256=NrisdzJAaJ_kkfgdsqoiDB-Upm0LnbIGZikU_e9XXWw,2195
61
- retab/types/extractions.py,sha256=dtZUI471GoPbHzsWWZ8WGTPPTzqQYDV-mEbzZR6bXqU,5844
66
+ retab/types/extractions.py,sha256=b9aW9KIuUrXfyJGP_DEiuN4p46go915HH4OqJOFtsZs,5850
62
67
  retab/types/inference_settings.py,sha256=F_mBPFVY1yAwsHD11Z2ljMf3zkvviOey_JBnu8yEF84,572
63
- retab/types/logs.py,sha256=m-CJK1sWrNQphaVzNfdpx6_2NNiHnKnmJ9wpyWJanlQ,9257
68
+ retab/types/logs.py,sha256=czSB2jKC_FpPHJOfsBUG1qP0oJ-cucrTyBphovmmCqk,9263
64
69
  retab/types/metrics.py,sha256=0KEWUWW13s_tWjh7oUs33ip9TPwI7LZUNGE7k5qNoOo,1947
65
70
  retab/types/mime.py,sha256=Fhq04yQoHhyx5wBjx7GNyJqQQJtcM_yEZt7uQxq6Br4,11038
66
71
  retab/types/modalities.py,sha256=_2iGC_EEZT0Y-7PV_nHar5vqeEdsK7oy7ZJPV681nkg,1581
@@ -73,14 +78,15 @@ retab/types/automations/endpoints.py,sha256=IbylkBUBllcrtr9tifug0ptVq2vFKixuQ6e2
73
78
  retab/types/automations/links.py,sha256=1ipBFWasY3cqds0U5AUz9Ez6T5kcgzX5r0gzZvFw8tU,901
74
79
  retab/types/automations/mailboxes.py,sha256=KZh2BiQ8Q-HgNQT672Sl97LDnqW2sgjY_W3ZEj7o4Ow,2332
75
80
  retab/types/automations/outlook.py,sha256=4rJ-_1Py88n44ASdWJHpb0_V5VKafP7pj67ovi6iYwU,3040
76
- retab/types/automations/webhooks.py,sha256=Rh2iqFDb4llBV7ab_Gb-dQiRWBWGQfKdfq4C6lBKv64,562
81
+ retab/types/automations/webhooks.py,sha256=_IY33_RL8ULYmKW7vYbCXLCEmsrKzM9SmwdPyv6LfwM,571
77
82
  retab/types/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
83
  retab/types/db/annotations.py,sha256=PM-H4zXyRs48s7AAv_sl8kOQo5lThsVvBM0aKJkCpmU,1026
79
84
  retab/types/db/files.py,sha256=udJKGplw6a8cF4XUTLN_QAU9-pyEWs4THHX1zyvbx0U,1261
80
- retab/types/documents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ retab/types/documents/__init__.py,sha256=RaD6PnvRJw7QEVTh_PYNX6gckpLcxUJH7FKaopRKJzY,114
81
86
  retab/types/documents/correct_orientation.py,sha256=e-ivsslI6L6Gl0YkcslXw_DH620xMGEYVp4tdeviXeM,261
82
87
  retab/types/documents/create_messages.py,sha256=PjNu9Hg4Ow09WOxI7qtHMQebUM2k0_UPtw_2VrHoD6E,10289
83
- retab/types/documents/extractions.py,sha256=zTgNUK6a5Bi4iofbN3c0s7vb0rlXUoKr_ENXYnI_ht8,19056
88
+ retab/types/documents/extractions.py,sha256=vqokye_0VXTWf5TcP3uj_6GOTMXDxR-A7E0DVQHq7wc,19113
89
+ retab/types/documents/parse.py,sha256=WCfwBUsMgYFAZWbuOgCPd2dkcFmi1fYOf21XuiIj4uo,1323
84
90
  retab/types/evaluations/__init__.py,sha256=fRQlK6y3x3SHqaukVYd9_zH8HrUk9TpoG9dlOTuIkcY,920
85
91
  retab/types/evaluations/documents.py,sha256=oy0nqTrv0Pe__5ligeNWn5MbqVDAFRSrXYbCVoLxyXw,1268
86
92
  retab/types/evaluations/iterations.py,sha256=66Svg5w2FqM14Zkn_opeUXV9mRZauGE8XLr1hJNMtKE,4637
@@ -101,7 +107,7 @@ retab/types/schemas/object.py,sha256=z0RaoBDNpNM-hCWTOdLycl4PH1SHZVQxIeAdt5Qztgk
101
107
  retab/types/schemas/templates.py,sha256=YRfgzy3hPuAfguu-qrYr9KhnAiBjLOoorqdoxyRYsXE,3466
102
108
  retab/types/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
109
  retab/types/secrets/external_api_keys.py,sha256=-yaaOfNLxKpll3oD-0htQlW8S03lyWs9Mmk9HOdyQ3g,437
104
- retab-0.0.38.dist-info/METADATA,sha256=sHyu3ywiTblzrlCOEgDEHxBF25Tqdqzvb6buFXU605w,14131
105
- retab-0.0.38.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
106
- retab-0.0.38.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
107
- retab-0.0.38.dist-info/RECORD,,
110
+ retab-0.0.40.dist-info/METADATA,sha256=VtYI2hay7_aPe65ewKsgH7tfz_AiAJJLkefA4WHKfRk,14131
111
+ retab-0.0.40.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
112
+ retab-0.0.40.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
113
+ retab-0.0.40.dist-info/RECORD,,
File without changes