retab 0.0.43__py3-none-any.whl → 0.0.45__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 +11 -7
- retab/generate_types.py +180 -0
- retab/resources/deployments/__init__.py +3 -0
- retab/resources/deployments/automations/__init__.py +9 -0
- retab/resources/deployments/automations/client.py +244 -0
- retab/resources/deployments/automations/endpoints.py +290 -0
- retab/resources/deployments/automations/links.py +303 -0
- retab/resources/deployments/automations/logs.py +222 -0
- retab/resources/deployments/automations/mailboxes.py +423 -0
- retab/resources/deployments/automations/outlook.py +377 -0
- retab/resources/deployments/automations/tests.py +161 -0
- retab/resources/deployments/client.py +148 -0
- retab/resources/evaluations/__init__.py +2 -2
- retab/resources/evaluations/client.py +46 -75
- retab/resources/evaluations/documents.py +41 -31
- retab/resources/evaluations/iterations.py +12 -12
- retab/resources/projects/__init__.py +3 -0
- retab/resources/projects/client.py +285 -0
- retab/resources/projects/documents.py +244 -0
- retab/resources/projects/iterations.py +470 -0
- retab/types/ai_models.py +1 -0
- retab/types/deprecated_evals.py +7 -7
- retab/types/evaluations/model.py +2 -5
- retab/types/jobs/base.py +1 -1
- retab/types/jobs/evaluation.py +1 -1
- retab/types/projects/__init__.py +34 -0
- retab/types/projects/documents.py +30 -0
- retab/types/projects/iterations.py +78 -0
- retab/types/projects/model.py +68 -0
- retab/types/schemas/evaluate.py +1 -1
- retab/types/schemas/object.py +5 -29
- retab/utils/usage/usage.py +0 -1
- {retab-0.0.43.dist-info → retab-0.0.45.dist-info}/METADATA +2 -2
- {retab-0.0.43.dist-info → retab-0.0.45.dist-info}/RECORD +36 -17
- {retab-0.0.43.dist-info → retab-0.0.45.dist-info}/WHEEL +0 -0
- {retab-0.0.43.dist-info → retab-0.0.45.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
import datetime
|
2
|
+
from typing import Any, Optional, Self
|
3
|
+
|
4
|
+
import nanoid # type: ignore
|
5
|
+
from pydantic import BaseModel, Field, model_validator
|
6
|
+
|
7
|
+
from ..inference_settings import InferenceSettings
|
8
|
+
from ..predictions import PredictionData
|
9
|
+
|
10
|
+
|
11
|
+
class BaseIteration(BaseModel):
|
12
|
+
id: str = Field(default_factory=lambda: "eval_iter_" + nanoid.generate())
|
13
|
+
inference_settings: InferenceSettings
|
14
|
+
json_schema: dict[str, Any]
|
15
|
+
updated_at: datetime.datetime = Field(
|
16
|
+
default_factory=lambda: datetime.datetime.now(tz=datetime.timezone.utc),
|
17
|
+
description="The last update date of inference settings or json schema",
|
18
|
+
)
|
19
|
+
|
20
|
+
class Iteration(BaseIteration):
|
21
|
+
predictions: dict[str, PredictionData] = Field(default_factory=dict, description="The predictions of the iteration for all the documents")
|
22
|
+
|
23
|
+
class CreateIterationRequest(BaseModel):
|
24
|
+
"""
|
25
|
+
Request model for performing a new iteration with custom inference settings and optional JSON schema.
|
26
|
+
"""
|
27
|
+
|
28
|
+
inference_settings: InferenceSettings
|
29
|
+
json_schema: Optional[dict[str, Any]] = None
|
30
|
+
from_iteration_id: Optional[str] = Field(
|
31
|
+
default=None,
|
32
|
+
description="The ID of the iteration to copy the JSON Schema from.",
|
33
|
+
)
|
34
|
+
|
35
|
+
# validate that exactly one of from_iteration_id or json_schema is provided
|
36
|
+
@model_validator(mode="after")
|
37
|
+
def validate_one_of_from_iteration_id_or_json_schema(self) -> Self:
|
38
|
+
if (self.from_iteration_id is None) ^ (self.json_schema is None):
|
39
|
+
return self
|
40
|
+
raise ValueError("Exactly one of from_iteration_id or json_schema must be provided")
|
41
|
+
|
42
|
+
|
43
|
+
class PatchIterationRequest(BaseModel):
|
44
|
+
inference_settings: Optional[InferenceSettings] = Field(default=None, description="The new inference settings of the iteration")
|
45
|
+
json_schema: Optional[dict[str, Any]] = Field(default=None, description="The new json schema of the iteration")
|
46
|
+
version: Optional[int] = Field(default=None, description="Current version for optimistic locking")
|
47
|
+
|
48
|
+
|
49
|
+
class ProcessIterationRequest(BaseModel):
|
50
|
+
"""Request model for processing an iteration - running extractions on documents."""
|
51
|
+
|
52
|
+
document_ids: Optional[list[str]] = Field(default=None, description="Specific document IDs to process. If None, all documents will be processed.")
|
53
|
+
only_outdated: bool = Field(default=True, description="Only process documents that need updates (prediction.updated_at is None or older than iteration.updated_at)")
|
54
|
+
|
55
|
+
|
56
|
+
class DocumentStatus(BaseModel):
|
57
|
+
"""Status of a document within an iteration."""
|
58
|
+
|
59
|
+
document_id: str
|
60
|
+
filename: str
|
61
|
+
needs_update: bool = Field(description="True if prediction is missing or outdated")
|
62
|
+
has_prediction: bool = Field(description="True if any prediction exists")
|
63
|
+
prediction_updated_at: Optional[datetime.datetime] = Field(description="When the prediction was last updated")
|
64
|
+
iteration_updated_at: datetime.datetime = Field(description="When the iteration settings were last updated")
|
65
|
+
|
66
|
+
|
67
|
+
class IterationDocumentStatusResponse(BaseModel):
|
68
|
+
"""Response showing the status of all documents in an iteration."""
|
69
|
+
|
70
|
+
iteration_id: str
|
71
|
+
documents: list[DocumentStatus]
|
72
|
+
total_documents: int
|
73
|
+
documents_needing_update: int
|
74
|
+
documents_up_to_date: int
|
75
|
+
|
76
|
+
|
77
|
+
class AddIterationFromJsonlRequest(BaseModel):
|
78
|
+
jsonl_gcs_path: str
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import datetime
|
2
|
+
from typing import Any, Optional
|
3
|
+
|
4
|
+
import nanoid # type: ignore
|
5
|
+
from pydantic import BaseModel, Field, computed_field
|
6
|
+
|
7
|
+
from ...utils.json_schema import generate_schema_data_id, generate_schema_id
|
8
|
+
from ..inference_settings import InferenceSettings
|
9
|
+
from .documents import ProjectDocument
|
10
|
+
from .iterations import Iteration
|
11
|
+
|
12
|
+
|
13
|
+
class BaseProject(BaseModel):
|
14
|
+
id: str = Field(default_factory=lambda: "proj_" + nanoid.generate())
|
15
|
+
name: str = Field(default="", description="The name of the project")
|
16
|
+
json_schema: dict[str, Any] = Field(default_factory=dict, description="The json schema of the project")
|
17
|
+
default_inference_settings: InferenceSettings = Field(default=InferenceSettings(), description="The default inference properties for the project.")
|
18
|
+
updated_at: datetime.datetime = Field(default_factory=lambda: datetime.datetime.now(tz=datetime.timezone.utc))
|
19
|
+
|
20
|
+
|
21
|
+
# Actual Object stored in DB
|
22
|
+
class Project(BaseProject):
|
23
|
+
documents: list[ProjectDocument] = Field(default_factory=list)
|
24
|
+
iterations: list[Iteration] = Field(default_factory=list)
|
25
|
+
|
26
|
+
@computed_field # type: ignore
|
27
|
+
@property
|
28
|
+
def schema_data_id(self) -> str:
|
29
|
+
"""Returns the SHA1 hash of the schema data, ignoring all prompt/description/default fields.
|
30
|
+
|
31
|
+
Returns:
|
32
|
+
str: A SHA1 hash string representing the schema data version.
|
33
|
+
"""
|
34
|
+
return generate_schema_data_id(self.json_schema)
|
35
|
+
|
36
|
+
# This is a computed field, it is exposed when serializing the object
|
37
|
+
@computed_field # type: ignore
|
38
|
+
@property
|
39
|
+
def schema_id(self) -> str:
|
40
|
+
"""Returns the SHA1 hash of the complete schema.
|
41
|
+
|
42
|
+
Returns:
|
43
|
+
str: A SHA1 hash string representing the complete schema version.
|
44
|
+
"""
|
45
|
+
return generate_schema_id(self.json_schema)
|
46
|
+
|
47
|
+
|
48
|
+
class ListProjectParams(BaseModel):
|
49
|
+
schema_id: Optional[str] = Field(default=None, description="The ID of the schema")
|
50
|
+
schema_data_id: Optional[str] = Field(default=None, description="The ID of the schema data")
|
51
|
+
|
52
|
+
|
53
|
+
class CreateProjectRequest(BaseModel):
|
54
|
+
name: str
|
55
|
+
json_schema: dict[str, Any]
|
56
|
+
default_inference_settings: InferenceSettings
|
57
|
+
|
58
|
+
|
59
|
+
# This is basically the same as BaseProject, but everything is optional.
|
60
|
+
# Could be achieved by convert_basemodel_to_partial_basemodel(BaseProject) but we prefer explicitness
|
61
|
+
class PatchProjectRequest(BaseModel):
|
62
|
+
name: Optional[str] = Field(default=None, description="The name of the document")
|
63
|
+
json_schema: Optional[dict[str, Any]] = Field(default=None, description="The json schema of the project")
|
64
|
+
default_inference_settings: Optional[InferenceSettings] = Field(default=None, description="The default inference properties for the project (mostly used in the frontend)")
|
65
|
+
|
66
|
+
|
67
|
+
class AddIterationFromJsonlRequest(BaseModel):
|
68
|
+
jsonl_gcs_path: str
|
retab/types/schemas/evaluate.py
CHANGED
@@ -45,7 +45,7 @@ class EvaluateSchemaRequest(BaseModel):
|
|
45
45
|
if len(self.documents) != len(self.ground_truths):
|
46
46
|
raise ValueError("Distance mode requires equal number of documents and ground_truths")
|
47
47
|
if len(self.documents) == 0:
|
48
|
-
raise ValueError("
|
48
|
+
raise ValueError("Project mode requires at least one document")
|
49
49
|
|
50
50
|
return self
|
51
51
|
|
retab/types/schemas/object.py
CHANGED
@@ -237,10 +237,7 @@ When provided with a **JSON schema** and a **document**, you must:
|
|
237
237
|
|
238
238
|
When extracting date, time, or datetime values:
|
239
239
|
|
240
|
-
- **Always use ISO format** for dates and times (e.g., "2023-12-25", "14:30:00", "2023-12-25T14:30:
|
241
|
-
- **Include timezone information** when available (e.g., "2023-12-25T14:30:00+02:00")
|
242
|
-
- **Use UTC timezone** when timezone is not specified or unclear (e.g., "2023-12-25T14:30:00Z")
|
243
|
-
- **Maintain precision** as found in the source document (seconds, milliseconds if present)
|
240
|
+
- **Always use ISO format** for dates and times (e.g., "2023-12-25", "14:30:00", "2023-12-25T14:30:00")
|
244
241
|
|
245
242
|
**Examples:**
|
246
243
|
|
@@ -383,32 +380,11 @@ When performing extraction, explicitly follow these core principles:
|
|
383
380
|
- **Structure Preservation**: Always maintain explicitly the full schema structure, even when entire nested objects lack data (leaf attributes as null).
|
384
381
|
|
385
382
|
|
386
|
-
|
387
|
-
|
388
|
-
Some leaf fields require you to explicitly provide the source of the data (verbatim from the document).
|
389
|
-
The idea is to simply provide a verbatim quote from the document, without any additional formatting or commentary, keeping it as close as possible to the original text.
|
390
|
-
Make sure to reasonably include some surrounding text to provide context about the quote.
|
391
|
-
|
392
|
-
You can easily identify the fields that require a source by the `quote___[attributename]` naming pattern.
|
393
|
-
|
394
|
-
**Example:**
|
395
|
-
|
396
|
-
```json
|
397
|
-
{
|
398
|
-
"quote___name": "NAME:\nJohn Doe",
|
399
|
-
"name": "John Doe"
|
400
|
-
}
|
401
|
-
```
|
402
|
-
|
403
|
-
---
|
404
|
-
|
405
|
-
# User Defined System Prompt
|
406
|
-
|
407
|
-
"""
|
383
|
+
---"""
|
408
384
|
|
409
385
|
@property
|
410
|
-
def user_system_prompt(self) -> str:
|
411
|
-
return self.json_schema.get("X-SystemPrompt",
|
386
|
+
def user_system_prompt(self) -> str | None:
|
387
|
+
return self.json_schema.get("X-SystemPrompt", None)
|
412
388
|
|
413
389
|
@property
|
414
390
|
def schema_system_prompt(self) -> str:
|
@@ -423,7 +399,7 @@ You can easily identify the fields that require a source by the `quote___[attrib
|
|
423
399
|
Returns:
|
424
400
|
str: The combined system prompt string.
|
425
401
|
"""
|
426
|
-
return self.developer_system_prompt + "\n\n" + self.user_system_prompt + "\n\n" + self.schema_system_prompt
|
402
|
+
return self.developer_system_prompt + "\n\n" + (self.user_system_prompt + "\n\n" if self.user_system_prompt else "") + self.schema_system_prompt
|
427
403
|
|
428
404
|
@property
|
429
405
|
def title(self) -> str:
|
retab/utils/usage/usage.py
CHANGED
@@ -117,7 +117,6 @@ class CompletionsUsage(BaseModel):
|
|
117
117
|
input_audio_tokens: int = Field(description="The aggregated number of audio input tokens used, including cached tokens.")
|
118
118
|
output_audio_tokens: int = Field(description="The aggregated number of audio output tokens used.")
|
119
119
|
num_model_requests: int = Field(description="The count of requests made to the model.")
|
120
|
-
project_id: Optional[str] = Field(default=None, description="When group_by=project_id, this field provides the project ID of the grouped usage result.")
|
121
120
|
user_id: Optional[str] = Field(default=None, description="When group_by=user_id, this field provides the user ID of the grouped usage result.")
|
122
121
|
api_key_id: Optional[str] = Field(default=None, description="When group_by=api_key_id, this field provides the API key ID of the grouped usage result.")
|
123
122
|
model: Optional[str] = Field(default=None, description="When group_by=model, this field provides the model name of the grouped usage result.")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: retab
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.45
|
4
4
|
Summary: Retab official python library
|
5
5
|
Home-page: https://github.com/Retab-dev/retab
|
6
6
|
Author: Retab
|
@@ -67,7 +67,7 @@ Retab solves all the major challenges in document processing with Large Language
|
|
67
67
|
2. **Structured, Schema-driven Extraction**: Get consistent, reliable outputs using schema-based prompt engineering
|
68
68
|
3. **Processors**: Publish a live, stable, shareable document processor.
|
69
69
|
4. **Automations**: Create document processing workflows that can be triggered by events (mailbox, upload link, endpoint, outlook plugin).
|
70
|
-
5. **
|
70
|
+
5. **Projects**: Evaluate the performance of models against annotated datasets
|
71
71
|
6. **Optimizations**: Identify the most used processors and help you finetune models to reduce costs and improve performance
|
72
72
|
|
73
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.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
retab/__init__.py,sha256=IfXoXvlvx4t1q5Ge6_pCOQnGOymVPxT7Dm1vQJ0OqoA,153
|
2
2
|
retab/_resource.py,sha256=JfAU4UTa05ugWfbrpO7fsVr_pFewht99NkoIfK6kBQM,577
|
3
|
-
retab/client.py,sha256=
|
3
|
+
retab/client.py,sha256=iONTgYnm2qc17BfrKht8kbLAooKD7_ie3Wmfny5xE9I,27915
|
4
|
+
retab/generate_types.py,sha256=BK9coDsfUdoKQ632xbVlkul3EuEeolmTxzpCN0prKcw,7781
|
4
5
|
retab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
6
|
retab/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
7
|
retab/resources/evals.py,sha256=vOMyCJ0dVy6YZUv4NtkujZBZCByvr0PmSpV6UGnorHw,29927
|
@@ -18,13 +19,23 @@ retab/resources/consensus/completions.py,sha256=6vTnqADY6GueV28smYRDQ2yooj94G2WH
|
|
18
19
|
retab/resources/consensus/completions_stream.py,sha256=DlU9od01F1Fmh9WjTLhq4KsntfqXy5jGGwrYauS43Ec,10893
|
19
20
|
retab/resources/consensus/responses.py,sha256=hf1_gXBG8iwrBGyuXx16qCh6ULDXn9a0Uty1C-WiG7s,9966
|
20
21
|
retab/resources/consensus/responses_stream.py,sha256=OopJ9aoO7HctfhLnXzJx8-dkk-4jK_juOw6jUAkzwVM,11671
|
22
|
+
retab/resources/deployments/__init__.py,sha256=sGTfJ8ozhkTtEzHC_LziiffYFElm6XjtYIZ0jEDFLg4,97
|
23
|
+
retab/resources/deployments/client.py,sha256=y2zc1gRnzvLVoR_ZDOBPy_Fdq1iOYafA12ThAaqfDrA,6169
|
24
|
+
retab/resources/deployments/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
|
25
|
+
retab/resources/deployments/automations/client.py,sha256=3w54F0JfC2GYDosLux8LVEjDd_RXqQ29-SyNXGa28U8,10500
|
26
|
+
retab/resources/deployments/automations/endpoints.py,sha256=zJ556BNighciPff1laA_bBPZNxT4mWmGi-kDMXa5_tw,10893
|
27
|
+
retab/resources/deployments/automations/links.py,sha256=cSWLYE1g9VbR2kCckYNuE2xrMHYyGQ6Ei5YXmYjLkR0,11163
|
28
|
+
retab/resources/deployments/automations/logs.py,sha256=seBjzv4Tm8fMJcApzZcyR5yXG5YLP0yW5BH5ql7JMcg,8827
|
29
|
+
retab/resources/deployments/automations/mailboxes.py,sha256=OwThPbkjixPnmIIsOmKRqDp4upGhyrXtwMJ9JFwJUIw,15795
|
30
|
+
retab/resources/deployments/automations/outlook.py,sha256=UrzyVRMfzkSwbMo4EsAxYkqOs3J8IBN2yrXrv40lo3w,14616
|
31
|
+
retab/resources/deployments/automations/tests.py,sha256=nbO6qIkQnpr629ZkCchbfCJOm7KyjDOaLsxXxB3i0cg,6219
|
21
32
|
retab/resources/documents/__init__.py,sha256=OjXmngFN0RKqO4SI-mJBNzr6Ex6rMxfq0DxaqzP0RQs,89
|
22
33
|
retab/resources/documents/client.py,sha256=Okf4NvNjH4F5-jTJ7xIBv4LiMyM7TZkonTEDD5SuG6Q,25872
|
23
34
|
retab/resources/documents/extractions.py,sha256=KQJMgu_w5TfR3NI-pvNaGayjZc61sCNQleoXfmA00j0,25041
|
24
|
-
retab/resources/evaluations/__init__.py,sha256=
|
25
|
-
retab/resources/evaluations/client.py,sha256=
|
26
|
-
retab/resources/evaluations/documents.py,sha256=
|
27
|
-
retab/resources/evaluations/iterations.py,sha256=
|
35
|
+
retab/resources/evaluations/__init__.py,sha256=tPR3_3tr7bsoYd618qmGjnYN2R23PmF5oCFd7Z5_HGY,85
|
36
|
+
retab/resources/evaluations/client.py,sha256=dQQZ9JCYnx65tfBn2lNXz0w0M1NfXFMucVqTdyLtg0I,9721
|
37
|
+
retab/resources/evaluations/documents.py,sha256=i1KoC0aOCYw3_UFuYBZ8WcYhYugpv2JwP94YdMp3vqA,9786
|
38
|
+
retab/resources/evaluations/iterations.py,sha256=jz7whsf7GJSz2MoBJFbjoOoN4ziF-hwkP12XfSlElOI,18696
|
28
39
|
retab/resources/processors/__init__.py,sha256=w1HrMdSi3xlrcEDFMQ9BA7rbUhOFWSTkTKkkR2PfFHQ,93
|
29
40
|
retab/resources/processors/client.py,sha256=81CG3CH63pI7FAxOLHCgAEJWh-1TgNmkvsaxpTkjcRM,20530
|
30
41
|
retab/resources/processors/automations/__init__.py,sha256=Iej-_yIxc8xAuhYmR0e2VI7j_EXVsNk1_L98OJSD82E,121
|
@@ -35,17 +46,21 @@ retab/resources/processors/automations/logs.py,sha256=seBjzv4Tm8fMJcApzZcyR5yXG5
|
|
35
46
|
retab/resources/processors/automations/mailboxes.py,sha256=OwThPbkjixPnmIIsOmKRqDp4upGhyrXtwMJ9JFwJUIw,15795
|
36
47
|
retab/resources/processors/automations/outlook.py,sha256=UrzyVRMfzkSwbMo4EsAxYkqOs3J8IBN2yrXrv40lo3w,14616
|
37
48
|
retab/resources/processors/automations/tests.py,sha256=nbO6qIkQnpr629ZkCchbfCJOm7KyjDOaLsxXxB3i0cg,6219
|
49
|
+
retab/resources/projects/__init__.py,sha256=tPR3_3tr7bsoYd618qmGjnYN2R23PmF5oCFd7Z5_HGY,85
|
50
|
+
retab/resources/projects/client.py,sha256=7J0UT9sY_I0DOolaBiALS6Z9yDO6xLnTW-hovdQo32M,9715
|
51
|
+
retab/resources/projects/documents.py,sha256=i1KoC0aOCYw3_UFuYBZ8WcYhYugpv2JwP94YdMp3vqA,9786
|
52
|
+
retab/resources/projects/iterations.py,sha256=jz7whsf7GJSz2MoBJFbjoOoN4ziF-hwkP12XfSlElOI,18696
|
38
53
|
retab/resources/secrets/__init__.py,sha256=SwofMyk96k0YSyj1d_GRxhpVx4wb4TA97TISsTjB0Kc,105
|
39
54
|
retab/resources/secrets/client.py,sha256=nXt1cgvkWqhA99WTnC1PWbWJq-EbwvoDuCQOa0GJOOU,599
|
40
55
|
retab/resources/secrets/external_api_keys.py,sha256=3TuJxjk65EPUT2XC3wBcYWaVwqzc6QGv9BoHufzxTLU,3759
|
41
56
|
retab/resources/secrets/webhook.py,sha256=2mFDNblQYBGOwgqOG5gfRJkusQX7Hjy28XZ7O7ffkl8,1805
|
42
57
|
retab/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
|
-
retab/types/ai_models.py,sha256=
|
58
|
+
retab/types/ai_models.py,sha256=RaRrHtDq_LsR77hQlt4EgoGjlLlviKO2j684TT5taZA,4982
|
44
59
|
retab/types/browser_canvas.py,sha256=U3yLqJcSwfturcIsNFSblRtFtnG3p-UL1YYoM9KZfdE,70
|
45
60
|
retab/types/chat.py,sha256=l32vhLtNcdmHFjG4iVC617j38x6a2oH7CNPwlvqdF8g,424
|
46
61
|
retab/types/completions.py,sha256=ZQU29bm-FhdOzky4_Dp2N--fedR82C3QfCRZCJCQ-P8,5381
|
47
62
|
retab/types/consensus.py,sha256=EsFCsyZK8NhkQ1BizFpnGN54D24hRFKc0xwt9VpH11c,1161
|
48
|
-
retab/types/deprecated_evals.py,sha256=
|
63
|
+
retab/types/deprecated_evals.py,sha256=Yuz3OMlqUG_enS04apJEwTA7S6arv_U8-FC9eqPYZAA,9285
|
49
64
|
retab/types/evals.py,sha256=JNdWu4hplfSEuSzu9l27ZVr2RO2opUKEruIpKXZosmU,9953
|
50
65
|
retab/types/events.py,sha256=NrisdzJAaJ_kkfgdsqoiDB-Upm0LnbIGZikU_e9XXWw,2195
|
51
66
|
retab/types/extractions.py,sha256=_slYXQrWPi93iMdJIOIm-WzYwWPG2Fiyd3Xx0zfekl0,6144
|
@@ -75,20 +90,24 @@ retab/types/documents/parse.py,sha256=-gCzloJhZraR_Pi9Je0SL8aP52n0GfO9qH838usPA3
|
|
75
90
|
retab/types/evaluations/__init__.py,sha256=Jr-y_b7hE20LXMJoq4gkA3VF6bCUVGgAIbOWmMaXc7Q,1012
|
76
91
|
retab/types/evaluations/documents.py,sha256=oy0nqTrv0Pe__5ligeNWn5MbqVDAFRSrXYbCVoLxyXw,1268
|
77
92
|
retab/types/evaluations/iterations.py,sha256=YfiqaTvCxmPIJORHzCgtafshUBRZN9LAo1y2cOPSBco,3306
|
78
|
-
retab/types/evaluations/model.py,sha256=
|
93
|
+
retab/types/evaluations/model.py,sha256=S9U3pLnF-wz45jzfUQL5uSKhEi0-ylubQJi25amW-OA,2865
|
79
94
|
retab/types/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
|
-
retab/types/jobs/base.py,sha256=
|
95
|
+
retab/types/jobs/base.py,sha256=wxst8l329NHGQcI1tLVBzddc8OoJUtRexsW2kei-lVU,1692
|
81
96
|
retab/types/jobs/batch_annotation.py,sha256=Rftuu4Q6YzB4c39kWsqPGJ1QbPJrJWjWhupaKGO9kGE,281
|
82
|
-
retab/types/jobs/evaluation.py,sha256=
|
97
|
+
retab/types/jobs/evaluation.py,sha256=BLDRDuaAs2n26vvW4UVT9qn93o_kL89Ga3ycb8-xGro,4521
|
83
98
|
retab/types/jobs/finetune.py,sha256=6O9NUy-ap_aqZ73tYx-NRRdFgKOIvk8WcItGhEUvrSQ,187
|
84
99
|
retab/types/jobs/prompt_optimization.py,sha256=P7JI0zKFExCN4ws8kpFrCHBFbrJ4m4-zGJnNVXWa-ic,1306
|
85
100
|
retab/types/jobs/webcrawl.py,sha256=C3_7mW2mmOXs6ypktDIHdjMnify90pFo70wmhrs_TP8,183
|
101
|
+
retab/types/projects/__init__.py,sha256=63kk9c9PZX9cknPSYeK2gG5_ys98PqjEnj5OyYtsujY,964
|
102
|
+
retab/types/projects/documents.py,sha256=tgnT1f3vSd6LEA6ipm_Kt-nyCYUmI9wZMveH1aJQ8T4,1259
|
103
|
+
retab/types/projects/iterations.py,sha256=YfiqaTvCxmPIJORHzCgtafshUBRZN9LAo1y2cOPSBco,3306
|
104
|
+
retab/types/projects/model.py,sha256=xfDb1rcMWx-xSAwfCg2z2l0xKSsKOvBB_skBDsNxWc8,2820
|
86
105
|
retab/types/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
106
|
retab/types/schemas/enhance.py,sha256=2FR3APE1yh6_GLoQ8EDFAS1y3oM6B4D4pexP1ohazug,2738
|
88
|
-
retab/types/schemas/evaluate.py,sha256=
|
107
|
+
retab/types/schemas/evaluate.py,sha256=mTgl8rZWYnFYReN2bA7R4Vr2RijAOiEOtYQg0K4C2JM,2205
|
89
108
|
retab/types/schemas/generate.py,sha256=pb6e6yJ2KPswmNHNkFcRhata7B698yBLnzlFVspJ9mE,1194
|
90
109
|
retab/types/schemas/layout.py,sha256=JLPwQGIWfPBoe1Y5r-MhiNDJigzZ-yKZnVGgox0uqMk,1487
|
91
|
-
retab/types/schemas/object.py,sha256=
|
110
|
+
retab/types/schemas/object.py,sha256=lPnuqJGSChTf_8zGalhj_ez9Qqoyz0QsEmCseXR5VQ4,25383
|
92
111
|
retab/types/schemas/templates.py,sha256=Of4gYULkxULhMOv1X1zXe9pd7o3b21vDUF4BYSouAsc,3465
|
93
112
|
retab/types/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
94
113
|
retab/types/secrets/external_api_keys.py,sha256=-yaaOfNLxKpll3oD-0htQlW8S03lyWs9Mmk9HOdyQ3g,437
|
@@ -108,8 +127,8 @@ retab/utils/_model_cards/gemini.yaml,sha256=irV9c0WumgEOIYbAkR2jsisfK_4dY1Tzja2D
|
|
108
127
|
retab/utils/_model_cards/openai.yaml,sha256=PcmjqAioomqWOw25H4BluVfJ1WO_zapg_nPxORUR7JM,7639
|
109
128
|
retab/utils/_model_cards/xai.yaml,sha256=OdVV33_WODc4UBZhDezcUq_5mHQK5zeOT49EjJUJ764,612
|
110
129
|
retab/utils/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
|
-
retab/utils/usage/usage.py,sha256=
|
112
|
-
retab-0.0.
|
113
|
-
retab-0.0.
|
114
|
-
retab-0.0.
|
115
|
-
retab-0.0.
|
130
|
+
retab/utils/usage/usage.py,sha256=Dxi4EyTBMsu4mgUg7hwh4gTQlE70Xn3gxMZb0EEbti4,12791
|
131
|
+
retab-0.0.45.dist-info/METADATA,sha256=toZpfwd-Ph4A7IwGXxxNBp6a0XVckntEHA00vi2TPVU,4481
|
132
|
+
retab-0.0.45.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
|
133
|
+
retab-0.0.45.dist-info/top_level.txt,sha256=waQR0EGdhLIQtztoE3AXg7ik5ONQ9q_bsKVpyFuJdq0,6
|
134
|
+
retab-0.0.45.dist-info/RECORD,,
|
File without changes
|
File without changes
|