retab 0.0.35__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-0.0.35.dist-info/METADATA +417 -0
- retab-0.0.35.dist-info/RECORD +111 -0
- retab-0.0.35.dist-info/WHEEL +5 -0
- retab-0.0.35.dist-info/top_level.txt +1 -0
- uiform/__init__.py +4 -0
- uiform/_resource.py +28 -0
- uiform/_utils/__init__.py +0 -0
- uiform/_utils/ai_models.py +100 -0
- uiform/_utils/benchmarking copy.py +588 -0
- uiform/_utils/benchmarking.py +485 -0
- uiform/_utils/chat.py +332 -0
- uiform/_utils/display.py +443 -0
- uiform/_utils/json_schema.py +2161 -0
- uiform/_utils/mime.py +168 -0
- uiform/_utils/responses.py +163 -0
- uiform/_utils/stream_context_managers.py +52 -0
- uiform/_utils/usage/__init__.py +0 -0
- uiform/_utils/usage/usage.py +300 -0
- uiform/client.py +701 -0
- uiform/py.typed +0 -0
- uiform/resources/__init__.py +0 -0
- uiform/resources/consensus/__init__.py +3 -0
- uiform/resources/consensus/client.py +114 -0
- uiform/resources/consensus/completions.py +252 -0
- uiform/resources/consensus/completions_stream.py +278 -0
- uiform/resources/consensus/responses.py +325 -0
- uiform/resources/consensus/responses_stream.py +373 -0
- uiform/resources/deployments/__init__.py +9 -0
- uiform/resources/deployments/client.py +78 -0
- uiform/resources/deployments/endpoints.py +322 -0
- uiform/resources/deployments/links.py +452 -0
- uiform/resources/deployments/logs.py +211 -0
- uiform/resources/deployments/mailboxes.py +496 -0
- uiform/resources/deployments/outlook.py +531 -0
- uiform/resources/deployments/tests.py +158 -0
- uiform/resources/documents/__init__.py +3 -0
- uiform/resources/documents/client.py +255 -0
- uiform/resources/documents/extractions.py +441 -0
- uiform/resources/evals.py +812 -0
- uiform/resources/files.py +24 -0
- uiform/resources/finetuning.py +62 -0
- uiform/resources/jsonlUtils.py +1046 -0
- uiform/resources/models.py +45 -0
- uiform/resources/openai_example.py +22 -0
- uiform/resources/processors/__init__.py +3 -0
- uiform/resources/processors/automations/__init__.py +9 -0
- uiform/resources/processors/automations/client.py +78 -0
- uiform/resources/processors/automations/endpoints.py +317 -0
- uiform/resources/processors/automations/links.py +356 -0
- uiform/resources/processors/automations/logs.py +211 -0
- uiform/resources/processors/automations/mailboxes.py +435 -0
- uiform/resources/processors/automations/outlook.py +444 -0
- uiform/resources/processors/automations/tests.py +158 -0
- uiform/resources/processors/client.py +474 -0
- uiform/resources/prompt_optimization.py +76 -0
- uiform/resources/schemas.py +369 -0
- uiform/resources/secrets/__init__.py +9 -0
- uiform/resources/secrets/client.py +20 -0
- uiform/resources/secrets/external_api_keys.py +109 -0
- uiform/resources/secrets/webhook.py +62 -0
- uiform/resources/usage.py +271 -0
- uiform/types/__init__.py +0 -0
- uiform/types/ai_models.py +645 -0
- uiform/types/automations/__init__.py +0 -0
- uiform/types/automations/cron.py +58 -0
- uiform/types/automations/endpoints.py +21 -0
- uiform/types/automations/links.py +28 -0
- uiform/types/automations/mailboxes.py +60 -0
- uiform/types/automations/outlook.py +68 -0
- uiform/types/automations/webhooks.py +21 -0
- uiform/types/chat.py +8 -0
- uiform/types/completions.py +93 -0
- uiform/types/consensus.py +10 -0
- uiform/types/db/__init__.py +0 -0
- uiform/types/db/annotations.py +24 -0
- uiform/types/db/files.py +36 -0
- uiform/types/deployments/__init__.py +0 -0
- uiform/types/deployments/cron.py +59 -0
- uiform/types/deployments/endpoints.py +28 -0
- uiform/types/deployments/links.py +36 -0
- uiform/types/deployments/mailboxes.py +67 -0
- uiform/types/deployments/outlook.py +76 -0
- uiform/types/deployments/webhooks.py +21 -0
- uiform/types/documents/__init__.py +0 -0
- uiform/types/documents/correct_orientation.py +13 -0
- uiform/types/documents/create_messages.py +226 -0
- uiform/types/documents/extractions.py +297 -0
- uiform/types/evals.py +207 -0
- uiform/types/events.py +76 -0
- uiform/types/extractions.py +85 -0
- uiform/types/jobs/__init__.py +0 -0
- uiform/types/jobs/base.py +150 -0
- uiform/types/jobs/batch_annotation.py +22 -0
- uiform/types/jobs/evaluation.py +133 -0
- uiform/types/jobs/finetune.py +6 -0
- uiform/types/jobs/prompt_optimization.py +41 -0
- uiform/types/jobs/webcrawl.py +6 -0
- uiform/types/logs.py +231 -0
- uiform/types/mime.py +257 -0
- uiform/types/modalities.py +68 -0
- uiform/types/pagination.py +6 -0
- uiform/types/schemas/__init__.py +0 -0
- uiform/types/schemas/enhance.py +53 -0
- uiform/types/schemas/evaluate.py +55 -0
- uiform/types/schemas/generate.py +32 -0
- uiform/types/schemas/layout.py +58 -0
- uiform/types/schemas/object.py +631 -0
- uiform/types/schemas/templates.py +107 -0
- uiform/types/secrets/__init__.py +0 -0
- uiform/types/secrets/external_api_keys.py +22 -0
- uiform/types/standards.py +39 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
from pydantic import BaseModel, Field, model_validator
|
2
|
+
from typing import Any, Literal, Self
|
3
|
+
from ..mime import MIMEData
|
4
|
+
from ..modalities import Modality
|
5
|
+
from openai.types.chat.chat_completion_reasoning_effort import ChatCompletionReasoningEffort
|
6
|
+
from ..evals import ItemMetric
|
7
|
+
|
8
|
+
|
9
|
+
class EvaluateSchemaRequest(BaseModel):
|
10
|
+
"""
|
11
|
+
The request body for evaluating a JSON Schema.
|
12
|
+
|
13
|
+
Two evaluation modes are supported:
|
14
|
+
- 'consensus': Uses multiple extractions to compute consensus-based likelihoods
|
15
|
+
- 'distance': Compares single extraction against provided ground truths
|
16
|
+
"""
|
17
|
+
|
18
|
+
documents: list[MIMEData]
|
19
|
+
ground_truths: list[dict[str, Any]] | None = None
|
20
|
+
model: str = "gpt-4o-mini"
|
21
|
+
reasoning_effort: ChatCompletionReasoningEffort = "medium"
|
22
|
+
modality: Modality
|
23
|
+
image_resolution_dpi: int = Field(default=96, description="Resolution of the image sent to the LLM")
|
24
|
+
browser_canvas: Literal["A3", "A4", "A5"] = Field(
|
25
|
+
default="A4", description="Sets the size of the browser canvas for rendering documents in browser-based processing. Choose a size that matches the document type."
|
26
|
+
)
|
27
|
+
n_consensus: int = 1
|
28
|
+
json_schema: dict[str, Any]
|
29
|
+
|
30
|
+
@model_validator(mode="after")
|
31
|
+
def validate_evaluation_mode_consistency(self) -> Self:
|
32
|
+
"""Validate that parameters are consistent with the chosen evaluation mode."""
|
33
|
+
|
34
|
+
if self.ground_truths is None:
|
35
|
+
# Consensus mode requirements
|
36
|
+
if self.n_consensus <= 1:
|
37
|
+
raise ValueError("Consensus mode requires n_consensus > 1")
|
38
|
+
else:
|
39
|
+
# Distance mode requirements
|
40
|
+
if self.n_consensus != 1:
|
41
|
+
raise ValueError("Distance mode requires n_consensus = 1")
|
42
|
+
if len(self.documents) != len(self.ground_truths):
|
43
|
+
raise ValueError("Distance mode requires equal number of documents and ground_truths")
|
44
|
+
if len(self.documents) == 0:
|
45
|
+
raise ValueError("Evaluation mode requires at least one document")
|
46
|
+
|
47
|
+
return self
|
48
|
+
|
49
|
+
|
50
|
+
class EvaluateSchemaResponse(BaseModel):
|
51
|
+
"""
|
52
|
+
The response body for evaluating a JSON Schema.
|
53
|
+
"""
|
54
|
+
|
55
|
+
item_metrics: list[ItemMetric]
|
@@ -0,0 +1,32 @@
|
|
1
|
+
from typing import Any, Literal
|
2
|
+
from openai.types.chat.chat_completion_reasoning_effort import ChatCompletionReasoningEffort
|
3
|
+
from pydantic import BaseModel, Field
|
4
|
+
|
5
|
+
from ..mime import MIMEData
|
6
|
+
from ..modalities import Modality
|
7
|
+
|
8
|
+
|
9
|
+
class GenerateSchemaRequest(BaseModel):
|
10
|
+
documents: list[MIMEData]
|
11
|
+
model: str = "gpt-4o-mini"
|
12
|
+
temperature: float = 0.0
|
13
|
+
reasoning_effort: ChatCompletionReasoningEffort = "medium"
|
14
|
+
modality: Modality
|
15
|
+
instructions: str | None = None
|
16
|
+
"""The modality of the document to load."""
|
17
|
+
image_resolution_dpi: int = Field(default=96, description="Resolution of the image sent to the LLM")
|
18
|
+
browser_canvas: Literal['A3', 'A4', 'A5'] = Field(default='A4', description="Sets the size of the browser canvas for rendering documents in browser-based processing. Choose a size that matches the document type.")
|
19
|
+
|
20
|
+
"""The image operations to apply to the document."""
|
21
|
+
|
22
|
+
stream: bool = False
|
23
|
+
"""Whether to stream the response."""
|
24
|
+
|
25
|
+
|
26
|
+
class GenerateSystemPromptRequest(GenerateSchemaRequest):
|
27
|
+
"""
|
28
|
+
The request body for generating a system prompt for a JSON Schema.
|
29
|
+
"""
|
30
|
+
|
31
|
+
json_schema: dict[str, Any]
|
32
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from typing import Any, Dict, List, Literal, Optional, Union
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
from pydantic import Field as PydanticField
|
5
|
+
|
6
|
+
|
7
|
+
# Terminal items
|
8
|
+
class FieldItem(BaseModel):
|
9
|
+
type: Literal["field"]
|
10
|
+
name: str
|
11
|
+
size: Optional[int] = None
|
12
|
+
|
13
|
+
|
14
|
+
class RefObject(BaseModel):
|
15
|
+
type: Literal["object"]
|
16
|
+
size: Optional[int] = None
|
17
|
+
name: Optional[str] = None
|
18
|
+
ref: str = PydanticField(..., alias="$ref")
|
19
|
+
|
20
|
+
|
21
|
+
# Recursive items
|
22
|
+
class Column(BaseModel):
|
23
|
+
type: Literal["column"]
|
24
|
+
size: int
|
25
|
+
items: List[Union["Row", FieldItem, RefObject, "RowList"]] = PydanticField(default_factory=list)
|
26
|
+
name: Optional[str] = None
|
27
|
+
|
28
|
+
model_config = {"arbitrary_types_allowed": True}
|
29
|
+
|
30
|
+
|
31
|
+
class Row(BaseModel):
|
32
|
+
type: Literal["row"]
|
33
|
+
name: Optional[str] = None
|
34
|
+
items: List[Column | FieldItem | RefObject]
|
35
|
+
|
36
|
+
model_config = {"arbitrary_types_allowed": True}
|
37
|
+
|
38
|
+
|
39
|
+
class RowList(BaseModel):
|
40
|
+
type: Literal["rowList"]
|
41
|
+
name: Optional[str] = None
|
42
|
+
items: List[Column | FieldItem | RefObject] = PydanticField(default_factory=list)
|
43
|
+
|
44
|
+
model_config = {"arbitrary_types_allowed": True}
|
45
|
+
|
46
|
+
|
47
|
+
# Root Layout type
|
48
|
+
class Layout(BaseModel):
|
49
|
+
# Use alias "$defs" for the definitions
|
50
|
+
defs: Dict[str, Column] = PydanticField(default_factory=dict, alias="$defs")
|
51
|
+
type: Literal["column"]
|
52
|
+
size: int
|
53
|
+
items: List[Row | RowList | FieldItem | RefObject] = PydanticField(default_factory=list)
|
54
|
+
|
55
|
+
model_config = {"arbitrary_types_allowed": True}
|
56
|
+
|
57
|
+
|
58
|
+
Column.model_rebuild()
|