openparser-sdk 0.0.1__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.
- openparser/__init__.py +54 -0
- openparser/_files.py +43 -0
- openparser/_generated/__init__.py +8 -0
- openparser/_generated/api/__init__.py +1 -0
- openparser/_generated/api/extract/__init__.py +1 -0
- openparser/_generated/api/extract/extract_async.py +280 -0
- openparser/_generated/api/extract/extract_batch.py +284 -0
- openparser/_generated/api/extract/extract_sync.py +315 -0
- openparser/_generated/api/extract/suggest_schema.py +260 -0
- openparser/_generated/api/files/__init__.py +1 -0
- openparser/_generated/api/files/create_file.py +237 -0
- openparser/_generated/api/files/delete_file.py +200 -0
- openparser/_generated/api/files/get_file.py +200 -0
- openparser/_generated/api/files/get_file_content.py +198 -0
- openparser/_generated/api/jobs/__init__.py +1 -0
- openparser/_generated/api/jobs/get_job.py +261 -0
- openparser/_generated/api/jobs/get_job_result.py +305 -0
- openparser/_generated/api/jobs/get_job_source.py +233 -0
- openparser/_generated/api/jobs/list_jobs.py +340 -0
- openparser/_generated/api/models/__init__.py +1 -0
- openparser/_generated/api/models/list_llm_models.py +288 -0
- openparser/_generated/api/models/list_ocr_models.py +184 -0
- openparser/_generated/api/parse/__init__.py +1 -0
- openparser/_generated/api/parse/parse_async.py +316 -0
- openparser/_generated/api/parse/parse_batch.py +280 -0
- openparser/_generated/api/parse/parse_sync.py +369 -0
- openparser/_generated/api/pipelines/__init__.py +1 -0
- openparser/_generated/api/pipelines/create_extraction_pipeline.py +242 -0
- openparser/_generated/api/pipelines/delete_extraction_pipeline.py +212 -0
- openparser/_generated/api/pipelines/get_extraction_pipeline.py +212 -0
- openparser/_generated/api/pipelines/list_extraction_pipelines.py +180 -0
- openparser/_generated/api/pipelines/update_extraction_pipeline.py +258 -0
- openparser/_generated/client.py +270 -0
- openparser/_generated/errors.py +14 -0
- openparser/_generated/models/__init__.py +261 -0
- openparser/_generated/models/batch_child_page.py +97 -0
- openparser/_generated/models/batch_child_summary.py +195 -0
- openparser/_generated/models/batch_job_accepted.py +139 -0
- openparser/_generated/models/batch_job_accepted_operation.py +8 -0
- openparser/_generated/models/batch_summary_counts.py +97 -0
- openparser/_generated/models/bounding_box.py +82 -0
- openparser/_generated/models/chunk_provenance_span.py +97 -0
- openparser/_generated/models/content_kind.py +10 -0
- openparser/_generated/models/create_extraction_pipeline_request.py +177 -0
- openparser/_generated/models/create_extraction_pipeline_request_grounding.py +8 -0
- openparser/_generated/models/create_extraction_pipeline_request_llm_options.py +84 -0
- openparser/_generated/models/create_extraction_pipeline_request_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/create_extraction_pipeline_request_ocr_options.py +78 -0
- openparser/_generated/models/create_extraction_pipeline_request_schema.py +68 -0
- openparser/_generated/models/create_file_body.py +78 -0
- openparser/_generated/models/delete_extraction_pipeline_response.py +66 -0
- openparser/_generated/models/delete_file_response.py +57 -0
- openparser/_generated/models/error_body.py +106 -0
- openparser/_generated/models/error_body_details.py +65 -0
- openparser/_generated/models/error_response.py +65 -0
- openparser/_generated/models/extract_async_body.py +136 -0
- openparser/_generated/models/extract_batch_body.py +143 -0
- openparser/_generated/models/extract_batch_item.py +207 -0
- openparser/_generated/models/extract_batch_item_grounding.py +8 -0
- openparser/_generated/models/extract_batch_item_llm_options.py +84 -0
- openparser/_generated/models/extract_batch_item_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_batch_item_ocr_options.py +78 -0
- openparser/_generated/models/extract_batch_item_schema.py +65 -0
- openparser/_generated/models/extract_batch_request.py +99 -0
- openparser/_generated/models/extract_batch_request_items_item.py +201 -0
- openparser/_generated/models/extract_batch_request_items_item_grounding.py +8 -0
- openparser/_generated/models/extract_batch_request_items_item_llm_options.py +84 -0
- openparser/_generated/models/extract_batch_request_items_item_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_batch_request_items_item_ocr_options.py +78 -0
- openparser/_generated/models/extract_batch_request_items_item_schema.py +65 -0
- openparser/_generated/models/extract_batch_request_output_format.py +8 -0
- openparser/_generated/models/extract_request.py +226 -0
- openparser/_generated/models/extract_request_grounding.py +8 -0
- openparser/_generated/models/extract_request_llm_options.py +84 -0
- openparser/_generated/models/extract_request_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_request_ocr_options.py +78 -0
- openparser/_generated/models/extract_request_output_format.py +8 -0
- openparser/_generated/models/extract_request_schema.py +65 -0
- openparser/_generated/models/extract_sync_body.py +136 -0
- openparser/_generated/models/extraction_attempt.py +122 -0
- openparser/_generated/models/extraction_attempt_kind.py +8 -0
- openparser/_generated/models/extraction_attempt_status.py +9 -0
- openparser/_generated/models/extraction_chunk.py +184 -0
- openparser/_generated/models/extraction_citation.py +169 -0
- openparser/_generated/models/extraction_citation_granularity.py +8 -0
- openparser/_generated/models/extraction_citation_source_type.py +16 -0
- openparser/_generated/models/extraction_grounding_field.py +102 -0
- openparser/_generated/models/extraction_grounding_mode.py +8 -0
- openparser/_generated/models/extraction_grounding_result.py +87 -0
- openparser/_generated/models/extraction_pipeline.py +201 -0
- openparser/_generated/models/extraction_pipeline_list_response.py +76 -0
- openparser/_generated/models/extraction_pipeline_llm_options.py +84 -0
- openparser/_generated/models/extraction_pipeline_llm_options_reasoning_effort_type_0_type_1.py +13 -0
- openparser/_generated/models/extraction_pipeline_ocr_options.py +73 -0
- openparser/_generated/models/extraction_pipeline_schema.py +67 -0
- openparser/_generated/models/extraction_terminal_result.py +206 -0
- openparser/_generated/models/extraction_terminal_result_reasoning_effort_type_0.py +13 -0
- openparser/_generated/models/extraction_usage_totals.py +80 -0
- openparser/_generated/models/job.py +437 -0
- openparser/_generated/models/job_accepted.py +131 -0
- openparser/_generated/models/job_accepted_operation.py +8 -0
- openparser/_generated/models/job_extraction_schema.py +65 -0
- openparser/_generated/models/job_failure.py +98 -0
- openparser/_generated/models/job_failure_details.py +65 -0
- openparser/_generated/models/job_list_response.py +91 -0
- openparser/_generated/models/job_operation.py +10 -0
- openparser/_generated/models/job_progress.py +68 -0
- openparser/_generated/models/job_related_extractions_item.py +145 -0
- openparser/_generated/models/job_status.py +11 -0
- openparser/_generated/models/job_summary.py +264 -0
- openparser/_generated/models/json_schema_object.py +66 -0
- openparser/_generated/models/list_llm_models_mode.py +8 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry.py +257 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_pricing.py +76 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0.py +134 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_default_effort_type_0.py +13 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_supported_efforts_type_0_item.py +13 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_recommendation.py +8 -0
- openparser/_generated/models/ocr_llm_models_response.py +150 -0
- openparser/_generated/models/ocr_llm_models_response_mode.py +8 -0
- openparser/_generated/models/ocr_model.py +7 -0
- openparser/_generated/models/ocr_model_catalog_entry.py +131 -0
- openparser/_generated/models/ocr_model_catalog_entry_availability.py +9 -0
- openparser/_generated/models/ocr_model_catalog_entry_capabilities.py +97 -0
- openparser/_generated/models/ocr_model_catalog_entry_capabilities_options.py +73 -0
- openparser/_generated/models/ocr_model_catalog_entry_option_defaults.py +73 -0
- openparser/_generated/models/ocr_model_catalog_entry_pricing.py +68 -0
- openparser/_generated/models/ocr_models_response.py +76 -0
- openparser/_generated/models/ocr_output_format.py +8 -0
- openparser/_generated/models/paddle_raw_profile.py +76 -0
- openparser/_generated/models/paddle_raw_profile_options.py +115 -0
- openparser/_generated/models/page_block.py +332 -0
- openparser/_generated/models/page_block_kind.py +9 -0
- openparser/_generated/models/page_block_polygon_type_0_item.py +65 -0
- openparser/_generated/models/parse_async_body.py +133 -0
- openparser/_generated/models/parse_batch_body.py +143 -0
- openparser/_generated/models/parse_batch_item.py +109 -0
- openparser/_generated/models/parse_batch_item_ocr_options.py +78 -0
- openparser/_generated/models/parse_batch_request.py +100 -0
- openparser/_generated/models/parse_batch_request_items_item.py +108 -0
- openparser/_generated/models/parse_batch_request_items_item_ocr_options.py +78 -0
- openparser/_generated/models/parse_batch_request_output_format.py +8 -0
- openparser/_generated/models/parse_request.py +112 -0
- openparser/_generated/models/parse_request_ocr_options.py +78 -0
- openparser/_generated/models/parse_request_output_format.py +8 -0
- openparser/_generated/models/parse_sync_body.py +133 -0
- openparser/_generated/models/parsed_document.py +187 -0
- openparser/_generated/models/public_file.py +117 -0
- openparser/_generated/models/raw_parse_result.py +110 -0
- openparser/_generated/models/raw_parse_result_result.py +65 -0
- openparser/_generated/models/region.py +224 -0
- openparser/_generated/models/region_content.py +155 -0
- openparser/_generated/models/region_polygon_type_0_item.py +65 -0
- openparser/_generated/models/region_type.py +16 -0
- openparser/_generated/models/suggest_schema_request.py +69 -0
- openparser/_generated/models/suggest_schema_response.py +74 -0
- openparser/_generated/models/suggest_schema_response_schema.py +66 -0
- openparser/_generated/models/update_extraction_pipeline_request.py +227 -0
- openparser/_generated/models/update_extraction_pipeline_request_grounding.py +8 -0
- openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0.py +84 -0
- openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/update_extraction_pipeline_request_ocr_options_type_0.py +78 -0
- openparser/_generated/models/update_extraction_pipeline_request_schema.py +67 -0
- openparser/_generated/py.typed +1 -0
- openparser/_generated/types.py +53 -0
- openparser/_telemetry.py +34 -0
- openparser/client.py +541 -0
- openparser/errors.py +172 -0
- openparser/py.typed +0 -0
- openparser_sdk-0.0.1.dist-info/METADATA +178 -0
- openparser_sdk-0.0.1.dist-info/RECORD +173 -0
- openparser_sdk-0.0.1.dist-info/WHEEL +4 -0
- openparser_sdk-0.0.1.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..models.page_block_kind import PageBlockKind
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from ..models.bounding_box import BoundingBox
|
|
17
|
+
from ..models.page_block_polygon_type_0_item import PageBlockPolygonType0Item
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
T = TypeVar("T", bound="PageBlock")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@_attrs_define
|
|
28
|
+
class PageBlock:
|
|
29
|
+
""" Primary stable parse interface: one ordered page block in reading order. Optional core
|
|
30
|
+
fields are serialized as JSON `null` when absent.
|
|
31
|
+
|
|
32
|
+
Attributes:
|
|
33
|
+
index (int): Zero-based reading-order index, contiguous from 0.
|
|
34
|
+
page_number (int):
|
|
35
|
+
kind (PageBlockKind):
|
|
36
|
+
text (None | str | Unset):
|
|
37
|
+
table_html (None | str | Unset):
|
|
38
|
+
figure_uri (None | str | Unset):
|
|
39
|
+
bbox (BoundingBox | None | Unset):
|
|
40
|
+
polygon (list[PageBlockPolygonType0Item] | None | Unset):
|
|
41
|
+
confidence (float | None | Unset):
|
|
42
|
+
source_label (None | str | Unset):
|
|
43
|
+
region_id (None | str | Unset):
|
|
44
|
+
coordinate_width (int | None | Unset):
|
|
45
|
+
coordinate_height (int | None | Unset):
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
index: int
|
|
49
|
+
page_number: int
|
|
50
|
+
kind: PageBlockKind
|
|
51
|
+
text: None | str | Unset = UNSET
|
|
52
|
+
table_html: None | str | Unset = UNSET
|
|
53
|
+
figure_uri: None | str | Unset = UNSET
|
|
54
|
+
bbox: BoundingBox | None | Unset = UNSET
|
|
55
|
+
polygon: list[PageBlockPolygonType0Item] | None | Unset = UNSET
|
|
56
|
+
confidence: float | None | Unset = UNSET
|
|
57
|
+
source_label: None | str | Unset = UNSET
|
|
58
|
+
region_id: None | str | Unset = UNSET
|
|
59
|
+
coordinate_width: int | None | Unset = UNSET
|
|
60
|
+
coordinate_height: int | None | Unset = UNSET
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def to_dict(self) -> dict[str, Any]:
|
|
67
|
+
from ..models.bounding_box import BoundingBox
|
|
68
|
+
from ..models.page_block_polygon_type_0_item import PageBlockPolygonType0Item
|
|
69
|
+
index = self.index
|
|
70
|
+
|
|
71
|
+
page_number = self.page_number
|
|
72
|
+
|
|
73
|
+
kind = self.kind.value
|
|
74
|
+
|
|
75
|
+
text: None | str | Unset
|
|
76
|
+
if isinstance(self.text, Unset):
|
|
77
|
+
text = UNSET
|
|
78
|
+
else:
|
|
79
|
+
text = self.text
|
|
80
|
+
|
|
81
|
+
table_html: None | str | Unset
|
|
82
|
+
if isinstance(self.table_html, Unset):
|
|
83
|
+
table_html = UNSET
|
|
84
|
+
else:
|
|
85
|
+
table_html = self.table_html
|
|
86
|
+
|
|
87
|
+
figure_uri: None | str | Unset
|
|
88
|
+
if isinstance(self.figure_uri, Unset):
|
|
89
|
+
figure_uri = UNSET
|
|
90
|
+
else:
|
|
91
|
+
figure_uri = self.figure_uri
|
|
92
|
+
|
|
93
|
+
bbox: dict[str, Any] | None | Unset
|
|
94
|
+
if isinstance(self.bbox, Unset):
|
|
95
|
+
bbox = UNSET
|
|
96
|
+
elif isinstance(self.bbox, BoundingBox):
|
|
97
|
+
bbox = self.bbox.to_dict()
|
|
98
|
+
else:
|
|
99
|
+
bbox = self.bbox
|
|
100
|
+
|
|
101
|
+
polygon: list[dict[str, Any]] | None | Unset
|
|
102
|
+
if isinstance(self.polygon, Unset):
|
|
103
|
+
polygon = UNSET
|
|
104
|
+
elif isinstance(self.polygon, list):
|
|
105
|
+
polygon = []
|
|
106
|
+
for polygon_type_0_item_data in self.polygon:
|
|
107
|
+
polygon_type_0_item = polygon_type_0_item_data.to_dict()
|
|
108
|
+
polygon.append(polygon_type_0_item)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
else:
|
|
112
|
+
polygon = self.polygon
|
|
113
|
+
|
|
114
|
+
confidence: float | None | Unset
|
|
115
|
+
if isinstance(self.confidence, Unset):
|
|
116
|
+
confidence = UNSET
|
|
117
|
+
else:
|
|
118
|
+
confidence = self.confidence
|
|
119
|
+
|
|
120
|
+
source_label: None | str | Unset
|
|
121
|
+
if isinstance(self.source_label, Unset):
|
|
122
|
+
source_label = UNSET
|
|
123
|
+
else:
|
|
124
|
+
source_label = self.source_label
|
|
125
|
+
|
|
126
|
+
region_id: None | str | Unset
|
|
127
|
+
if isinstance(self.region_id, Unset):
|
|
128
|
+
region_id = UNSET
|
|
129
|
+
else:
|
|
130
|
+
region_id = self.region_id
|
|
131
|
+
|
|
132
|
+
coordinate_width: int | None | Unset
|
|
133
|
+
if isinstance(self.coordinate_width, Unset):
|
|
134
|
+
coordinate_width = UNSET
|
|
135
|
+
else:
|
|
136
|
+
coordinate_width = self.coordinate_width
|
|
137
|
+
|
|
138
|
+
coordinate_height: int | None | Unset
|
|
139
|
+
if isinstance(self.coordinate_height, Unset):
|
|
140
|
+
coordinate_height = UNSET
|
|
141
|
+
else:
|
|
142
|
+
coordinate_height = self.coordinate_height
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
field_dict: dict[str, Any] = {}
|
|
146
|
+
|
|
147
|
+
field_dict.update({
|
|
148
|
+
"index": index,
|
|
149
|
+
"page_number": page_number,
|
|
150
|
+
"kind": kind,
|
|
151
|
+
})
|
|
152
|
+
if text is not UNSET:
|
|
153
|
+
field_dict["text"] = text
|
|
154
|
+
if table_html is not UNSET:
|
|
155
|
+
field_dict["table_html"] = table_html
|
|
156
|
+
if figure_uri is not UNSET:
|
|
157
|
+
field_dict["figure_uri"] = figure_uri
|
|
158
|
+
if bbox is not UNSET:
|
|
159
|
+
field_dict["bbox"] = bbox
|
|
160
|
+
if polygon is not UNSET:
|
|
161
|
+
field_dict["polygon"] = polygon
|
|
162
|
+
if confidence is not UNSET:
|
|
163
|
+
field_dict["confidence"] = confidence
|
|
164
|
+
if source_label is not UNSET:
|
|
165
|
+
field_dict["source_label"] = source_label
|
|
166
|
+
if region_id is not UNSET:
|
|
167
|
+
field_dict["region_id"] = region_id
|
|
168
|
+
if coordinate_width is not UNSET:
|
|
169
|
+
field_dict["coordinate_width"] = coordinate_width
|
|
170
|
+
if coordinate_height is not UNSET:
|
|
171
|
+
field_dict["coordinate_height"] = coordinate_height
|
|
172
|
+
|
|
173
|
+
return field_dict
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
@classmethod
|
|
178
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
179
|
+
from ..models.bounding_box import BoundingBox
|
|
180
|
+
from ..models.page_block_polygon_type_0_item import PageBlockPolygonType0Item
|
|
181
|
+
d = dict(src_dict)
|
|
182
|
+
index = d.pop("index")
|
|
183
|
+
|
|
184
|
+
page_number = d.pop("page_number")
|
|
185
|
+
|
|
186
|
+
kind = PageBlockKind(d.pop("kind"))
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def _parse_text(data: object) -> None | str | Unset:
|
|
192
|
+
if data is None:
|
|
193
|
+
return data
|
|
194
|
+
if isinstance(data, Unset):
|
|
195
|
+
return data
|
|
196
|
+
return cast(None | str | Unset, data)
|
|
197
|
+
|
|
198
|
+
text = _parse_text(d.pop("text", UNSET))
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def _parse_table_html(data: object) -> None | str | Unset:
|
|
202
|
+
if data is None:
|
|
203
|
+
return data
|
|
204
|
+
if isinstance(data, Unset):
|
|
205
|
+
return data
|
|
206
|
+
return cast(None | str | Unset, data)
|
|
207
|
+
|
|
208
|
+
table_html = _parse_table_html(d.pop("table_html", UNSET))
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def _parse_figure_uri(data: object) -> None | str | Unset:
|
|
212
|
+
if data is None:
|
|
213
|
+
return data
|
|
214
|
+
if isinstance(data, Unset):
|
|
215
|
+
return data
|
|
216
|
+
return cast(None | str | Unset, data)
|
|
217
|
+
|
|
218
|
+
figure_uri = _parse_figure_uri(d.pop("figure_uri", UNSET))
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def _parse_bbox(data: object) -> BoundingBox | None | Unset:
|
|
222
|
+
if data is None:
|
|
223
|
+
return data
|
|
224
|
+
if isinstance(data, Unset):
|
|
225
|
+
return data
|
|
226
|
+
try:
|
|
227
|
+
if not isinstance(data, dict):
|
|
228
|
+
raise TypeError()
|
|
229
|
+
bbox_type_0 = BoundingBox.from_dict(data)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
return bbox_type_0
|
|
234
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
235
|
+
pass
|
|
236
|
+
return cast(BoundingBox | None | Unset, data)
|
|
237
|
+
|
|
238
|
+
bbox = _parse_bbox(d.pop("bbox", UNSET))
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _parse_polygon(data: object) -> list[PageBlockPolygonType0Item] | None | Unset:
|
|
242
|
+
if data is None:
|
|
243
|
+
return data
|
|
244
|
+
if isinstance(data, Unset):
|
|
245
|
+
return data
|
|
246
|
+
try:
|
|
247
|
+
if not isinstance(data, list):
|
|
248
|
+
raise TypeError()
|
|
249
|
+
polygon_type_0 = []
|
|
250
|
+
_polygon_type_0 = data
|
|
251
|
+
for polygon_type_0_item_data in (_polygon_type_0):
|
|
252
|
+
polygon_type_0_item = PageBlockPolygonType0Item.from_dict(polygon_type_0_item_data)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
polygon_type_0.append(polygon_type_0_item)
|
|
257
|
+
|
|
258
|
+
return polygon_type_0
|
|
259
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
260
|
+
pass
|
|
261
|
+
return cast(list[PageBlockPolygonType0Item] | None | Unset, data)
|
|
262
|
+
|
|
263
|
+
polygon = _parse_polygon(d.pop("polygon", UNSET))
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def _parse_confidence(data: object) -> float | None | Unset:
|
|
267
|
+
if data is None:
|
|
268
|
+
return data
|
|
269
|
+
if isinstance(data, Unset):
|
|
270
|
+
return data
|
|
271
|
+
return cast(float | None | Unset, data)
|
|
272
|
+
|
|
273
|
+
confidence = _parse_confidence(d.pop("confidence", UNSET))
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def _parse_source_label(data: object) -> None | str | Unset:
|
|
277
|
+
if data is None:
|
|
278
|
+
return data
|
|
279
|
+
if isinstance(data, Unset):
|
|
280
|
+
return data
|
|
281
|
+
return cast(None | str | Unset, data)
|
|
282
|
+
|
|
283
|
+
source_label = _parse_source_label(d.pop("source_label", UNSET))
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
def _parse_region_id(data: object) -> None | str | Unset:
|
|
287
|
+
if data is None:
|
|
288
|
+
return data
|
|
289
|
+
if isinstance(data, Unset):
|
|
290
|
+
return data
|
|
291
|
+
return cast(None | str | Unset, data)
|
|
292
|
+
|
|
293
|
+
region_id = _parse_region_id(d.pop("region_id", UNSET))
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
def _parse_coordinate_width(data: object) -> int | None | Unset:
|
|
297
|
+
if data is None:
|
|
298
|
+
return data
|
|
299
|
+
if isinstance(data, Unset):
|
|
300
|
+
return data
|
|
301
|
+
return cast(int | None | Unset, data)
|
|
302
|
+
|
|
303
|
+
coordinate_width = _parse_coordinate_width(d.pop("coordinate_width", UNSET))
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
def _parse_coordinate_height(data: object) -> int | None | Unset:
|
|
307
|
+
if data is None:
|
|
308
|
+
return data
|
|
309
|
+
if isinstance(data, Unset):
|
|
310
|
+
return data
|
|
311
|
+
return cast(int | None | Unset, data)
|
|
312
|
+
|
|
313
|
+
coordinate_height = _parse_coordinate_height(d.pop("coordinate_height", UNSET))
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
page_block = cls(
|
|
317
|
+
index=index,
|
|
318
|
+
page_number=page_number,
|
|
319
|
+
kind=kind,
|
|
320
|
+
text=text,
|
|
321
|
+
table_html=table_html,
|
|
322
|
+
figure_uri=figure_uri,
|
|
323
|
+
bbox=bbox,
|
|
324
|
+
polygon=polygon,
|
|
325
|
+
confidence=confidence,
|
|
326
|
+
source_label=source_label,
|
|
327
|
+
region_id=region_id,
|
|
328
|
+
coordinate_width=coordinate_width,
|
|
329
|
+
coordinate_height=coordinate_height,
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
return page_block
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="PageBlockPolygonType0Item")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class PageBlockPolygonType0Item:
|
|
23
|
+
"""
|
|
24
|
+
Attributes:
|
|
25
|
+
x (float):
|
|
26
|
+
y (float):
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
x: float
|
|
30
|
+
y: float
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def to_dict(self) -> dict[str, Any]:
|
|
37
|
+
x = self.x
|
|
38
|
+
|
|
39
|
+
y = self.y
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
field_dict: dict[str, Any] = {}
|
|
43
|
+
|
|
44
|
+
field_dict.update({
|
|
45
|
+
"x": x,
|
|
46
|
+
"y": y,
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
return field_dict
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
55
|
+
d = dict(src_dict)
|
|
56
|
+
x = d.pop("x")
|
|
57
|
+
|
|
58
|
+
y = d.pop("y")
|
|
59
|
+
|
|
60
|
+
page_block_polygon_type_0_item = cls(
|
|
61
|
+
x=x,
|
|
62
|
+
y=y,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return page_block_polygon_type_0_item
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
import json
|
|
9
|
+
from .. import types
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
from ..types import File, FileTypes
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
from io import BytesIO
|
|
16
|
+
from typing import cast
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.parse_request import ParseRequest
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
T = TypeVar("T", bound="ParseAsyncBody")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@_attrs_define
|
|
30
|
+
class ParseAsyncBody:
|
|
31
|
+
"""
|
|
32
|
+
Attributes:
|
|
33
|
+
request (ParseRequest):
|
|
34
|
+
file (File | Unset): Source document bytes (PDF, PNG, or JPEG). Required unless `request.file_id`
|
|
35
|
+
references an existing Eigenpal reusable file.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
request: ParseRequest
|
|
39
|
+
file: File | Unset = UNSET
|
|
40
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def to_dict(self) -> dict[str, Any]:
|
|
47
|
+
from ..models.parse_request import ParseRequest
|
|
48
|
+
request = self.request.to_dict()
|
|
49
|
+
|
|
50
|
+
file: FileTypes | Unset = UNSET
|
|
51
|
+
if not isinstance(self.file, Unset):
|
|
52
|
+
file = self.file.to_tuple()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
field_dict: dict[str, Any] = {}
|
|
57
|
+
field_dict.update(self.additional_properties)
|
|
58
|
+
field_dict.update({
|
|
59
|
+
"request": request,
|
|
60
|
+
})
|
|
61
|
+
if file is not UNSET:
|
|
62
|
+
field_dict["file"] = file
|
|
63
|
+
|
|
64
|
+
return field_dict
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def to_multipart(self) -> types.RequestFiles:
|
|
68
|
+
from ..models.parse_request import ParseRequest
|
|
69
|
+
files: types.RequestFiles = []
|
|
70
|
+
|
|
71
|
+
files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if not isinstance(self.file, Unset):
|
|
76
|
+
files.append(("file", self.file.to_tuple()))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
for prop_name, prop in self.additional_properties.items():
|
|
82
|
+
files.append((prop_name, (None, str(prop).encode(), "text/plain")))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
return files
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
91
|
+
from ..models.parse_request import ParseRequest
|
|
92
|
+
d = dict(src_dict)
|
|
93
|
+
request = ParseRequest.from_dict(d.pop("request"))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
_file = d.pop("file", UNSET)
|
|
99
|
+
file: File | Unset
|
|
100
|
+
if isinstance(_file, Unset):
|
|
101
|
+
file = UNSET
|
|
102
|
+
else:
|
|
103
|
+
file = File(
|
|
104
|
+
payload = BytesIO(_file)
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
parse_async_body = cls(
|
|
111
|
+
request=request,
|
|
112
|
+
file=file,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
parse_async_body.additional_properties = d
|
|
117
|
+
return parse_async_body
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def additional_keys(self) -> list[str]:
|
|
121
|
+
return list(self.additional_properties.keys())
|
|
122
|
+
|
|
123
|
+
def __getitem__(self, key: str) -> Any:
|
|
124
|
+
return self.additional_properties[key]
|
|
125
|
+
|
|
126
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
127
|
+
self.additional_properties[key] = value
|
|
128
|
+
|
|
129
|
+
def __delitem__(self, key: str) -> None:
|
|
130
|
+
del self.additional_properties[key]
|
|
131
|
+
|
|
132
|
+
def __contains__(self, key: str) -> bool:
|
|
133
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
import json
|
|
9
|
+
from .. import types
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
from ..types import File, FileTypes
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
from io import BytesIO
|
|
16
|
+
from typing import cast
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.parse_batch_request import ParseBatchRequest
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
T = TypeVar("T", bound="ParseBatchBody")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@_attrs_define
|
|
30
|
+
class ParseBatchBody:
|
|
31
|
+
"""
|
|
32
|
+
Attributes:
|
|
33
|
+
request (ParseBatchRequest):
|
|
34
|
+
files (list[File] | Unset): Ordered uploaded files referenced by `file_index` in the batch request. Each file
|
|
35
|
+
is limited to 50 MiB and total multipart body content is limited to 100 MiB.
|
|
36
|
+
Omit when every batch item supplies `file_id` instead.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
request: ParseBatchRequest
|
|
40
|
+
files: list[File] | Unset = UNSET
|
|
41
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
from ..models.parse_batch_request import ParseBatchRequest
|
|
49
|
+
request = self.request.to_dict()
|
|
50
|
+
|
|
51
|
+
files: list[FileTypes] | Unset = UNSET
|
|
52
|
+
if not isinstance(self.files, Unset):
|
|
53
|
+
files = []
|
|
54
|
+
for files_item_data in self.files:
|
|
55
|
+
files_item = files_item_data.to_tuple()
|
|
56
|
+
|
|
57
|
+
files.append(files_item)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
field_dict: dict[str, Any] = {}
|
|
63
|
+
field_dict.update(self.additional_properties)
|
|
64
|
+
field_dict.update({
|
|
65
|
+
"request": request,
|
|
66
|
+
})
|
|
67
|
+
if files is not UNSET:
|
|
68
|
+
field_dict["files"] = files
|
|
69
|
+
|
|
70
|
+
return field_dict
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def to_multipart(self) -> types.RequestFiles:
|
|
74
|
+
from ..models.parse_batch_request import ParseBatchRequest
|
|
75
|
+
files: types.RequestFiles = []
|
|
76
|
+
|
|
77
|
+
files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
if not isinstance(self.files, Unset):
|
|
82
|
+
for files_item_element in self.files:
|
|
83
|
+
files.append(("files", files_item_element.to_tuple()))
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
for prop_name, prop in self.additional_properties.items():
|
|
90
|
+
files.append((prop_name, (None, str(prop).encode(), "text/plain")))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
return files
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@classmethod
|
|
98
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
99
|
+
from ..models.parse_batch_request import ParseBatchRequest
|
|
100
|
+
d = dict(src_dict)
|
|
101
|
+
request = ParseBatchRequest.from_dict(d.pop("request"))
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
_files = d.pop("files", UNSET)
|
|
107
|
+
files: list[File] | Unset = UNSET
|
|
108
|
+
if _files is not UNSET:
|
|
109
|
+
files = []
|
|
110
|
+
for files_item_data in _files:
|
|
111
|
+
files_item = File(
|
|
112
|
+
payload = BytesIO(files_item_data)
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
files.append(files_item)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
parse_batch_body = cls(
|
|
121
|
+
request=request,
|
|
122
|
+
files=files,
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
parse_batch_body.additional_properties = d
|
|
127
|
+
return parse_batch_body
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def additional_keys(self) -> list[str]:
|
|
131
|
+
return list(self.additional_properties.keys())
|
|
132
|
+
|
|
133
|
+
def __getitem__(self, key: str) -> Any:
|
|
134
|
+
return self.additional_properties[key]
|
|
135
|
+
|
|
136
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
137
|
+
self.additional_properties[key] = value
|
|
138
|
+
|
|
139
|
+
def __delitem__(self, key: str) -> None:
|
|
140
|
+
del self.additional_properties[key]
|
|
141
|
+
|
|
142
|
+
def __contains__(self, key: str) -> bool:
|
|
143
|
+
return key in self.additional_properties
|