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,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="ExtractAsyncBody")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@_attrs_define
|
|
30
|
+
class ExtractAsyncBody:
|
|
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_async_body = cls(
|
|
114
|
+
request=request,
|
|
115
|
+
file=file,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
extract_async_body.additional_properties = d
|
|
120
|
+
return extract_async_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
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
import json
|
|
9
|
+
from .. import types
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
from ..types import File, FileTypes
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
from io import BytesIO
|
|
16
|
+
from typing import cast
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.extract_batch_request import ExtractBatchRequest
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
T = TypeVar("T", bound="ExtractBatchBody")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@_attrs_define
|
|
30
|
+
class ExtractBatchBody:
|
|
31
|
+
"""
|
|
32
|
+
Attributes:
|
|
33
|
+
request (ExtractBatchRequest):
|
|
34
|
+
files (list[File] | Unset): Ordered uploaded files referenced by `file_index` in the batch request. Each file
|
|
35
|
+
is limited to 50 MiB and total multipart body content is limited to 100 MiB.
|
|
36
|
+
Omit when every batch item supplies `file_id` instead.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
request: ExtractBatchRequest
|
|
40
|
+
files: list[File] | Unset = UNSET
|
|
41
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
from ..models.extract_batch_request import ExtractBatchRequest
|
|
49
|
+
request = self.request.to_dict()
|
|
50
|
+
|
|
51
|
+
files: list[FileTypes] | Unset = UNSET
|
|
52
|
+
if not isinstance(self.files, Unset):
|
|
53
|
+
files = []
|
|
54
|
+
for files_item_data in self.files:
|
|
55
|
+
files_item = files_item_data.to_tuple()
|
|
56
|
+
|
|
57
|
+
files.append(files_item)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
field_dict: dict[str, Any] = {}
|
|
63
|
+
field_dict.update(self.additional_properties)
|
|
64
|
+
field_dict.update({
|
|
65
|
+
"request": request,
|
|
66
|
+
})
|
|
67
|
+
if files is not UNSET:
|
|
68
|
+
field_dict["files"] = files
|
|
69
|
+
|
|
70
|
+
return field_dict
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def to_multipart(self) -> types.RequestFiles:
|
|
74
|
+
from ..models.extract_batch_request import ExtractBatchRequest
|
|
75
|
+
files: types.RequestFiles = []
|
|
76
|
+
|
|
77
|
+
files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
if not isinstance(self.files, Unset):
|
|
82
|
+
for files_item_element in self.files:
|
|
83
|
+
files.append(("files", files_item_element.to_tuple()))
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
for prop_name, prop in self.additional_properties.items():
|
|
90
|
+
files.append((prop_name, (None, str(prop).encode(), "text/plain")))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
return files
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@classmethod
|
|
98
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
99
|
+
from ..models.extract_batch_request import ExtractBatchRequest
|
|
100
|
+
d = dict(src_dict)
|
|
101
|
+
request = ExtractBatchRequest.from_dict(d.pop("request"))
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
_files = d.pop("files", UNSET)
|
|
107
|
+
files: list[File] | Unset = UNSET
|
|
108
|
+
if _files is not UNSET:
|
|
109
|
+
files = []
|
|
110
|
+
for files_item_data in _files:
|
|
111
|
+
files_item = File(
|
|
112
|
+
payload = BytesIO(files_item_data)
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
files.append(files_item)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
extract_batch_body = cls(
|
|
121
|
+
request=request,
|
|
122
|
+
files=files,
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
extract_batch_body.additional_properties = d
|
|
127
|
+
return extract_batch_body
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def additional_keys(self) -> list[str]:
|
|
131
|
+
return list(self.additional_properties.keys())
|
|
132
|
+
|
|
133
|
+
def __getitem__(self, key: str) -> Any:
|
|
134
|
+
return self.additional_properties[key]
|
|
135
|
+
|
|
136
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
137
|
+
self.additional_properties[key] = value
|
|
138
|
+
|
|
139
|
+
def __delitem__(self, key: str) -> None:
|
|
140
|
+
del self.additional_properties[key]
|
|
141
|
+
|
|
142
|
+
def __contains__(self, key: str) -> bool:
|
|
143
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,207 @@
|
|
|
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_batch_item_grounding import ExtractBatchItemGrounding
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from ..models.extract_batch_item_llm_options import ExtractBatchItemLlmOptions
|
|
17
|
+
from ..models.extract_batch_item_ocr_options import ExtractBatchItemOcrOptions
|
|
18
|
+
from ..models.extract_batch_item_schema import ExtractBatchItemSchema
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
T = TypeVar("T", bound="ExtractBatchItem")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@_attrs_define
|
|
29
|
+
class ExtractBatchItem:
|
|
30
|
+
""" Per-item file-backed extract config with the same `pipeline_id` XOR inline rules as
|
|
31
|
+
single extract. Sources are `file_index` or `file_id`; `parse_job_id` is not supported
|
|
32
|
+
in batch. No parent-level batch pipeline in v1.
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
client_item_id (str):
|
|
36
|
+
file_index (int | Unset): Zero-based index into the uploaded `files` array. Exactly one of `file_index` or
|
|
37
|
+
`file_id` is required per item.
|
|
38
|
+
file_id (str | Unset):
|
|
39
|
+
pipeline_id (str | Unset): Saved extraction pipeline id; mutually exclusive with inline extract fields.
|
|
40
|
+
ocr_model (str | Unset):
|
|
41
|
+
ocr_options (ExtractBatchItemOcrOptions | Unset):
|
|
42
|
+
llm_model (str | Unset):
|
|
43
|
+
llm_options (ExtractBatchItemLlmOptions | Unset):
|
|
44
|
+
schema (ExtractBatchItemSchema | Unset):
|
|
45
|
+
repair_attempts (int | Unset):
|
|
46
|
+
grounding (ExtractBatchItemGrounding | Unset): Optional field grounding mode. Defaults to `none`. `field` opts
|
|
47
|
+
into verified
|
|
48
|
+
per-leaf citations and is part of idempotency identity.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
client_item_id: str
|
|
52
|
+
file_index: int | Unset = UNSET
|
|
53
|
+
file_id: str | Unset = UNSET
|
|
54
|
+
pipeline_id: str | Unset = UNSET
|
|
55
|
+
ocr_model: str | Unset = UNSET
|
|
56
|
+
ocr_options: ExtractBatchItemOcrOptions | Unset = UNSET
|
|
57
|
+
llm_model: str | Unset = UNSET
|
|
58
|
+
llm_options: ExtractBatchItemLlmOptions | Unset = UNSET
|
|
59
|
+
schema: ExtractBatchItemSchema | Unset = UNSET
|
|
60
|
+
repair_attempts: int | Unset = UNSET
|
|
61
|
+
grounding: ExtractBatchItemGrounding | Unset = UNSET
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def to_dict(self) -> dict[str, Any]:
|
|
68
|
+
from ..models.extract_batch_item_llm_options import ExtractBatchItemLlmOptions
|
|
69
|
+
from ..models.extract_batch_item_ocr_options import ExtractBatchItemOcrOptions
|
|
70
|
+
from ..models.extract_batch_item_schema import ExtractBatchItemSchema
|
|
71
|
+
client_item_id = self.client_item_id
|
|
72
|
+
|
|
73
|
+
file_index = self.file_index
|
|
74
|
+
|
|
75
|
+
file_id = self.file_id
|
|
76
|
+
|
|
77
|
+
pipeline_id = self.pipeline_id
|
|
78
|
+
|
|
79
|
+
ocr_model = self.ocr_model
|
|
80
|
+
|
|
81
|
+
ocr_options: dict[str, Any] | Unset = UNSET
|
|
82
|
+
if not isinstance(self.ocr_options, Unset):
|
|
83
|
+
ocr_options = self.ocr_options.to_dict()
|
|
84
|
+
|
|
85
|
+
llm_model = self.llm_model
|
|
86
|
+
|
|
87
|
+
llm_options: dict[str, Any] | Unset = UNSET
|
|
88
|
+
if not isinstance(self.llm_options, Unset):
|
|
89
|
+
llm_options = self.llm_options.to_dict()
|
|
90
|
+
|
|
91
|
+
schema: dict[str, Any] | Unset = UNSET
|
|
92
|
+
if not isinstance(self.schema, Unset):
|
|
93
|
+
schema = self.schema.to_dict()
|
|
94
|
+
|
|
95
|
+
repair_attempts = self.repair_attempts
|
|
96
|
+
|
|
97
|
+
grounding: str | Unset = UNSET
|
|
98
|
+
if not isinstance(self.grounding, Unset):
|
|
99
|
+
grounding = self.grounding.value
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
field_dict: dict[str, Any] = {}
|
|
104
|
+
|
|
105
|
+
field_dict.update({
|
|
106
|
+
"client_item_id": client_item_id,
|
|
107
|
+
})
|
|
108
|
+
if file_index is not UNSET:
|
|
109
|
+
field_dict["file_index"] = file_index
|
|
110
|
+
if file_id is not UNSET:
|
|
111
|
+
field_dict["file_id"] = file_id
|
|
112
|
+
if pipeline_id is not UNSET:
|
|
113
|
+
field_dict["pipeline_id"] = pipeline_id
|
|
114
|
+
if ocr_model is not UNSET:
|
|
115
|
+
field_dict["ocr_model"] = ocr_model
|
|
116
|
+
if ocr_options is not UNSET:
|
|
117
|
+
field_dict["ocr_options"] = ocr_options
|
|
118
|
+
if llm_model is not UNSET:
|
|
119
|
+
field_dict["llm_model"] = llm_model
|
|
120
|
+
if llm_options is not UNSET:
|
|
121
|
+
field_dict["llm_options"] = llm_options
|
|
122
|
+
if schema is not UNSET:
|
|
123
|
+
field_dict["schema"] = schema
|
|
124
|
+
if repair_attempts is not UNSET:
|
|
125
|
+
field_dict["repair_attempts"] = repair_attempts
|
|
126
|
+
if grounding is not UNSET:
|
|
127
|
+
field_dict["grounding"] = grounding
|
|
128
|
+
|
|
129
|
+
return field_dict
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
@classmethod
|
|
134
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
135
|
+
from ..models.extract_batch_item_llm_options import ExtractBatchItemLlmOptions
|
|
136
|
+
from ..models.extract_batch_item_ocr_options import ExtractBatchItemOcrOptions
|
|
137
|
+
from ..models.extract_batch_item_schema import ExtractBatchItemSchema
|
|
138
|
+
d = dict(src_dict)
|
|
139
|
+
client_item_id = d.pop("client_item_id")
|
|
140
|
+
|
|
141
|
+
file_index = d.pop("file_index", UNSET)
|
|
142
|
+
|
|
143
|
+
file_id = d.pop("file_id", UNSET)
|
|
144
|
+
|
|
145
|
+
pipeline_id = d.pop("pipeline_id", UNSET)
|
|
146
|
+
|
|
147
|
+
ocr_model = d.pop("ocr_model", UNSET)
|
|
148
|
+
|
|
149
|
+
_ocr_options = d.pop("ocr_options", UNSET)
|
|
150
|
+
ocr_options: ExtractBatchItemOcrOptions | Unset
|
|
151
|
+
if isinstance(_ocr_options, Unset):
|
|
152
|
+
ocr_options = UNSET
|
|
153
|
+
else:
|
|
154
|
+
ocr_options = ExtractBatchItemOcrOptions.from_dict(_ocr_options)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
llm_model = d.pop("llm_model", UNSET)
|
|
160
|
+
|
|
161
|
+
_llm_options = d.pop("llm_options", UNSET)
|
|
162
|
+
llm_options: ExtractBatchItemLlmOptions | Unset
|
|
163
|
+
if isinstance(_llm_options, Unset):
|
|
164
|
+
llm_options = UNSET
|
|
165
|
+
else:
|
|
166
|
+
llm_options = ExtractBatchItemLlmOptions.from_dict(_llm_options)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
_schema = d.pop("schema", UNSET)
|
|
172
|
+
schema: ExtractBatchItemSchema | Unset
|
|
173
|
+
if isinstance(_schema, Unset):
|
|
174
|
+
schema = UNSET
|
|
175
|
+
else:
|
|
176
|
+
schema = ExtractBatchItemSchema.from_dict(_schema)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
repair_attempts = d.pop("repair_attempts", UNSET)
|
|
182
|
+
|
|
183
|
+
_grounding = d.pop("grounding", UNSET)
|
|
184
|
+
grounding: ExtractBatchItemGrounding | Unset
|
|
185
|
+
if isinstance(_grounding, Unset):
|
|
186
|
+
grounding = UNSET
|
|
187
|
+
else:
|
|
188
|
+
grounding = ExtractBatchItemGrounding(_grounding)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
extract_batch_item = cls(
|
|
194
|
+
client_item_id=client_item_id,
|
|
195
|
+
file_index=file_index,
|
|
196
|
+
file_id=file_id,
|
|
197
|
+
pipeline_id=pipeline_id,
|
|
198
|
+
ocr_model=ocr_model,
|
|
199
|
+
ocr_options=ocr_options,
|
|
200
|
+
llm_model=llm_model,
|
|
201
|
+
llm_options=llm_options,
|
|
202
|
+
schema=schema,
|
|
203
|
+
repair_attempts=repair_attempts,
|
|
204
|
+
grounding=grounding,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
return extract_batch_item
|
|
@@ -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_batch_item_llm_options_reasoning_effort_type_1 import ExtractBatchItemLlmOptionsReasoningEffortType1
|
|
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="ExtractBatchItemLlmOptions")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class ExtractBatchItemLlmOptions:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
reasoning_effort (ExtractBatchItemLlmOptionsReasoningEffortType1 | Literal['auto'] | Unset):
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
reasoning_effort: ExtractBatchItemLlmOptionsReasoningEffortType1 | 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, ExtractBatchItemLlmOptionsReasoningEffortType1):
|
|
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) -> ExtractBatchItemLlmOptionsReasoningEffortType1 | 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 = ExtractBatchItemLlmOptionsReasoningEffortType1(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_batch_item_llm_options = cls(
|
|
81
|
+
reasoning_effort=reasoning_effort,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
return extract_batch_item_llm_options
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
class ExtractBatchItemLlmOptionsReasoningEffortType1(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="ExtractBatchItemOcrOptions")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@_attrs_define
|
|
23
|
+
class ExtractBatchItemOcrOptions:
|
|
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_batch_item_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_batch_item_ocr_options
|