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,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,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,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
|