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,226 @@
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.extract_request_grounding import ExtractRequestGrounding
12
+ from ..models.extract_request_output_format import ExtractRequestOutputFormat
13
+ from ..types import UNSET, Unset
14
+ from typing import cast
15
+
16
+ if TYPE_CHECKING:
17
+ from ..models.extract_request_llm_options import ExtractRequestLlmOptions
18
+ from ..models.extract_request_ocr_options import ExtractRequestOcrOptions
19
+ from ..models.extract_request_schema import ExtractRequestSchema
20
+
21
+
22
+
23
+
24
+
25
+ T = TypeVar("T", bound="ExtractRequest")
26
+
27
+
28
+
29
+ @_attrs_define
30
+ class ExtractRequest:
31
+ """ Single extract config. Provide either `pipeline_id` or inline extraction config.
32
+ The source is exactly one of multipart file bytes, `file_id`, or tenant-owned succeeded
33
+ `parse_job_id`. Parse reuse is single-extract-only, forbids `ocr_model` / `ocr_options`,
34
+ does not run OCR, and adds no page charge. `parse_job_id` is part of idempotency identity.
35
+
36
+ Attributes:
37
+ pipeline_id (str | Unset): Saved extraction pipeline id (`oppl_…`). Inline extraction fields are forbidden.
38
+ Admission records pipeline id/version provenance and snapshots the effective extraction
39
+ configuration; the worker never re-reads the pipeline. With `parse_job_id`, source-parse
40
+ provenance is recorded separately and the pipeline's OCR settings are not executed.
41
+ ocr_model (str | Unset):
42
+ ocr_options (ExtractRequestOcrOptions | Unset):
43
+ llm_model (str | Unset):
44
+ llm_options (ExtractRequestLlmOptions | Unset):
45
+ schema (ExtractRequestSchema | Unset):
46
+ repair_attempts (int | Unset):
47
+ grounding (ExtractRequestGrounding | Unset): Optional field grounding mode. Defaults to `none` for inline
48
+ requests. Changing
49
+ grounding with the same Idempotency-Key returns `409 idempotency_conflict`.
50
+ Unsupported schemas return `422 grounding_unsupported_schema`.
51
+ file_id (str | Unset):
52
+ parse_job_id (str | Unset): Tenant-owned succeeded `parse` job (`opj_…`) whose canonical `openparser@1`
53
+ ParsedDocument
54
+ is reused. Mutually exclusive with multipart bytes and `file_id`; forbidden in batch.
55
+ output_format (ExtractRequestOutputFormat | Unset): Default: ExtractRequestOutputFormat.OPENPARSER1.
56
+ """
57
+
58
+ pipeline_id: str | Unset = UNSET
59
+ ocr_model: str | Unset = UNSET
60
+ ocr_options: ExtractRequestOcrOptions | Unset = UNSET
61
+ llm_model: str | Unset = UNSET
62
+ llm_options: ExtractRequestLlmOptions | Unset = UNSET
63
+ schema: ExtractRequestSchema | Unset = UNSET
64
+ repair_attempts: int | Unset = UNSET
65
+ grounding: ExtractRequestGrounding | Unset = UNSET
66
+ file_id: str | Unset = UNSET
67
+ parse_job_id: str | Unset = UNSET
68
+ output_format: ExtractRequestOutputFormat | Unset = ExtractRequestOutputFormat.OPENPARSER1
69
+
70
+
71
+
72
+
73
+
74
+ def to_dict(self) -> dict[str, Any]:
75
+ from ..models.extract_request_llm_options import ExtractRequestLlmOptions
76
+ from ..models.extract_request_ocr_options import ExtractRequestOcrOptions
77
+ from ..models.extract_request_schema import ExtractRequestSchema
78
+ pipeline_id = self.pipeline_id
79
+
80
+ ocr_model = self.ocr_model
81
+
82
+ ocr_options: dict[str, Any] | Unset = UNSET
83
+ if not isinstance(self.ocr_options, Unset):
84
+ ocr_options = self.ocr_options.to_dict()
85
+
86
+ llm_model = self.llm_model
87
+
88
+ llm_options: dict[str, Any] | Unset = UNSET
89
+ if not isinstance(self.llm_options, Unset):
90
+ llm_options = self.llm_options.to_dict()
91
+
92
+ schema: dict[str, Any] | Unset = UNSET
93
+ if not isinstance(self.schema, Unset):
94
+ schema = self.schema.to_dict()
95
+
96
+ repair_attempts = self.repair_attempts
97
+
98
+ grounding: str | Unset = UNSET
99
+ if not isinstance(self.grounding, Unset):
100
+ grounding = self.grounding.value
101
+
102
+
103
+ file_id = self.file_id
104
+
105
+ parse_job_id = self.parse_job_id
106
+
107
+ output_format: str | Unset = UNSET
108
+ if not isinstance(self.output_format, Unset):
109
+ output_format = self.output_format.value
110
+
111
+
112
+
113
+ field_dict: dict[str, Any] = {}
114
+
115
+ field_dict.update({
116
+ })
117
+ if pipeline_id is not UNSET:
118
+ field_dict["pipeline_id"] = pipeline_id
119
+ if ocr_model is not UNSET:
120
+ field_dict["ocr_model"] = ocr_model
121
+ if ocr_options is not UNSET:
122
+ field_dict["ocr_options"] = ocr_options
123
+ if llm_model is not UNSET:
124
+ field_dict["llm_model"] = llm_model
125
+ if llm_options is not UNSET:
126
+ field_dict["llm_options"] = llm_options
127
+ if schema is not UNSET:
128
+ field_dict["schema"] = schema
129
+ if repair_attempts is not UNSET:
130
+ field_dict["repair_attempts"] = repair_attempts
131
+ if grounding is not UNSET:
132
+ field_dict["grounding"] = grounding
133
+ if file_id is not UNSET:
134
+ field_dict["file_id"] = file_id
135
+ if parse_job_id is not UNSET:
136
+ field_dict["parse_job_id"] = parse_job_id
137
+ if output_format is not UNSET:
138
+ field_dict["output_format"] = output_format
139
+
140
+ return field_dict
141
+
142
+
143
+
144
+ @classmethod
145
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
146
+ from ..models.extract_request_llm_options import ExtractRequestLlmOptions
147
+ from ..models.extract_request_ocr_options import ExtractRequestOcrOptions
148
+ from ..models.extract_request_schema import ExtractRequestSchema
149
+ d = dict(src_dict)
150
+ pipeline_id = d.pop("pipeline_id", UNSET)
151
+
152
+ ocr_model = d.pop("ocr_model", UNSET)
153
+
154
+ _ocr_options = d.pop("ocr_options", UNSET)
155
+ ocr_options: ExtractRequestOcrOptions | Unset
156
+ if isinstance(_ocr_options, Unset):
157
+ ocr_options = UNSET
158
+ else:
159
+ ocr_options = ExtractRequestOcrOptions.from_dict(_ocr_options)
160
+
161
+
162
+
163
+
164
+ llm_model = d.pop("llm_model", UNSET)
165
+
166
+ _llm_options = d.pop("llm_options", UNSET)
167
+ llm_options: ExtractRequestLlmOptions | Unset
168
+ if isinstance(_llm_options, Unset):
169
+ llm_options = UNSET
170
+ else:
171
+ llm_options = ExtractRequestLlmOptions.from_dict(_llm_options)
172
+
173
+
174
+
175
+
176
+ _schema = d.pop("schema", UNSET)
177
+ schema: ExtractRequestSchema | Unset
178
+ if isinstance(_schema, Unset):
179
+ schema = UNSET
180
+ else:
181
+ schema = ExtractRequestSchema.from_dict(_schema)
182
+
183
+
184
+
185
+
186
+ repair_attempts = d.pop("repair_attempts", UNSET)
187
+
188
+ _grounding = d.pop("grounding", UNSET)
189
+ grounding: ExtractRequestGrounding | Unset
190
+ if isinstance(_grounding, Unset):
191
+ grounding = UNSET
192
+ else:
193
+ grounding = ExtractRequestGrounding(_grounding)
194
+
195
+
196
+
197
+
198
+ file_id = d.pop("file_id", UNSET)
199
+
200
+ parse_job_id = d.pop("parse_job_id", UNSET)
201
+
202
+ _output_format = d.pop("output_format", UNSET)
203
+ output_format: ExtractRequestOutputFormat | Unset
204
+ if isinstance(_output_format, Unset):
205
+ output_format = UNSET
206
+ else:
207
+ output_format = ExtractRequestOutputFormat(_output_format)
208
+
209
+
210
+
211
+
212
+ extract_request = cls(
213
+ pipeline_id=pipeline_id,
214
+ ocr_model=ocr_model,
215
+ ocr_options=ocr_options,
216
+ llm_model=llm_model,
217
+ llm_options=llm_options,
218
+ schema=schema,
219
+ repair_attempts=repair_attempts,
220
+ grounding=grounding,
221
+ file_id=file_id,
222
+ parse_job_id=parse_job_id,
223
+ output_format=output_format,
224
+ )
225
+
226
+ return extract_request
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+ class ExtractRequestGrounding(str, Enum):
4
+ FIELD = "field"
5
+ NONE = "none"
6
+
7
+ def __str__(self) -> str:
8
+ return str(self.value)
@@ -0,0 +1,84 @@
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.extract_request_llm_options_reasoning_effort_type_1 import ExtractRequestLlmOptionsReasoningEffortType1
12
+ from ..types import UNSET, Unset
13
+ from typing import cast
14
+ from typing import Literal, cast
15
+
16
+
17
+
18
+
19
+
20
+
21
+ T = TypeVar("T", bound="ExtractRequestLlmOptions")
22
+
23
+
24
+
25
+ @_attrs_define
26
+ class ExtractRequestLlmOptions:
27
+ """
28
+ Attributes:
29
+ reasoning_effort (ExtractRequestLlmOptionsReasoningEffortType1 | Literal['auto'] | Unset):
30
+ """
31
+
32
+ reasoning_effort: ExtractRequestLlmOptionsReasoningEffortType1 | Literal['auto'] | Unset = UNSET
33
+
34
+
35
+
36
+
37
+
38
+ def to_dict(self) -> dict[str, Any]:
39
+ reasoning_effort: Literal['auto'] | str | Unset
40
+ if isinstance(self.reasoning_effort, Unset):
41
+ reasoning_effort = UNSET
42
+ elif isinstance(self.reasoning_effort, ExtractRequestLlmOptionsReasoningEffortType1):
43
+ reasoning_effort = self.reasoning_effort.value
44
+ else:
45
+ reasoning_effort = self.reasoning_effort
46
+
47
+
48
+ field_dict: dict[str, Any] = {}
49
+
50
+ field_dict.update({
51
+ })
52
+ if reasoning_effort is not UNSET:
53
+ field_dict["reasoning_effort"] = reasoning_effort
54
+
55
+ return field_dict
56
+
57
+
58
+
59
+ @classmethod
60
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
61
+ d = dict(src_dict)
62
+ def _parse_reasoning_effort(data: object) -> ExtractRequestLlmOptionsReasoningEffortType1 | Literal['auto'] | Unset:
63
+ if isinstance(data, Unset):
64
+ return data
65
+ reasoning_effort_type_0 = cast(Literal['auto'] , data)
66
+ if reasoning_effort_type_0 != 'auto':
67
+ raise ValueError(f"reasoning_effort_type_0 must match const 'auto', got '{reasoning_effort_type_0}'")
68
+ return reasoning_effort_type_0
69
+ if not isinstance(data, str):
70
+ raise TypeError()
71
+ reasoning_effort_type_1 = ExtractRequestLlmOptionsReasoningEffortType1(data)
72
+
73
+
74
+
75
+ return reasoning_effort_type_1
76
+
77
+ reasoning_effort = _parse_reasoning_effort(d.pop("reasoning_effort", UNSET))
78
+
79
+
80
+ extract_request_llm_options = cls(
81
+ reasoning_effort=reasoning_effort,
82
+ )
83
+
84
+ return extract_request_llm_options
@@ -0,0 +1,13 @@
1
+ from enum import Enum
2
+
3
+ class ExtractRequestLlmOptionsReasoningEffortType1(str, Enum):
4
+ HIGH = "high"
5
+ LOW = "low"
6
+ MAX = "max"
7
+ MEDIUM = "medium"
8
+ MINIMAL = "minimal"
9
+ NONE = "none"
10
+ XHIGH = "xhigh"
11
+
12
+ def __str__(self) -> str:
13
+ return str(self.value)
@@ -0,0 +1,78 @@
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 ..types import UNSET, Unset
12
+
13
+
14
+
15
+
16
+
17
+
18
+ T = TypeVar("T", bound="ExtractRequestOcrOptions")
19
+
20
+
21
+
22
+ @_attrs_define
23
+ class ExtractRequestOcrOptions:
24
+ """
25
+ Attributes:
26
+ image_block_ocr (bool | Unset):
27
+ chart_recognition (bool | Unset):
28
+ merge_layout_blocks (bool | Unset): Merge nearby cross-column or staggered text regions before recognition.
29
+ Defaults to false to preserve one-to-one text and bounding-box alignment.
30
+ """
31
+
32
+ image_block_ocr: bool | Unset = UNSET
33
+ chart_recognition: bool | Unset = UNSET
34
+ merge_layout_blocks: bool | Unset = UNSET
35
+
36
+
37
+
38
+
39
+
40
+ def to_dict(self) -> dict[str, Any]:
41
+ image_block_ocr = self.image_block_ocr
42
+
43
+ chart_recognition = self.chart_recognition
44
+
45
+ merge_layout_blocks = self.merge_layout_blocks
46
+
47
+
48
+ field_dict: dict[str, Any] = {}
49
+
50
+ field_dict.update({
51
+ })
52
+ if image_block_ocr is not UNSET:
53
+ field_dict["image_block_ocr"] = image_block_ocr
54
+ if chart_recognition is not UNSET:
55
+ field_dict["chart_recognition"] = chart_recognition
56
+ if merge_layout_blocks is not UNSET:
57
+ field_dict["merge_layout_blocks"] = merge_layout_blocks
58
+
59
+ return field_dict
60
+
61
+
62
+
63
+ @classmethod
64
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
65
+ d = dict(src_dict)
66
+ image_block_ocr = d.pop("image_block_ocr", UNSET)
67
+
68
+ chart_recognition = d.pop("chart_recognition", UNSET)
69
+
70
+ merge_layout_blocks = d.pop("merge_layout_blocks", UNSET)
71
+
72
+ extract_request_ocr_options = cls(
73
+ image_block_ocr=image_block_ocr,
74
+ chart_recognition=chart_recognition,
75
+ merge_layout_blocks=merge_layout_blocks,
76
+ )
77
+
78
+ return extract_request_ocr_options
@@ -0,0 +1,8 @@
1
+ from enum import Enum
2
+
3
+ class ExtractRequestOutputFormat(str, Enum):
4
+ OPENPARSER1 = "openparser@1"
5
+ RAW = "raw"
6
+
7
+ def __str__(self) -> str:
8
+ 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="ExtractRequestSchema")
18
+
19
+
20
+
21
+ @_attrs_define
22
+ class ExtractRequestSchema:
23
+ """
24
+ """
25
+
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+
29
+
30
+
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+
37
+ return field_dict
38
+
39
+
40
+
41
+ @classmethod
42
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
43
+ d = dict(src_dict)
44
+ extract_request_schema = cls(
45
+ )
46
+
47
+
48
+ extract_request_schema.additional_properties = d
49
+ return extract_request_schema
50
+
51
+ @property
52
+ def additional_keys(self) -> list[str]:
53
+ return list(self.additional_properties.keys())
54
+
55
+ def __getitem__(self, key: str) -> Any:
56
+ return self.additional_properties[key]
57
+
58
+ def __setitem__(self, key: str, value: Any) -> None:
59
+ self.additional_properties[key] = value
60
+
61
+ def __delitem__(self, key: str) -> None:
62
+ del self.additional_properties[key]
63
+
64
+ def __contains__(self, key: str) -> bool:
65
+ return key in self.additional_properties
@@ -0,0 +1,136 @@
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.extract_request import ExtractRequest
20
+
21
+
22
+
23
+
24
+
25
+ T = TypeVar("T", bound="ExtractSyncBody")
26
+
27
+
28
+
29
+ @_attrs_define
30
+ class ExtractSyncBody:
31
+ """
32
+ Attributes:
33
+ request (ExtractRequest): Single extract config. Provide either `pipeline_id` or inline extraction config.
34
+ The source is exactly one of multipart file bytes, `file_id`, or tenant-owned succeeded
35
+ `parse_job_id`. Parse reuse is single-extract-only, forbids `ocr_model` / `ocr_options`,
36
+ does not run OCR, and adds no page charge. `parse_job_id` is part of idempotency identity.
37
+ file (File | Unset): Source document bytes (PDF, PNG, or JPEG). Required unless `request.file_id`
38
+ references an existing Eigenpal reusable file.
39
+ """
40
+
41
+ request: ExtractRequest
42
+ file: File | Unset = UNSET
43
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
44
+
45
+
46
+
47
+
48
+
49
+ def to_dict(self) -> dict[str, Any]:
50
+ from ..models.extract_request import ExtractRequest
51
+ request = self.request.to_dict()
52
+
53
+ file: FileTypes | Unset = UNSET
54
+ if not isinstance(self.file, Unset):
55
+ file = self.file.to_tuple()
56
+
57
+
58
+
59
+ field_dict: dict[str, Any] = {}
60
+ field_dict.update(self.additional_properties)
61
+ field_dict.update({
62
+ "request": request,
63
+ })
64
+ if file is not UNSET:
65
+ field_dict["file"] = file
66
+
67
+ return field_dict
68
+
69
+
70
+ def to_multipart(self) -> types.RequestFiles:
71
+ from ..models.extract_request import ExtractRequest
72
+ files: types.RequestFiles = []
73
+
74
+ files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
75
+
76
+
77
+
78
+ if not isinstance(self.file, Unset):
79
+ files.append(("file", self.file.to_tuple()))
80
+
81
+
82
+
83
+
84
+ for prop_name, prop in self.additional_properties.items():
85
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
86
+
87
+
88
+
89
+ return files
90
+
91
+
92
+ @classmethod
93
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
94
+ from ..models.extract_request import ExtractRequest
95
+ d = dict(src_dict)
96
+ request = ExtractRequest.from_dict(d.pop("request"))
97
+
98
+
99
+
100
+
101
+ _file = d.pop("file", UNSET)
102
+ file: File | Unset
103
+ if isinstance(_file, Unset):
104
+ file = UNSET
105
+ else:
106
+ file = File(
107
+ payload = BytesIO(_file)
108
+ )
109
+
110
+
111
+
112
+
113
+ extract_sync_body = cls(
114
+ request=request,
115
+ file=file,
116
+ )
117
+
118
+
119
+ extract_sync_body.additional_properties = d
120
+ return extract_sync_body
121
+
122
+ @property
123
+ def additional_keys(self) -> list[str]:
124
+ return list(self.additional_properties.keys())
125
+
126
+ def __getitem__(self, key: str) -> Any:
127
+ return self.additional_properties[key]
128
+
129
+ def __setitem__(self, key: str, value: Any) -> None:
130
+ self.additional_properties[key] = value
131
+
132
+ def __delitem__(self, key: str) -> None:
133
+ del self.additional_properties[key]
134
+
135
+ def __contains__(self, key: str) -> bool:
136
+ return key in self.additional_properties