retab 0.0.41__py3-none-any.whl → 0.0.42__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.
- retab/client.py +5 -5
- retab/resources/consensus/completions_stream.py +2 -2
- retab/resources/documents/client.py +9 -8
- retab/resources/processors/automations/endpoints.py +8 -4
- retab/resources/processors/automations/links.py +2 -2
- retab/resources/processors/automations/logs.py +2 -2
- retab/resources/processors/automations/mailboxes.py +42 -31
- retab/resources/processors/automations/outlook.py +25 -7
- retab/resources/processors/automations/tests.py +7 -1
- retab/resources/processors/client.py +2 -2
- retab/types/automations/mailboxes.py +1 -1
- retab/types/documents/extractions.py +2 -2
- retab/types/documents/parse.py +3 -1
- retab/types/extractions.py +34 -9
- retab-0.0.42.dist-info/METADATA +119 -0
- {retab-0.0.41.dist-info → retab-0.0.42.dist-info}/RECORD +18 -18
- retab-0.0.41.dist-info/METADATA +0 -418
- {retab-0.0.41.dist-info → retab-0.0.42.dist-info}/WHEEL +0 -0
- {retab-0.0.41.dist-info → retab-0.0.42.dist-info}/top_level.txt +0 -0
retab/types/documents/parse.py
CHANGED
@@ -3,6 +3,7 @@ from pydantic import BaseModel, Field
|
|
3
3
|
|
4
4
|
from ..mime import MIMEData, BaseMIMEData
|
5
5
|
from ..browser_canvas import BrowserCanvas
|
6
|
+
from ..ai_models import LLMModel
|
6
7
|
|
7
8
|
TableParsingFormat = Literal["markdown", "yaml", "html", "json"]
|
8
9
|
|
@@ -18,7 +19,7 @@ class ParseRequest(BaseModel):
|
|
18
19
|
"""Request model for document parsing."""
|
19
20
|
|
20
21
|
document: MIMEData = Field(..., description="Document to parse")
|
21
|
-
|
22
|
+
model: LLMModel = Field(default="gemini-2.5-flash", description="Model to use for parsing")
|
22
23
|
table_parsing_format: TableParsingFormat = Field(default="html", description="Format for parsing tables")
|
23
24
|
image_resolution_dpi: int = Field(default=72, description="DPI for image processing")
|
24
25
|
browser_canvas: BrowserCanvas = Field(default="A4", description="Canvas size for document rendering")
|
@@ -30,3 +31,4 @@ class ParseResult(BaseModel):
|
|
30
31
|
document: BaseMIMEData = Field(..., description="Processed document metadata")
|
31
32
|
usage: RetabUsage = Field(..., description="Processing usage information")
|
32
33
|
pages: list[str] = Field(..., description="Text content of each page")
|
34
|
+
text: str = Field(..., description="Text content of the document")
|
retab/types/extractions.py
CHANGED
@@ -3,13 +3,19 @@ from typing import Any, Literal, Optional
|
|
3
3
|
|
4
4
|
import nanoid # type: ignore
|
5
5
|
from openai.types.chat import ChatCompletion
|
6
|
-
from openai.types.chat.chat_completion_reasoning_effort import
|
6
|
+
from openai.types.chat.chat_completion_reasoning_effort import (
|
7
|
+
ChatCompletionReasoningEffort,
|
8
|
+
)
|
7
9
|
from pydantic import BaseModel, Field, computed_field, model_validator
|
8
10
|
|
9
11
|
from retab.types.chat import ChatCompletionRetabMessage
|
10
12
|
from retab.types.documents.extractions import RetabParsedChatCompletion
|
11
13
|
|
12
|
-
from ..utils.usage.usage import
|
14
|
+
from ..utils.usage.usage import (
|
15
|
+
CostBreakdown,
|
16
|
+
compute_cost_from_model,
|
17
|
+
compute_cost_from_model_with_breakdown,
|
18
|
+
)
|
13
19
|
from .ai_models import Amount
|
14
20
|
from .modalities import Modality
|
15
21
|
|
@@ -17,9 +23,18 @@ ValidationsState = Literal["pending", "validated", "invalid"]
|
|
17
23
|
|
18
24
|
|
19
25
|
class ExtractionSource(BaseModel):
|
20
|
-
type: Literal[
|
21
|
-
|
22
|
-
|
26
|
+
type: Literal[
|
27
|
+
"api",
|
28
|
+
"annotation",
|
29
|
+
"processor",
|
30
|
+
"automation",
|
31
|
+
"automation.link",
|
32
|
+
"automation.mailbox",
|
33
|
+
"automation.cron",
|
34
|
+
"automation.outlook",
|
35
|
+
"automation.endpoint",
|
36
|
+
"schema.extract",
|
37
|
+
] = Field(description="Type of extraction")
|
23
38
|
id: str | None = Field(default=None, description="ID the trigger of the extraction")
|
24
39
|
|
25
40
|
|
@@ -34,7 +49,10 @@ class ExtractionTimingStep(BaseModel):
|
|
34
49
|
|
35
50
|
|
36
51
|
class Extraction(BaseModel):
|
37
|
-
id: str = Field(
|
52
|
+
id: str = Field(
|
53
|
+
default_factory=lambda: "extr_" + nanoid.generate(),
|
54
|
+
description="Unique identifier of the analysis",
|
55
|
+
)
|
38
56
|
messages: list[ChatCompletionRetabMessage] = Field(default_factory=list)
|
39
57
|
messages_gcs: str = Field(..., description="GCS path to the messages")
|
40
58
|
file_gcs_paths: list[str] = Field(..., description="GCS paths to the files")
|
@@ -51,16 +69,23 @@ class Extraction(BaseModel):
|
|
51
69
|
source: ExtractionSource = Field(..., description="Source of the extraction")
|
52
70
|
image_resolution_dpi: int = Field(default=96, description="Resolution of the image sent to the LLM")
|
53
71
|
browser_canvas: BrowserCanvas = Field(
|
54
|
-
default="A4",
|
72
|
+
default="A4",
|
73
|
+
description="Sets the size of the browser canvas for rendering documents in browser-based processing. Choose a size that matches the document type.",
|
55
74
|
)
|
56
75
|
modality: Modality = Field(default="native", description="Modality of the extraction")
|
57
|
-
reasoning_effort: Optional[ChatCompletionReasoningEffort] = Field(
|
76
|
+
reasoning_effort: Optional[ChatCompletionReasoningEffort] = Field(
|
77
|
+
default=None,
|
78
|
+
description="The effort level for the model to reason about the input data.",
|
79
|
+
)
|
58
80
|
timings: list[ExtractionTimingStep] = Field(default_factory=list, description="Timings of the extraction")
|
59
81
|
|
60
82
|
# Infered from the schema
|
61
83
|
schema_id: str = Field(..., description="Version of the schema used for the analysis")
|
62
84
|
schema_data_id: str = Field(..., description="Version of the schema data used for the analysis")
|
63
|
-
created_at: datetime.datetime = Field(
|
85
|
+
created_at: datetime.datetime = Field(
|
86
|
+
default_factory=lambda: datetime.datetime.now(datetime.timezone.utc),
|
87
|
+
description="Timestamp of the creation of the extraction object",
|
88
|
+
)
|
64
89
|
request_at: datetime.datetime | None = Field(default=None, description="Timestamp of the extraction request if provided.")
|
65
90
|
organization_id: str = Field(..., description="Organization ID of the user or application")
|
66
91
|
validation_state: Optional[ValidationsState] = Field(default=None, description="Validation state of the extraction")
|
@@ -0,0 +1,119 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: retab
|
3
|
+
Version: 0.0.42
|
4
|
+
Summary: Retab official python library
|
5
|
+
Home-page: https://github.com/Retab-dev/retab
|
6
|
+
Author: Retab
|
7
|
+
Author-email: contact@retab.com
|
8
|
+
Project-URL: Team website, https://retab.com
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Operating System :: POSIX :: Linux
|
12
|
+
Classifier: Operating System :: MacOS
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
14
|
+
Requires-Python: >=3.6
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
Requires-Dist: Pillow
|
17
|
+
Requires-Dist: httpx
|
18
|
+
Requires-Dist: pydantic
|
19
|
+
Requires-Dist: pydantic-core
|
20
|
+
Requires-Dist: requests
|
21
|
+
Requires-Dist: tqdm
|
22
|
+
Requires-Dist: types-tqdm
|
23
|
+
Requires-Dist: backoff
|
24
|
+
Requires-Dist: termplotlib
|
25
|
+
Requires-Dist: Levenshtein
|
26
|
+
Requires-Dist: pandas
|
27
|
+
Requires-Dist: numpy
|
28
|
+
Requires-Dist: motor
|
29
|
+
Requires-Dist: rich
|
30
|
+
Requires-Dist: puremagic
|
31
|
+
Requires-Dist: pycountry
|
32
|
+
Requires-Dist: phonenumbers
|
33
|
+
Requires-Dist: email-validator
|
34
|
+
Requires-Dist: python-stdnum
|
35
|
+
Requires-Dist: nanoid
|
36
|
+
Requires-Dist: openai
|
37
|
+
Requires-Dist: google-genai
|
38
|
+
Requires-Dist: google-generativeai
|
39
|
+
Requires-Dist: anthropic
|
40
|
+
Requires-Dist: tiktoken
|
41
|
+
Requires-Dist: truststore
|
42
|
+
Requires-Dist: ruff
|
43
|
+
|
44
|
+
# Retab
|
45
|
+
|
46
|
+
<div align="center" style="margin-bottom: 1em;">
|
47
|
+
|
48
|
+
<img src="https://raw.githubusercontent.com/Retab-dev/retab/refs/heads/main/assets/retab-logo.png" alt="Retab Logo" width="150">
|
49
|
+
|
50
|
+
|
51
|
+
*The AI Automation Platform*
|
52
|
+
|
53
|
+
Made with love by the team at [Retab](https://retab.com) 🤍.
|
54
|
+
|
55
|
+
[Our Website](https://retab.com) | [Documentation](https://docs.retab.com/get-started/introduction) | [Discord](https://discord.com/invite/vc5tWRPqag) | [Twitter](https://x.com/retabdev)
|
56
|
+
|
57
|
+
|
58
|
+
</div>
|
59
|
+
|
60
|
+
---
|
61
|
+
|
62
|
+
### What is Retab?
|
63
|
+
|
64
|
+
Retab solves all the major challenges in document processing with LLMs:
|
65
|
+
|
66
|
+
1. **Universal Document Preprocessing**: Convert any file type (PDFs, Excel, emails, etc.) into LLM-ready format without writing custom parsers
|
67
|
+
2. **Structured, Schema-driven Extraction**: Get consistent, reliable outputs using schema-based prompt engineering
|
68
|
+
3. **Processors**: Publish a live, stable, shareable document processor.
|
69
|
+
4. **Automations**: Create document processing workflows that can be triggered by events (mailbox, upload link, endpoint, outlook plugin).
|
70
|
+
5. **Evaluations**: Evaluate the performance of models against annotated datasets
|
71
|
+
6. **Optimizations**: Identify the most used processors and help you finetune models to reduce costs and improve performance
|
72
|
+
|
73
|
+
We are offering you all the software-defined primitives to build your own document processing solutions. We see it as **Stripe** for document processing.
|
74
|
+
|
75
|
+
Our goal is to make the process of analyzing documents and unstructured data as **easy** and **transparent** as possible.
|
76
|
+
|
77
|
+
**A new, lighter paradigm**
|
78
|
+
Large Language Models collapse entire layers of legacy OCR pipelines into a single, elegant abstraction. When a model can read, reason, and structure text natively, we no longer need brittle heuristics, handcrafted parsers, or heavyweight ETL jobs. Instead, we can expose a small, principled API: "give me the document, tell me the schema, and get back structured truth." Complexity evaporates, reliability rises, speed follows, and costs fall—because every component you remove is one that can no longer break. LLM‑first design lets us focus less on plumbing and more on the questions we actually want answered.
|
79
|
+
|
80
|
+
Many people haven't yet realized how powerful LLMs have become at document processing tasks - we're here to help **unlock these capabilities**.
|
81
|
+
|
82
|
+
---
|
83
|
+
|
84
|
+
## Go further
|
85
|
+
|
86
|
+
* [Quickstart](/get-started/quickstart)
|
87
|
+
* [API Reference](/api-reference/introduction)
|
88
|
+
|
89
|
+
---
|
90
|
+
|
91
|
+
## Code examples
|
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).
|
94
|
+
|
95
|
+
## Community
|
96
|
+
|
97
|
+
Let's create the future of document processing together!
|
98
|
+
|
99
|
+
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.
|
100
|
+
|
101
|
+
We can't wait to see how you'll use Retab.
|
102
|
+
|
103
|
+
* [Discord](https://discord.com/invite/vc5tWRPqag)
|
104
|
+
* [Twitter](https://x.com/retabdev)
|
105
|
+
|
106
|
+
---
|
107
|
+
|
108
|
+
## Roadmap
|
109
|
+
|
110
|
+
We share our roadmap publicly on [Github](https://github.com/Retab-dev/retab)
|
111
|
+
|
112
|
+
Among the features we're working on:
|
113
|
+
|
114
|
+
* [ ] Node.js SDK
|
115
|
+
* [ ] Low-level speed optimizations for Evals Frontend
|
116
|
+
* [ ] Schema optimization autopilot
|
117
|
+
* [ ] Sources API
|
118
|
+
* [ ] Parse API for RAG
|
119
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
retab/__init__.py,sha256=sRurau6z8m4pn7VFKdHr9FyNA9Ffhvg064i2NF0RmPc,124
|
2
2
|
retab/_resource.py,sha256=JfAU4UTa05ugWfbrpO7fsVr_pFewht99NkoIfK6kBQM,577
|
3
|
-
retab/client.py,sha256=
|
3
|
+
retab/client.py,sha256=gbBSkOWbXLoYXwRGXkhubBeIxAecVHvW_3b9ELNSE2Q,29768
|
4
4
|
retab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
retab/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
retab/_utils/ai_models.py,sha256=u0SDwSd3SNhJaFm6bPepiGIh4BbocGYDKk4qu3kVIxc,4821
|
@@ -31,26 +31,26 @@ retab/resources/usage.py,sha256=OmJMPwmP1TBuZmMKrjaGWnl2mQ9VbQDKSAm6l7Tsaf4,1360
|
|
31
31
|
retab/resources/consensus/__init__.py,sha256=0b3MSOFiYPwkNTrs_dBPRhwSl3kuk8BtG5QXofIUb9M,89
|
32
32
|
retab/resources/consensus/client.py,sha256=D2TeqqCp0ZvqvQLAe1i3nW8nnf-Ms6zNEXRA9C26TQI,3705
|
33
33
|
retab/resources/consensus/completions.py,sha256=6vTnqADY6GueV28smYRDQ2yooj94G2WHMlQLyKOXqtw,8372
|
34
|
-
retab/resources/consensus/completions_stream.py,sha256=
|
34
|
+
retab/resources/consensus/completions_stream.py,sha256=DlU9od01F1Fmh9WjTLhq4KsntfqXy5jGGwrYauS43Ec,10893
|
35
35
|
retab/resources/consensus/responses.py,sha256=av__D_3hs8GlV7RnBnrLmtjq6_DzbWwfSP8lzjiHlw8,9935
|
36
36
|
retab/resources/consensus/responses_stream.py,sha256=OopJ9aoO7HctfhLnXzJx8-dkk-4jK_juOw6jUAkzwVM,11671
|
37
37
|
retab/resources/documents/__init__.py,sha256=OjXmngFN0RKqO4SI-mJBNzr6Ex6rMxfq0DxaqzP0RQs,89
|
38
|
-
retab/resources/documents/client.py,sha256=
|
38
|
+
retab/resources/documents/client.py,sha256=fTaNecDke_fGEcqQIcTJcGZDKhSMWgZl2bxc6W48oOg,25295
|
39
39
|
retab/resources/documents/extractions.py,sha256=jMBgirKohgMTsdwX-LQldmvgHVHt-Q2N5810K1tzk9Q,25623
|
40
40
|
retab/resources/evaluations/__init__.py,sha256=3npbUDbxYn3ihnUKV7PRYNBYqL7MZ9AwhQHr7LaIESg,97
|
41
41
|
retab/resources/evaluations/client.py,sha256=SdI-m_8V0BApparlHO1mYFwvjAGWsHBKD_-Z3ZLcdq0,10658
|
42
42
|
retab/resources/evaluations/documents.py,sha256=G58AYRpmlGRspwuunwhWB_cqN_Zn5Ukp_f2NAMyxMi4,9489
|
43
43
|
retab/resources/evaluations/iterations.py,sha256=v9kD1tJ-3I0A02zVIwSInKHwPzGhmub7fc5FEBJkT74,17664
|
44
44
|
retab/resources/processors/__init__.py,sha256=w1HrMdSi3xlrcEDFMQ9BA7rbUhOFWSTkTKkkR2PfFHQ,93
|
45
|
-
retab/resources/processors/client.py,sha256=
|
45
|
+
retab/resources/processors/client.py,sha256=EMu7VlniDePhPvlCryGwXWaG2wketLA6vz8JUFs8U0A,20710
|
46
46
|
retab/resources/processors/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
|
47
47
|
retab/resources/processors/automations/client.py,sha256=3w54F0JfC2GYDosLux8LVEjDd_RXqQ29-SyNXGa28U8,10500
|
48
|
-
retab/resources/processors/automations/endpoints.py,sha256=
|
49
|
-
retab/resources/processors/automations/links.py,sha256=
|
50
|
-
retab/resources/processors/automations/logs.py,sha256=
|
51
|
-
retab/resources/processors/automations/mailboxes.py,sha256=
|
52
|
-
retab/resources/processors/automations/outlook.py,sha256=
|
53
|
-
retab/resources/processors/automations/tests.py,sha256=
|
48
|
+
retab/resources/processors/automations/endpoints.py,sha256=9ur3OR1b-gKaM4JqiQVaWUS0DmkfNvYgbi_TkbyoXQ4,11046
|
49
|
+
retab/resources/processors/automations/links.py,sha256=LXOnDlaei07MRIc5KfxhCS5QikE8g0uptuYFeimXFPg,11449
|
50
|
+
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
|
53
|
+
retab/resources/processors/automations/tests.py,sha256=nbO6qIkQnpr629ZkCchbfCJOm7KyjDOaLsxXxB3i0cg,6219
|
54
54
|
retab/resources/secrets/__init__.py,sha256=SwofMyk96k0YSyj1d_GRxhpVx4wb4TA97TISsTjB0Kc,105
|
55
55
|
retab/resources/secrets/client.py,sha256=nXt1cgvkWqhA99WTnC1PWbWJq-EbwvoDuCQOa0GJOOU,599
|
56
56
|
retab/resources/secrets/external_api_keys.py,sha256=3TuJxjk65EPUT2XC3wBcYWaVwqzc6QGv9BoHufzxTLU,3759
|
@@ -63,7 +63,7 @@ retab/types/completions.py,sha256=ZQU29bm-FhdOzky4_Dp2N--fedR82C3QfCRZCJCQ-P8,53
|
|
63
63
|
retab/types/consensus.py,sha256=EsFCsyZK8NhkQ1BizFpnGN54D24hRFKc0xwt9VpH11c,1161
|
64
64
|
retab/types/evals.py,sha256=JNdWu4hplfSEuSzu9l27ZVr2RO2opUKEruIpKXZosmU,9953
|
65
65
|
retab/types/events.py,sha256=NrisdzJAaJ_kkfgdsqoiDB-Upm0LnbIGZikU_e9XXWw,2195
|
66
|
-
retab/types/extractions.py,sha256=
|
66
|
+
retab/types/extractions.py,sha256=Pvzu2Bu62X6P055xDj6Du8kf_ilJBiyeYl_uN5GfGVw,6038
|
67
67
|
retab/types/inference_settings.py,sha256=F_mBPFVY1yAwsHD11Z2ljMf3zkvviOey_JBnu8yEF84,572
|
68
68
|
retab/types/logs.py,sha256=uWgul1YpbczzWozuVnBWuVMm6NAZElSE1rXs_O8A98s,9260
|
69
69
|
retab/types/metrics.py,sha256=0KEWUWW13s_tWjh7oUs33ip9TPwI7LZUNGE7k5qNoOo,1947
|
@@ -76,7 +76,7 @@ retab/types/automations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
76
76
|
retab/types/automations/cron.py,sha256=jDx0VzciboQw2_whvBXzgX5ZS0z2DksTgmyhXCSSGMk,3174
|
77
77
|
retab/types/automations/endpoints.py,sha256=IbylkBUBllcrtr9tifug0ptVq2vFKixuQ6e2JfW5Xfw,666
|
78
78
|
retab/types/automations/links.py,sha256=1ipBFWasY3cqds0U5AUz9Ez6T5kcgzX5r0gzZvFw8tU,901
|
79
|
-
retab/types/automations/mailboxes.py,sha256=
|
79
|
+
retab/types/automations/mailboxes.py,sha256=3LDmEZO1RtsNq-5Q7jVjfTo7o92rYK-UH56Ja-dKJ9Q,2332
|
80
80
|
retab/types/automations/outlook.py,sha256=4rJ-_1Py88n44ASdWJHpb0_V5VKafP7pj67ovi6iYwU,3040
|
81
81
|
retab/types/automations/webhooks.py,sha256=_IY33_RL8ULYmKW7vYbCXLCEmsrKzM9SmwdPyv6LfwM,571
|
82
82
|
retab/types/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -85,8 +85,8 @@ retab/types/db/files.py,sha256=udJKGplw6a8cF4XUTLN_QAU9-pyEWs4THHX1zyvbx0U,1261
|
|
85
85
|
retab/types/documents/__init__.py,sha256=RaD6PnvRJw7QEVTh_PYNX6gckpLcxUJH7FKaopRKJzY,114
|
86
86
|
retab/types/documents/correct_orientation.py,sha256=e-ivsslI6L6Gl0YkcslXw_DH620xMGEYVp4tdeviXeM,261
|
87
87
|
retab/types/documents/create_messages.py,sha256=S2nJ4GHZ3hKTZ4kNs5XrCZeaokOsy9LqRC-FVHkFvSY,10285
|
88
|
-
retab/types/documents/extractions.py,sha256=
|
89
|
-
retab/types/documents/parse.py,sha256
|
88
|
+
retab/types/documents/extractions.py,sha256=z1XlQLeCGcUAipVB8WGbbUjaBor1bN9BxQzeBaDMj3E,19096
|
89
|
+
retab/types/documents/parse.py,sha256=-gCzloJhZraR_Pi9Je0SL8aP52n0GfO9qH838usPA3w,1418
|
90
90
|
retab/types/evaluations/__init__.py,sha256=fRQlK6y3x3SHqaukVYd9_zH8HrUk9TpoG9dlOTuIkcY,920
|
91
91
|
retab/types/evaluations/documents.py,sha256=oy0nqTrv0Pe__5ligeNWn5MbqVDAFRSrXYbCVoLxyXw,1268
|
92
92
|
retab/types/evaluations/iterations.py,sha256=lVHcqmIT0AtJyn7dc_Mw-WbeA0gfTUG1KoifCOFPIkg,4635
|
@@ -123,7 +123,7 @@ retab/utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPx
|
|
123
123
|
retab/utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
|
124
124
|
retab/utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
125
|
retab/utils/usage/usage.py,sha256=PoQAMSWqEXYIRdp-JW9HjecFVitD_oMbxDMtDJdqWnQ,12948
|
126
|
-
retab-0.0.
|
127
|
-
retab-0.0.
|
128
|
-
retab-0.0.
|
129
|
-
retab-0.0.
|
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,,
|