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.
Files changed (111) hide show
  1. retab-0.0.35.dist-info/METADATA +417 -0
  2. retab-0.0.35.dist-info/RECORD +111 -0
  3. retab-0.0.35.dist-info/WHEEL +5 -0
  4. retab-0.0.35.dist-info/top_level.txt +1 -0
  5. uiform/__init__.py +4 -0
  6. uiform/_resource.py +28 -0
  7. uiform/_utils/__init__.py +0 -0
  8. uiform/_utils/ai_models.py +100 -0
  9. uiform/_utils/benchmarking copy.py +588 -0
  10. uiform/_utils/benchmarking.py +485 -0
  11. uiform/_utils/chat.py +332 -0
  12. uiform/_utils/display.py +443 -0
  13. uiform/_utils/json_schema.py +2161 -0
  14. uiform/_utils/mime.py +168 -0
  15. uiform/_utils/responses.py +163 -0
  16. uiform/_utils/stream_context_managers.py +52 -0
  17. uiform/_utils/usage/__init__.py +0 -0
  18. uiform/_utils/usage/usage.py +300 -0
  19. uiform/client.py +701 -0
  20. uiform/py.typed +0 -0
  21. uiform/resources/__init__.py +0 -0
  22. uiform/resources/consensus/__init__.py +3 -0
  23. uiform/resources/consensus/client.py +114 -0
  24. uiform/resources/consensus/completions.py +252 -0
  25. uiform/resources/consensus/completions_stream.py +278 -0
  26. uiform/resources/consensus/responses.py +325 -0
  27. uiform/resources/consensus/responses_stream.py +373 -0
  28. uiform/resources/deployments/__init__.py +9 -0
  29. uiform/resources/deployments/client.py +78 -0
  30. uiform/resources/deployments/endpoints.py +322 -0
  31. uiform/resources/deployments/links.py +452 -0
  32. uiform/resources/deployments/logs.py +211 -0
  33. uiform/resources/deployments/mailboxes.py +496 -0
  34. uiform/resources/deployments/outlook.py +531 -0
  35. uiform/resources/deployments/tests.py +158 -0
  36. uiform/resources/documents/__init__.py +3 -0
  37. uiform/resources/documents/client.py +255 -0
  38. uiform/resources/documents/extractions.py +441 -0
  39. uiform/resources/evals.py +812 -0
  40. uiform/resources/files.py +24 -0
  41. uiform/resources/finetuning.py +62 -0
  42. uiform/resources/jsonlUtils.py +1046 -0
  43. uiform/resources/models.py +45 -0
  44. uiform/resources/openai_example.py +22 -0
  45. uiform/resources/processors/__init__.py +3 -0
  46. uiform/resources/processors/automations/__init__.py +9 -0
  47. uiform/resources/processors/automations/client.py +78 -0
  48. uiform/resources/processors/automations/endpoints.py +317 -0
  49. uiform/resources/processors/automations/links.py +356 -0
  50. uiform/resources/processors/automations/logs.py +211 -0
  51. uiform/resources/processors/automations/mailboxes.py +435 -0
  52. uiform/resources/processors/automations/outlook.py +444 -0
  53. uiform/resources/processors/automations/tests.py +158 -0
  54. uiform/resources/processors/client.py +474 -0
  55. uiform/resources/prompt_optimization.py +76 -0
  56. uiform/resources/schemas.py +369 -0
  57. uiform/resources/secrets/__init__.py +9 -0
  58. uiform/resources/secrets/client.py +20 -0
  59. uiform/resources/secrets/external_api_keys.py +109 -0
  60. uiform/resources/secrets/webhook.py +62 -0
  61. uiform/resources/usage.py +271 -0
  62. uiform/types/__init__.py +0 -0
  63. uiform/types/ai_models.py +645 -0
  64. uiform/types/automations/__init__.py +0 -0
  65. uiform/types/automations/cron.py +58 -0
  66. uiform/types/automations/endpoints.py +21 -0
  67. uiform/types/automations/links.py +28 -0
  68. uiform/types/automations/mailboxes.py +60 -0
  69. uiform/types/automations/outlook.py +68 -0
  70. uiform/types/automations/webhooks.py +21 -0
  71. uiform/types/chat.py +8 -0
  72. uiform/types/completions.py +93 -0
  73. uiform/types/consensus.py +10 -0
  74. uiform/types/db/__init__.py +0 -0
  75. uiform/types/db/annotations.py +24 -0
  76. uiform/types/db/files.py +36 -0
  77. uiform/types/deployments/__init__.py +0 -0
  78. uiform/types/deployments/cron.py +59 -0
  79. uiform/types/deployments/endpoints.py +28 -0
  80. uiform/types/deployments/links.py +36 -0
  81. uiform/types/deployments/mailboxes.py +67 -0
  82. uiform/types/deployments/outlook.py +76 -0
  83. uiform/types/deployments/webhooks.py +21 -0
  84. uiform/types/documents/__init__.py +0 -0
  85. uiform/types/documents/correct_orientation.py +13 -0
  86. uiform/types/documents/create_messages.py +226 -0
  87. uiform/types/documents/extractions.py +297 -0
  88. uiform/types/evals.py +207 -0
  89. uiform/types/events.py +76 -0
  90. uiform/types/extractions.py +85 -0
  91. uiform/types/jobs/__init__.py +0 -0
  92. uiform/types/jobs/base.py +150 -0
  93. uiform/types/jobs/batch_annotation.py +22 -0
  94. uiform/types/jobs/evaluation.py +133 -0
  95. uiform/types/jobs/finetune.py +6 -0
  96. uiform/types/jobs/prompt_optimization.py +41 -0
  97. uiform/types/jobs/webcrawl.py +6 -0
  98. uiform/types/logs.py +231 -0
  99. uiform/types/mime.py +257 -0
  100. uiform/types/modalities.py +68 -0
  101. uiform/types/pagination.py +6 -0
  102. uiform/types/schemas/__init__.py +0 -0
  103. uiform/types/schemas/enhance.py +53 -0
  104. uiform/types/schemas/evaluate.py +55 -0
  105. uiform/types/schemas/generate.py +32 -0
  106. uiform/types/schemas/layout.py +58 -0
  107. uiform/types/schemas/object.py +631 -0
  108. uiform/types/schemas/templates.py +107 -0
  109. uiform/types/secrets/__init__.py +0 -0
  110. uiform/types/secrets/external_api_keys.py +22 -0
  111. 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()