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.
Files changed (173) hide show
  1. openparser/__init__.py +54 -0
  2. openparser/_files.py +43 -0
  3. openparser/_generated/__init__.py +8 -0
  4. openparser/_generated/api/__init__.py +1 -0
  5. openparser/_generated/api/extract/__init__.py +1 -0
  6. openparser/_generated/api/extract/extract_async.py +280 -0
  7. openparser/_generated/api/extract/extract_batch.py +284 -0
  8. openparser/_generated/api/extract/extract_sync.py +315 -0
  9. openparser/_generated/api/extract/suggest_schema.py +260 -0
  10. openparser/_generated/api/files/__init__.py +1 -0
  11. openparser/_generated/api/files/create_file.py +237 -0
  12. openparser/_generated/api/files/delete_file.py +200 -0
  13. openparser/_generated/api/files/get_file.py +200 -0
  14. openparser/_generated/api/files/get_file_content.py +198 -0
  15. openparser/_generated/api/jobs/__init__.py +1 -0
  16. openparser/_generated/api/jobs/get_job.py +261 -0
  17. openparser/_generated/api/jobs/get_job_result.py +305 -0
  18. openparser/_generated/api/jobs/get_job_source.py +233 -0
  19. openparser/_generated/api/jobs/list_jobs.py +340 -0
  20. openparser/_generated/api/models/__init__.py +1 -0
  21. openparser/_generated/api/models/list_llm_models.py +288 -0
  22. openparser/_generated/api/models/list_ocr_models.py +184 -0
  23. openparser/_generated/api/parse/__init__.py +1 -0
  24. openparser/_generated/api/parse/parse_async.py +316 -0
  25. openparser/_generated/api/parse/parse_batch.py +280 -0
  26. openparser/_generated/api/parse/parse_sync.py +369 -0
  27. openparser/_generated/api/pipelines/__init__.py +1 -0
  28. openparser/_generated/api/pipelines/create_extraction_pipeline.py +242 -0
  29. openparser/_generated/api/pipelines/delete_extraction_pipeline.py +212 -0
  30. openparser/_generated/api/pipelines/get_extraction_pipeline.py +212 -0
  31. openparser/_generated/api/pipelines/list_extraction_pipelines.py +180 -0
  32. openparser/_generated/api/pipelines/update_extraction_pipeline.py +258 -0
  33. openparser/_generated/client.py +270 -0
  34. openparser/_generated/errors.py +14 -0
  35. openparser/_generated/models/__init__.py +261 -0
  36. openparser/_generated/models/batch_child_page.py +97 -0
  37. openparser/_generated/models/batch_child_summary.py +195 -0
  38. openparser/_generated/models/batch_job_accepted.py +139 -0
  39. openparser/_generated/models/batch_job_accepted_operation.py +8 -0
  40. openparser/_generated/models/batch_summary_counts.py +97 -0
  41. openparser/_generated/models/bounding_box.py +82 -0
  42. openparser/_generated/models/chunk_provenance_span.py +97 -0
  43. openparser/_generated/models/content_kind.py +10 -0
  44. openparser/_generated/models/create_extraction_pipeline_request.py +177 -0
  45. openparser/_generated/models/create_extraction_pipeline_request_grounding.py +8 -0
  46. openparser/_generated/models/create_extraction_pipeline_request_llm_options.py +84 -0
  47. openparser/_generated/models/create_extraction_pipeline_request_llm_options_reasoning_effort_type_1.py +13 -0
  48. openparser/_generated/models/create_extraction_pipeline_request_ocr_options.py +78 -0
  49. openparser/_generated/models/create_extraction_pipeline_request_schema.py +68 -0
  50. openparser/_generated/models/create_file_body.py +78 -0
  51. openparser/_generated/models/delete_extraction_pipeline_response.py +66 -0
  52. openparser/_generated/models/delete_file_response.py +57 -0
  53. openparser/_generated/models/error_body.py +106 -0
  54. openparser/_generated/models/error_body_details.py +65 -0
  55. openparser/_generated/models/error_response.py +65 -0
  56. openparser/_generated/models/extract_async_body.py +136 -0
  57. openparser/_generated/models/extract_batch_body.py +143 -0
  58. openparser/_generated/models/extract_batch_item.py +207 -0
  59. openparser/_generated/models/extract_batch_item_grounding.py +8 -0
  60. openparser/_generated/models/extract_batch_item_llm_options.py +84 -0
  61. openparser/_generated/models/extract_batch_item_llm_options_reasoning_effort_type_1.py +13 -0
  62. openparser/_generated/models/extract_batch_item_ocr_options.py +78 -0
  63. openparser/_generated/models/extract_batch_item_schema.py +65 -0
  64. openparser/_generated/models/extract_batch_request.py +99 -0
  65. openparser/_generated/models/extract_batch_request_items_item.py +201 -0
  66. openparser/_generated/models/extract_batch_request_items_item_grounding.py +8 -0
  67. openparser/_generated/models/extract_batch_request_items_item_llm_options.py +84 -0
  68. openparser/_generated/models/extract_batch_request_items_item_llm_options_reasoning_effort_type_1.py +13 -0
  69. openparser/_generated/models/extract_batch_request_items_item_ocr_options.py +78 -0
  70. openparser/_generated/models/extract_batch_request_items_item_schema.py +65 -0
  71. openparser/_generated/models/extract_batch_request_output_format.py +8 -0
  72. openparser/_generated/models/extract_request.py +226 -0
  73. openparser/_generated/models/extract_request_grounding.py +8 -0
  74. openparser/_generated/models/extract_request_llm_options.py +84 -0
  75. openparser/_generated/models/extract_request_llm_options_reasoning_effort_type_1.py +13 -0
  76. openparser/_generated/models/extract_request_ocr_options.py +78 -0
  77. openparser/_generated/models/extract_request_output_format.py +8 -0
  78. openparser/_generated/models/extract_request_schema.py +65 -0
  79. openparser/_generated/models/extract_sync_body.py +136 -0
  80. openparser/_generated/models/extraction_attempt.py +122 -0
  81. openparser/_generated/models/extraction_attempt_kind.py +8 -0
  82. openparser/_generated/models/extraction_attempt_status.py +9 -0
  83. openparser/_generated/models/extraction_chunk.py +184 -0
  84. openparser/_generated/models/extraction_citation.py +169 -0
  85. openparser/_generated/models/extraction_citation_granularity.py +8 -0
  86. openparser/_generated/models/extraction_citation_source_type.py +16 -0
  87. openparser/_generated/models/extraction_grounding_field.py +102 -0
  88. openparser/_generated/models/extraction_grounding_mode.py +8 -0
  89. openparser/_generated/models/extraction_grounding_result.py +87 -0
  90. openparser/_generated/models/extraction_pipeline.py +201 -0
  91. openparser/_generated/models/extraction_pipeline_list_response.py +76 -0
  92. openparser/_generated/models/extraction_pipeline_llm_options.py +84 -0
  93. openparser/_generated/models/extraction_pipeline_llm_options_reasoning_effort_type_0_type_1.py +13 -0
  94. openparser/_generated/models/extraction_pipeline_ocr_options.py +73 -0
  95. openparser/_generated/models/extraction_pipeline_schema.py +67 -0
  96. openparser/_generated/models/extraction_terminal_result.py +206 -0
  97. openparser/_generated/models/extraction_terminal_result_reasoning_effort_type_0.py +13 -0
  98. openparser/_generated/models/extraction_usage_totals.py +80 -0
  99. openparser/_generated/models/job.py +437 -0
  100. openparser/_generated/models/job_accepted.py +131 -0
  101. openparser/_generated/models/job_accepted_operation.py +8 -0
  102. openparser/_generated/models/job_extraction_schema.py +65 -0
  103. openparser/_generated/models/job_failure.py +98 -0
  104. openparser/_generated/models/job_failure_details.py +65 -0
  105. openparser/_generated/models/job_list_response.py +91 -0
  106. openparser/_generated/models/job_operation.py +10 -0
  107. openparser/_generated/models/job_progress.py +68 -0
  108. openparser/_generated/models/job_related_extractions_item.py +145 -0
  109. openparser/_generated/models/job_status.py +11 -0
  110. openparser/_generated/models/job_summary.py +264 -0
  111. openparser/_generated/models/json_schema_object.py +66 -0
  112. openparser/_generated/models/list_llm_models_mode.py +8 -0
  113. openparser/_generated/models/ocr_llm_model_catalog_entry.py +257 -0
  114. openparser/_generated/models/ocr_llm_model_catalog_entry_pricing.py +76 -0
  115. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0.py +134 -0
  116. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_default_effort_type_0.py +13 -0
  117. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_supported_efforts_type_0_item.py +13 -0
  118. openparser/_generated/models/ocr_llm_model_catalog_entry_recommendation.py +8 -0
  119. openparser/_generated/models/ocr_llm_models_response.py +150 -0
  120. openparser/_generated/models/ocr_llm_models_response_mode.py +8 -0
  121. openparser/_generated/models/ocr_model.py +7 -0
  122. openparser/_generated/models/ocr_model_catalog_entry.py +131 -0
  123. openparser/_generated/models/ocr_model_catalog_entry_availability.py +9 -0
  124. openparser/_generated/models/ocr_model_catalog_entry_capabilities.py +97 -0
  125. openparser/_generated/models/ocr_model_catalog_entry_capabilities_options.py +73 -0
  126. openparser/_generated/models/ocr_model_catalog_entry_option_defaults.py +73 -0
  127. openparser/_generated/models/ocr_model_catalog_entry_pricing.py +68 -0
  128. openparser/_generated/models/ocr_models_response.py +76 -0
  129. openparser/_generated/models/ocr_output_format.py +8 -0
  130. openparser/_generated/models/paddle_raw_profile.py +76 -0
  131. openparser/_generated/models/paddle_raw_profile_options.py +115 -0
  132. openparser/_generated/models/page_block.py +332 -0
  133. openparser/_generated/models/page_block_kind.py +9 -0
  134. openparser/_generated/models/page_block_polygon_type_0_item.py +65 -0
  135. openparser/_generated/models/parse_async_body.py +133 -0
  136. openparser/_generated/models/parse_batch_body.py +143 -0
  137. openparser/_generated/models/parse_batch_item.py +109 -0
  138. openparser/_generated/models/parse_batch_item_ocr_options.py +78 -0
  139. openparser/_generated/models/parse_batch_request.py +100 -0
  140. openparser/_generated/models/parse_batch_request_items_item.py +108 -0
  141. openparser/_generated/models/parse_batch_request_items_item_ocr_options.py +78 -0
  142. openparser/_generated/models/parse_batch_request_output_format.py +8 -0
  143. openparser/_generated/models/parse_request.py +112 -0
  144. openparser/_generated/models/parse_request_ocr_options.py +78 -0
  145. openparser/_generated/models/parse_request_output_format.py +8 -0
  146. openparser/_generated/models/parse_sync_body.py +133 -0
  147. openparser/_generated/models/parsed_document.py +187 -0
  148. openparser/_generated/models/public_file.py +117 -0
  149. openparser/_generated/models/raw_parse_result.py +110 -0
  150. openparser/_generated/models/raw_parse_result_result.py +65 -0
  151. openparser/_generated/models/region.py +224 -0
  152. openparser/_generated/models/region_content.py +155 -0
  153. openparser/_generated/models/region_polygon_type_0_item.py +65 -0
  154. openparser/_generated/models/region_type.py +16 -0
  155. openparser/_generated/models/suggest_schema_request.py +69 -0
  156. openparser/_generated/models/suggest_schema_response.py +74 -0
  157. openparser/_generated/models/suggest_schema_response_schema.py +66 -0
  158. openparser/_generated/models/update_extraction_pipeline_request.py +227 -0
  159. openparser/_generated/models/update_extraction_pipeline_request_grounding.py +8 -0
  160. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0.py +84 -0
  161. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1.py +13 -0
  162. openparser/_generated/models/update_extraction_pipeline_request_ocr_options_type_0.py +78 -0
  163. openparser/_generated/models/update_extraction_pipeline_request_schema.py +67 -0
  164. openparser/_generated/py.typed +1 -0
  165. openparser/_generated/types.py +53 -0
  166. openparser/_telemetry.py +34 -0
  167. openparser/client.py +541 -0
  168. openparser/errors.py +172 -0
  169. openparser/py.typed +0 -0
  170. openparser_sdk-0.0.1.dist-info/METADATA +178 -0
  171. openparser_sdk-0.0.1.dist-info/RECORD +173 -0
  172. openparser_sdk-0.0.1.dist-info/WHEEL +4 -0
  173. 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,9 @@
1
+ from enum import Enum
2
+
3
+ class PageBlockKind(str, Enum):
4
+ FIGURE = "figure"
5
+ TABLE = "table"
6
+ TEXT = "text"
7
+
8
+ def __str__(self) -> str:
9
+ return str(self.value)
@@ -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