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,227 @@
|
|
|
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.update_extraction_pipeline_request_grounding import UpdateExtractionPipelineRequestGrounding
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from ..models.update_extraction_pipeline_request_llm_options_type_0 import UpdateExtractionPipelineRequestLlmOptionsType0
|
|
17
|
+
from ..models.update_extraction_pipeline_request_ocr_options_type_0 import UpdateExtractionPipelineRequestOcrOptionsType0
|
|
18
|
+
from ..models.update_extraction_pipeline_request_schema import UpdateExtractionPipelineRequestSchema
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
T = TypeVar("T", bound="UpdateExtractionPipelineRequest")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@_attrs_define
|
|
29
|
+
class UpdateExtractionPipelineRequest:
|
|
30
|
+
""" Partial update; at least one field required. Successful updates bump `version`.
|
|
31
|
+
|
|
32
|
+
Attributes:
|
|
33
|
+
name (str | Unset):
|
|
34
|
+
slug (None | str | Unset):
|
|
35
|
+
ocr_model (str | Unset):
|
|
36
|
+
ocr_options (None | Unset | UpdateExtractionPipelineRequestOcrOptionsType0):
|
|
37
|
+
llm_model (str | Unset):
|
|
38
|
+
llm_options (None | Unset | UpdateExtractionPipelineRequestLlmOptionsType0):
|
|
39
|
+
schema (UpdateExtractionPipelineRequestSchema | Unset): Replacement extraction schema. Root must be an object
|
|
40
|
+
schema with explicit `properties`
|
|
41
|
+
and at least one named property. Merged pipeline config is re-validated on every update.
|
|
42
|
+
repair_attempts (int | Unset):
|
|
43
|
+
grounding (UpdateExtractionPipelineRequestGrounding | Unset):
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
name: str | Unset = UNSET
|
|
47
|
+
slug: None | str | Unset = UNSET
|
|
48
|
+
ocr_model: str | Unset = UNSET
|
|
49
|
+
ocr_options: None | Unset | UpdateExtractionPipelineRequestOcrOptionsType0 = UNSET
|
|
50
|
+
llm_model: str | Unset = UNSET
|
|
51
|
+
llm_options: None | Unset | UpdateExtractionPipelineRequestLlmOptionsType0 = UNSET
|
|
52
|
+
schema: UpdateExtractionPipelineRequestSchema | Unset = UNSET
|
|
53
|
+
repair_attempts: int | Unset = UNSET
|
|
54
|
+
grounding: UpdateExtractionPipelineRequestGrounding | Unset = UNSET
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def to_dict(self) -> dict[str, Any]:
|
|
61
|
+
from ..models.update_extraction_pipeline_request_llm_options_type_0 import UpdateExtractionPipelineRequestLlmOptionsType0
|
|
62
|
+
from ..models.update_extraction_pipeline_request_ocr_options_type_0 import UpdateExtractionPipelineRequestOcrOptionsType0
|
|
63
|
+
from ..models.update_extraction_pipeline_request_schema import UpdateExtractionPipelineRequestSchema
|
|
64
|
+
name = self.name
|
|
65
|
+
|
|
66
|
+
slug: None | str | Unset
|
|
67
|
+
if isinstance(self.slug, Unset):
|
|
68
|
+
slug = UNSET
|
|
69
|
+
else:
|
|
70
|
+
slug = self.slug
|
|
71
|
+
|
|
72
|
+
ocr_model = self.ocr_model
|
|
73
|
+
|
|
74
|
+
ocr_options: dict[str, Any] | None | Unset
|
|
75
|
+
if isinstance(self.ocr_options, Unset):
|
|
76
|
+
ocr_options = UNSET
|
|
77
|
+
elif isinstance(self.ocr_options, UpdateExtractionPipelineRequestOcrOptionsType0):
|
|
78
|
+
ocr_options = self.ocr_options.to_dict()
|
|
79
|
+
else:
|
|
80
|
+
ocr_options = self.ocr_options
|
|
81
|
+
|
|
82
|
+
llm_model = self.llm_model
|
|
83
|
+
|
|
84
|
+
llm_options: dict[str, Any] | None | Unset
|
|
85
|
+
if isinstance(self.llm_options, Unset):
|
|
86
|
+
llm_options = UNSET
|
|
87
|
+
elif isinstance(self.llm_options, UpdateExtractionPipelineRequestLlmOptionsType0):
|
|
88
|
+
llm_options = self.llm_options.to_dict()
|
|
89
|
+
else:
|
|
90
|
+
llm_options = self.llm_options
|
|
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
|
+
|
|
104
|
+
field_dict: dict[str, Any] = {}
|
|
105
|
+
|
|
106
|
+
field_dict.update({
|
|
107
|
+
})
|
|
108
|
+
if name is not UNSET:
|
|
109
|
+
field_dict["name"] = name
|
|
110
|
+
if slug is not UNSET:
|
|
111
|
+
field_dict["slug"] = slug
|
|
112
|
+
if ocr_model is not UNSET:
|
|
113
|
+
field_dict["ocr_model"] = ocr_model
|
|
114
|
+
if ocr_options is not UNSET:
|
|
115
|
+
field_dict["ocr_options"] = ocr_options
|
|
116
|
+
if llm_model is not UNSET:
|
|
117
|
+
field_dict["llm_model"] = llm_model
|
|
118
|
+
if llm_options is not UNSET:
|
|
119
|
+
field_dict["llm_options"] = llm_options
|
|
120
|
+
if schema is not UNSET:
|
|
121
|
+
field_dict["schema"] = schema
|
|
122
|
+
if repair_attempts is not UNSET:
|
|
123
|
+
field_dict["repair_attempts"] = repair_attempts
|
|
124
|
+
if grounding is not UNSET:
|
|
125
|
+
field_dict["grounding"] = grounding
|
|
126
|
+
|
|
127
|
+
return field_dict
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
@classmethod
|
|
132
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
133
|
+
from ..models.update_extraction_pipeline_request_llm_options_type_0 import UpdateExtractionPipelineRequestLlmOptionsType0
|
|
134
|
+
from ..models.update_extraction_pipeline_request_ocr_options_type_0 import UpdateExtractionPipelineRequestOcrOptionsType0
|
|
135
|
+
from ..models.update_extraction_pipeline_request_schema import UpdateExtractionPipelineRequestSchema
|
|
136
|
+
d = dict(src_dict)
|
|
137
|
+
name = d.pop("name", UNSET)
|
|
138
|
+
|
|
139
|
+
def _parse_slug(data: object) -> None | str | Unset:
|
|
140
|
+
if data is None:
|
|
141
|
+
return data
|
|
142
|
+
if isinstance(data, Unset):
|
|
143
|
+
return data
|
|
144
|
+
return cast(None | str | Unset, data)
|
|
145
|
+
|
|
146
|
+
slug = _parse_slug(d.pop("slug", UNSET))
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
ocr_model = d.pop("ocr_model", UNSET)
|
|
150
|
+
|
|
151
|
+
def _parse_ocr_options(data: object) -> None | Unset | UpdateExtractionPipelineRequestOcrOptionsType0:
|
|
152
|
+
if data is None:
|
|
153
|
+
return data
|
|
154
|
+
if isinstance(data, Unset):
|
|
155
|
+
return data
|
|
156
|
+
try:
|
|
157
|
+
if not isinstance(data, dict):
|
|
158
|
+
raise TypeError()
|
|
159
|
+
ocr_options_type_0 = UpdateExtractionPipelineRequestOcrOptionsType0.from_dict(data)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
return ocr_options_type_0
|
|
164
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
165
|
+
pass
|
|
166
|
+
return cast(None | Unset | UpdateExtractionPipelineRequestOcrOptionsType0, data)
|
|
167
|
+
|
|
168
|
+
ocr_options = _parse_ocr_options(d.pop("ocr_options", UNSET))
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
llm_model = d.pop("llm_model", UNSET)
|
|
172
|
+
|
|
173
|
+
def _parse_llm_options(data: object) -> None | Unset | UpdateExtractionPipelineRequestLlmOptionsType0:
|
|
174
|
+
if data is None:
|
|
175
|
+
return data
|
|
176
|
+
if isinstance(data, Unset):
|
|
177
|
+
return data
|
|
178
|
+
try:
|
|
179
|
+
if not isinstance(data, dict):
|
|
180
|
+
raise TypeError()
|
|
181
|
+
llm_options_type_0 = UpdateExtractionPipelineRequestLlmOptionsType0.from_dict(data)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
return llm_options_type_0
|
|
186
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
187
|
+
pass
|
|
188
|
+
return cast(None | Unset | UpdateExtractionPipelineRequestLlmOptionsType0, data)
|
|
189
|
+
|
|
190
|
+
llm_options = _parse_llm_options(d.pop("llm_options", UNSET))
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
_schema = d.pop("schema", UNSET)
|
|
194
|
+
schema: UpdateExtractionPipelineRequestSchema | Unset
|
|
195
|
+
if isinstance(_schema, Unset):
|
|
196
|
+
schema = UNSET
|
|
197
|
+
else:
|
|
198
|
+
schema = UpdateExtractionPipelineRequestSchema.from_dict(_schema)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
repair_attempts = d.pop("repair_attempts", UNSET)
|
|
204
|
+
|
|
205
|
+
_grounding = d.pop("grounding", UNSET)
|
|
206
|
+
grounding: UpdateExtractionPipelineRequestGrounding | Unset
|
|
207
|
+
if isinstance(_grounding, Unset):
|
|
208
|
+
grounding = UNSET
|
|
209
|
+
else:
|
|
210
|
+
grounding = UpdateExtractionPipelineRequestGrounding(_grounding)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
update_extraction_pipeline_request = cls(
|
|
216
|
+
name=name,
|
|
217
|
+
slug=slug,
|
|
218
|
+
ocr_model=ocr_model,
|
|
219
|
+
ocr_options=ocr_options,
|
|
220
|
+
llm_model=llm_model,
|
|
221
|
+
llm_options=llm_options,
|
|
222
|
+
schema=schema,
|
|
223
|
+
repair_attempts=repair_attempts,
|
|
224
|
+
grounding=grounding,
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
return update_extraction_pipeline_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.update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1 import UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1
|
|
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="UpdateExtractionPipelineRequestLlmOptionsType0")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class UpdateExtractionPipelineRequestLlmOptionsType0:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
reasoning_effort (Literal['auto'] | Unset | UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1):
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
reasoning_effort: Literal['auto'] | Unset | UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1 = 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, UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1):
|
|
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) -> Literal['auto'] | Unset | UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1:
|
|
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 = UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1(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
|
+
update_extraction_pipeline_request_llm_options_type_0 = cls(
|
|
81
|
+
reasoning_effort=reasoning_effort,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
return update_extraction_pipeline_request_llm_options_type_0
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
class UpdateExtractionPipelineRequestLlmOptionsType0ReasoningEffortType1(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="UpdateExtractionPipelineRequestOcrOptionsType0")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@_attrs_define
|
|
23
|
+
class UpdateExtractionPipelineRequestOcrOptionsType0:
|
|
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
|
+
update_extraction_pipeline_request_ocr_options_type_0 = cls(
|
|
73
|
+
image_block_ocr=image_block_ocr,
|
|
74
|
+
chart_recognition=chart_recognition,
|
|
75
|
+
merge_layout_blocks=merge_layout_blocks,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
return update_extraction_pipeline_request_ocr_options_type_0
|
|
@@ -0,0 +1,67 @@
|
|
|
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="UpdateExtractionPipelineRequestSchema")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class UpdateExtractionPipelineRequestSchema:
|
|
23
|
+
""" Replacement extraction schema. Root must be an object schema with explicit `properties`
|
|
24
|
+
and at least one named property. Merged pipeline config is re-validated on every update.
|
|
25
|
+
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def to_dict(self) -> dict[str, Any]:
|
|
35
|
+
|
|
36
|
+
field_dict: dict[str, Any] = {}
|
|
37
|
+
field_dict.update(self.additional_properties)
|
|
38
|
+
|
|
39
|
+
return field_dict
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@classmethod
|
|
44
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
45
|
+
d = dict(src_dict)
|
|
46
|
+
update_extraction_pipeline_request_schema = cls(
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
update_extraction_pipeline_request_schema.additional_properties = d
|
|
51
|
+
return update_extraction_pipeline_request_schema
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def additional_keys(self) -> list[str]:
|
|
55
|
+
return list(self.additional_properties.keys())
|
|
56
|
+
|
|
57
|
+
def __getitem__(self, key: str) -> Any:
|
|
58
|
+
return self.additional_properties[key]
|
|
59
|
+
|
|
60
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
61
|
+
self.additional_properties[key] = value
|
|
62
|
+
|
|
63
|
+
def __delitem__(self, key: str) -> None:
|
|
64
|
+
del self.additional_properties[key]
|
|
65
|
+
|
|
66
|
+
def __contains__(self, key: str) -> bool:
|
|
67
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Marker file for PEP 561
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
""" Contains some shared types for properties """
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping, MutableMapping
|
|
4
|
+
from http import HTTPStatus
|
|
5
|
+
from typing import BinaryIO, Generic, TypeVar, Literal, IO
|
|
6
|
+
|
|
7
|
+
from attrs import define
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Unset:
|
|
11
|
+
def __bool__(self) -> Literal[False]:
|
|
12
|
+
return False
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UNSET: Unset = Unset()
|
|
16
|
+
|
|
17
|
+
# The types that `httpx.Client(files=)` can accept, copied from that library.
|
|
18
|
+
FileContent = IO[bytes] | bytes | str
|
|
19
|
+
FileTypes = (
|
|
20
|
+
# (filename, file (or bytes), content_type)
|
|
21
|
+
tuple[str | None, FileContent, str | None]
|
|
22
|
+
# (filename, file (or bytes), content_type, headers)
|
|
23
|
+
| tuple[str | None, FileContent, str | None, Mapping[str, str]]
|
|
24
|
+
)
|
|
25
|
+
RequestFiles = list[tuple[str, FileTypes]]
|
|
26
|
+
|
|
27
|
+
@define
|
|
28
|
+
class File:
|
|
29
|
+
""" Contains information for file uploads """
|
|
30
|
+
|
|
31
|
+
payload: BinaryIO
|
|
32
|
+
file_name: str | None = None
|
|
33
|
+
mime_type: str | None = None
|
|
34
|
+
|
|
35
|
+
def to_tuple(self) -> FileTypes:
|
|
36
|
+
""" Return a tuple representation that httpx will accept for multipart/form-data """
|
|
37
|
+
return self.file_name, self.payload, self.mime_type
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
T = TypeVar("T")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@define
|
|
44
|
+
class Response(Generic[T]):
|
|
45
|
+
""" A response from an endpoint """
|
|
46
|
+
|
|
47
|
+
status_code: HTTPStatus
|
|
48
|
+
content: bytes
|
|
49
|
+
headers: MutableMapping[str, str]
|
|
50
|
+
parsed: T | None
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
|
openparser/_telemetry.py
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""SDK telemetry headers attached to every outbound request."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import platform
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
SDK_LANGUAGE = "python"
|
|
9
|
+
SDK_VERSION = "0.0.1"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _detect_runtime() -> str:
|
|
13
|
+
impl = platform.python_implementation().lower()
|
|
14
|
+
name = "python" if impl == "cpython" else impl
|
|
15
|
+
v = sys.version_info
|
|
16
|
+
return f"{name}-{v.major}.{v.minor}.{v.micro}"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _detect_os() -> str:
|
|
20
|
+
system = platform.system().lower() or "unknown"
|
|
21
|
+
machine = platform.machine().lower() or "unknown"
|
|
22
|
+
return f"{system}-{machine}"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def build_telemetry_headers() -> dict[str, str]:
|
|
26
|
+
runtime = _detect_runtime()
|
|
27
|
+
os_name = _detect_os()
|
|
28
|
+
return {
|
|
29
|
+
"X-OpenParser-Sdk": SDK_LANGUAGE,
|
|
30
|
+
"X-OpenParser-Sdk-Version": SDK_VERSION,
|
|
31
|
+
"X-OpenParser-Sdk-Runtime": runtime,
|
|
32
|
+
"X-OpenParser-Sdk-Os": os_name,
|
|
33
|
+
"User-Agent": f"openparser-sdk-python/{SDK_VERSION} ({runtime}; {os_name})",
|
|
34
|
+
}
|