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,437 @@
|
|
|
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.job_operation import JobOperation
|
|
12
|
+
from ..models.job_status import JobStatus
|
|
13
|
+
from ..models.ocr_output_format import OcrOutputFormat
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
from dateutil.parser import isoparse
|
|
16
|
+
from typing import cast
|
|
17
|
+
import datetime
|
|
18
|
+
|
|
19
|
+
if TYPE_CHECKING:
|
|
20
|
+
from ..models.batch_child_page import BatchChildPage
|
|
21
|
+
from ..models.batch_summary_counts import BatchSummaryCounts
|
|
22
|
+
from ..models.extraction_terminal_result import ExtractionTerminalResult
|
|
23
|
+
from ..models.job_extraction_schema import JobExtractionSchema
|
|
24
|
+
from ..models.job_failure import JobFailure
|
|
25
|
+
from ..models.job_progress import JobProgress
|
|
26
|
+
from ..models.job_related_extractions_item import JobRelatedExtractionsItem
|
|
27
|
+
from ..models.parsed_document import ParsedDocument
|
|
28
|
+
from ..models.raw_parse_result import RawParseResult
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
T = TypeVar("T", bound="Job")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@_attrs_define
|
|
39
|
+
class Job:
|
|
40
|
+
"""
|
|
41
|
+
Attributes:
|
|
42
|
+
id (str): Prefixed public id for an OCR job (`opj_…`). Example: opj_V1StGXR8_Z5jdHi6B-myT.
|
|
43
|
+
operation (JobOperation):
|
|
44
|
+
status (JobStatus): Durable job status. For batch parent jobs, status is derived from children after each
|
|
45
|
+
child transition:
|
|
46
|
+
1. If any child is non-terminal, the parent remains `queued` only while every child is
|
|
47
|
+
queued; it becomes `running` once any child is running or terminal.
|
|
48
|
+
2. When every child is terminal and any child is `indeterminate`, the parent is
|
|
49
|
+
`indeterminate`.
|
|
50
|
+
3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
|
|
51
|
+
the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
|
|
52
|
+
success/failure closes as parent `succeeded` while preserving failed children in
|
|
53
|
+
summaries).
|
|
54
|
+
4. When every child is `succeeded`, the parent is `succeeded`.
|
|
55
|
+
|
|
56
|
+
Partial failures are always retained on child summaries; parent status does not drop
|
|
57
|
+
failed children from results.
|
|
58
|
+
output_format (OcrOutputFormat):
|
|
59
|
+
created_at (datetime.datetime):
|
|
60
|
+
updated_at (datetime.datetime):
|
|
61
|
+
pipeline_id (None | str): Snapshot of the saved extraction pipeline id at admit time, or `null` for parse jobs,
|
|
62
|
+
inline extract config, and other non-pipeline work.
|
|
63
|
+
pipeline_version (int | None): Snapshot of the saved extraction pipeline version at admit time, or `null` when
|
|
64
|
+
`pipeline_id` is `null`.
|
|
65
|
+
progress (JobProgress | Unset):
|
|
66
|
+
error (JobFailure | Unset):
|
|
67
|
+
result (ExtractionTerminalResult | ParsedDocument | RawParseResult | Unset): Terminal result for single-item
|
|
68
|
+
parse or extract jobs.
|
|
69
|
+
summary (BatchSummaryCounts | Unset):
|
|
70
|
+
children (BatchChildPage | Unset):
|
|
71
|
+
has_source (bool | Unset):
|
|
72
|
+
source_media_type (None | str | Unset):
|
|
73
|
+
source_parse_job_id (None | str | Unset):
|
|
74
|
+
related_extractions (list[JobRelatedExtractionsItem] | Unset):
|
|
75
|
+
extraction_schema (JobExtractionSchema | Unset):
|
|
76
|
+
ocr_model (None | str | Unset): OCR model used at admit time when recorded. Omitted when unknown. Jobs do not
|
|
77
|
+
expose a durable OCR options snapshot.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
id: str
|
|
81
|
+
operation: JobOperation
|
|
82
|
+
status: JobStatus
|
|
83
|
+
output_format: OcrOutputFormat
|
|
84
|
+
created_at: datetime.datetime
|
|
85
|
+
updated_at: datetime.datetime
|
|
86
|
+
pipeline_id: None | str
|
|
87
|
+
pipeline_version: int | None
|
|
88
|
+
progress: JobProgress | Unset = UNSET
|
|
89
|
+
error: JobFailure | Unset = UNSET
|
|
90
|
+
result: ExtractionTerminalResult | ParsedDocument | RawParseResult | Unset = UNSET
|
|
91
|
+
summary: BatchSummaryCounts | Unset = UNSET
|
|
92
|
+
children: BatchChildPage | Unset = UNSET
|
|
93
|
+
has_source: bool | Unset = UNSET
|
|
94
|
+
source_media_type: None | str | Unset = UNSET
|
|
95
|
+
source_parse_job_id: None | str | Unset = UNSET
|
|
96
|
+
related_extractions: list[JobRelatedExtractionsItem] | Unset = UNSET
|
|
97
|
+
extraction_schema: JobExtractionSchema | Unset = UNSET
|
|
98
|
+
ocr_model: None | str | Unset = UNSET
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def to_dict(self) -> dict[str, Any]:
|
|
105
|
+
from ..models.batch_child_page import BatchChildPage
|
|
106
|
+
from ..models.batch_summary_counts import BatchSummaryCounts
|
|
107
|
+
from ..models.extraction_terminal_result import ExtractionTerminalResult
|
|
108
|
+
from ..models.job_extraction_schema import JobExtractionSchema
|
|
109
|
+
from ..models.job_failure import JobFailure
|
|
110
|
+
from ..models.job_progress import JobProgress
|
|
111
|
+
from ..models.job_related_extractions_item import JobRelatedExtractionsItem
|
|
112
|
+
from ..models.parsed_document import ParsedDocument
|
|
113
|
+
from ..models.raw_parse_result import RawParseResult
|
|
114
|
+
id = self.id
|
|
115
|
+
|
|
116
|
+
operation = self.operation.value
|
|
117
|
+
|
|
118
|
+
status = self.status.value
|
|
119
|
+
|
|
120
|
+
output_format = self.output_format.value
|
|
121
|
+
|
|
122
|
+
created_at = self.created_at.isoformat()
|
|
123
|
+
|
|
124
|
+
updated_at = self.updated_at.isoformat()
|
|
125
|
+
|
|
126
|
+
pipeline_id: None | str
|
|
127
|
+
pipeline_id = self.pipeline_id
|
|
128
|
+
|
|
129
|
+
pipeline_version: int | None
|
|
130
|
+
pipeline_version = self.pipeline_version
|
|
131
|
+
|
|
132
|
+
progress: dict[str, Any] | Unset = UNSET
|
|
133
|
+
if not isinstance(self.progress, Unset):
|
|
134
|
+
progress = self.progress.to_dict()
|
|
135
|
+
|
|
136
|
+
error: dict[str, Any] | Unset = UNSET
|
|
137
|
+
if not isinstance(self.error, Unset):
|
|
138
|
+
error = self.error.to_dict()
|
|
139
|
+
|
|
140
|
+
result: dict[str, Any] | Unset
|
|
141
|
+
if isinstance(self.result, Unset):
|
|
142
|
+
result = UNSET
|
|
143
|
+
elif isinstance(self.result, ParsedDocument):
|
|
144
|
+
result = self.result.to_dict()
|
|
145
|
+
elif isinstance(self.result, RawParseResult):
|
|
146
|
+
result = self.result.to_dict()
|
|
147
|
+
else:
|
|
148
|
+
result = self.result.to_dict()
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
summary: dict[str, Any] | Unset = UNSET
|
|
152
|
+
if not isinstance(self.summary, Unset):
|
|
153
|
+
summary = self.summary.to_dict()
|
|
154
|
+
|
|
155
|
+
children: dict[str, Any] | Unset = UNSET
|
|
156
|
+
if not isinstance(self.children, Unset):
|
|
157
|
+
children = self.children.to_dict()
|
|
158
|
+
|
|
159
|
+
has_source = self.has_source
|
|
160
|
+
|
|
161
|
+
source_media_type: None | str | Unset
|
|
162
|
+
if isinstance(self.source_media_type, Unset):
|
|
163
|
+
source_media_type = UNSET
|
|
164
|
+
else:
|
|
165
|
+
source_media_type = self.source_media_type
|
|
166
|
+
|
|
167
|
+
source_parse_job_id: None | str | Unset
|
|
168
|
+
if isinstance(self.source_parse_job_id, Unset):
|
|
169
|
+
source_parse_job_id = UNSET
|
|
170
|
+
else:
|
|
171
|
+
source_parse_job_id = self.source_parse_job_id
|
|
172
|
+
|
|
173
|
+
related_extractions: list[dict[str, Any]] | Unset = UNSET
|
|
174
|
+
if not isinstance(self.related_extractions, Unset):
|
|
175
|
+
related_extractions = []
|
|
176
|
+
for related_extractions_item_data in self.related_extractions:
|
|
177
|
+
related_extractions_item = related_extractions_item_data.to_dict()
|
|
178
|
+
related_extractions.append(related_extractions_item)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
extraction_schema: dict[str, Any] | Unset = UNSET
|
|
183
|
+
if not isinstance(self.extraction_schema, Unset):
|
|
184
|
+
extraction_schema = self.extraction_schema.to_dict()
|
|
185
|
+
|
|
186
|
+
ocr_model: None | str | Unset
|
|
187
|
+
if isinstance(self.ocr_model, Unset):
|
|
188
|
+
ocr_model = UNSET
|
|
189
|
+
else:
|
|
190
|
+
ocr_model = self.ocr_model
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
field_dict: dict[str, Any] = {}
|
|
194
|
+
|
|
195
|
+
field_dict.update({
|
|
196
|
+
"id": id,
|
|
197
|
+
"operation": operation,
|
|
198
|
+
"status": status,
|
|
199
|
+
"output_format": output_format,
|
|
200
|
+
"created_at": created_at,
|
|
201
|
+
"updated_at": updated_at,
|
|
202
|
+
"pipeline_id": pipeline_id,
|
|
203
|
+
"pipeline_version": pipeline_version,
|
|
204
|
+
})
|
|
205
|
+
if progress is not UNSET:
|
|
206
|
+
field_dict["progress"] = progress
|
|
207
|
+
if error is not UNSET:
|
|
208
|
+
field_dict["error"] = error
|
|
209
|
+
if result is not UNSET:
|
|
210
|
+
field_dict["result"] = result
|
|
211
|
+
if summary is not UNSET:
|
|
212
|
+
field_dict["summary"] = summary
|
|
213
|
+
if children is not UNSET:
|
|
214
|
+
field_dict["children"] = children
|
|
215
|
+
if has_source is not UNSET:
|
|
216
|
+
field_dict["has_source"] = has_source
|
|
217
|
+
if source_media_type is not UNSET:
|
|
218
|
+
field_dict["source_media_type"] = source_media_type
|
|
219
|
+
if source_parse_job_id is not UNSET:
|
|
220
|
+
field_dict["source_parse_job_id"] = source_parse_job_id
|
|
221
|
+
if related_extractions is not UNSET:
|
|
222
|
+
field_dict["related_extractions"] = related_extractions
|
|
223
|
+
if extraction_schema is not UNSET:
|
|
224
|
+
field_dict["extraction_schema"] = extraction_schema
|
|
225
|
+
if ocr_model is not UNSET:
|
|
226
|
+
field_dict["ocr_model"] = ocr_model
|
|
227
|
+
|
|
228
|
+
return field_dict
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
@classmethod
|
|
233
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
234
|
+
from ..models.batch_child_page import BatchChildPage
|
|
235
|
+
from ..models.batch_summary_counts import BatchSummaryCounts
|
|
236
|
+
from ..models.extraction_terminal_result import ExtractionTerminalResult
|
|
237
|
+
from ..models.job_extraction_schema import JobExtractionSchema
|
|
238
|
+
from ..models.job_failure import JobFailure
|
|
239
|
+
from ..models.job_progress import JobProgress
|
|
240
|
+
from ..models.job_related_extractions_item import JobRelatedExtractionsItem
|
|
241
|
+
from ..models.parsed_document import ParsedDocument
|
|
242
|
+
from ..models.raw_parse_result import RawParseResult
|
|
243
|
+
d = dict(src_dict)
|
|
244
|
+
id = d.pop("id")
|
|
245
|
+
|
|
246
|
+
operation = JobOperation(d.pop("operation"))
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
status = JobStatus(d.pop("status"))
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
output_format = OcrOutputFormat(d.pop("output_format"))
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
created_at = isoparse(d.pop("created_at"))
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
updated_at = isoparse(d.pop("updated_at"))
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def _parse_pipeline_id(data: object) -> None | str:
|
|
272
|
+
if data is None:
|
|
273
|
+
return data
|
|
274
|
+
return cast(None | str, data)
|
|
275
|
+
|
|
276
|
+
pipeline_id = _parse_pipeline_id(d.pop("pipeline_id"))
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _parse_pipeline_version(data: object) -> int | None:
|
|
280
|
+
if data is None:
|
|
281
|
+
return data
|
|
282
|
+
return cast(int | None, data)
|
|
283
|
+
|
|
284
|
+
pipeline_version = _parse_pipeline_version(d.pop("pipeline_version"))
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
_progress = d.pop("progress", UNSET)
|
|
288
|
+
progress: JobProgress | Unset
|
|
289
|
+
if isinstance(_progress, Unset):
|
|
290
|
+
progress = UNSET
|
|
291
|
+
else:
|
|
292
|
+
progress = JobProgress.from_dict(_progress)
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
_error = d.pop("error", UNSET)
|
|
298
|
+
error: JobFailure | Unset
|
|
299
|
+
if isinstance(_error, Unset):
|
|
300
|
+
error = UNSET
|
|
301
|
+
else:
|
|
302
|
+
error = JobFailure.from_dict(_error)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
def _parse_result(data: object) -> ExtractionTerminalResult | ParsedDocument | RawParseResult | Unset:
|
|
308
|
+
if isinstance(data, Unset):
|
|
309
|
+
return data
|
|
310
|
+
try:
|
|
311
|
+
if not isinstance(data, dict):
|
|
312
|
+
raise TypeError()
|
|
313
|
+
result_type_0 = ParsedDocument.from_dict(data)
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
return result_type_0
|
|
318
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
319
|
+
pass
|
|
320
|
+
try:
|
|
321
|
+
if not isinstance(data, dict):
|
|
322
|
+
raise TypeError()
|
|
323
|
+
result_type_1 = RawParseResult.from_dict(data)
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
return result_type_1
|
|
328
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
329
|
+
pass
|
|
330
|
+
if not isinstance(data, dict):
|
|
331
|
+
raise TypeError()
|
|
332
|
+
result_type_2 = ExtractionTerminalResult.from_dict(data)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
return result_type_2
|
|
337
|
+
|
|
338
|
+
result = _parse_result(d.pop("result", UNSET))
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
_summary = d.pop("summary", UNSET)
|
|
342
|
+
summary: BatchSummaryCounts | Unset
|
|
343
|
+
if isinstance(_summary, Unset):
|
|
344
|
+
summary = UNSET
|
|
345
|
+
else:
|
|
346
|
+
summary = BatchSummaryCounts.from_dict(_summary)
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
_children = d.pop("children", UNSET)
|
|
352
|
+
children: BatchChildPage | Unset
|
|
353
|
+
if isinstance(_children, Unset):
|
|
354
|
+
children = UNSET
|
|
355
|
+
else:
|
|
356
|
+
children = BatchChildPage.from_dict(_children)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
has_source = d.pop("has_source", UNSET)
|
|
362
|
+
|
|
363
|
+
def _parse_source_media_type(data: object) -> None | str | Unset:
|
|
364
|
+
if data is None:
|
|
365
|
+
return data
|
|
366
|
+
if isinstance(data, Unset):
|
|
367
|
+
return data
|
|
368
|
+
return cast(None | str | Unset, data)
|
|
369
|
+
|
|
370
|
+
source_media_type = _parse_source_media_type(d.pop("source_media_type", UNSET))
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
def _parse_source_parse_job_id(data: object) -> None | str | Unset:
|
|
374
|
+
if data is None:
|
|
375
|
+
return data
|
|
376
|
+
if isinstance(data, Unset):
|
|
377
|
+
return data
|
|
378
|
+
return cast(None | str | Unset, data)
|
|
379
|
+
|
|
380
|
+
source_parse_job_id = _parse_source_parse_job_id(d.pop("source_parse_job_id", UNSET))
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
_related_extractions = d.pop("related_extractions", UNSET)
|
|
384
|
+
related_extractions: list[JobRelatedExtractionsItem] | Unset = UNSET
|
|
385
|
+
if _related_extractions is not UNSET:
|
|
386
|
+
related_extractions = []
|
|
387
|
+
for related_extractions_item_data in _related_extractions:
|
|
388
|
+
related_extractions_item = JobRelatedExtractionsItem.from_dict(related_extractions_item_data)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
related_extractions.append(related_extractions_item)
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
_extraction_schema = d.pop("extraction_schema", UNSET)
|
|
396
|
+
extraction_schema: JobExtractionSchema | Unset
|
|
397
|
+
if isinstance(_extraction_schema, Unset):
|
|
398
|
+
extraction_schema = UNSET
|
|
399
|
+
else:
|
|
400
|
+
extraction_schema = JobExtractionSchema.from_dict(_extraction_schema)
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def _parse_ocr_model(data: object) -> None | str | Unset:
|
|
406
|
+
if data is None:
|
|
407
|
+
return data
|
|
408
|
+
if isinstance(data, Unset):
|
|
409
|
+
return data
|
|
410
|
+
return cast(None | str | Unset, data)
|
|
411
|
+
|
|
412
|
+
ocr_model = _parse_ocr_model(d.pop("ocr_model", UNSET))
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
job = cls(
|
|
416
|
+
id=id,
|
|
417
|
+
operation=operation,
|
|
418
|
+
status=status,
|
|
419
|
+
output_format=output_format,
|
|
420
|
+
created_at=created_at,
|
|
421
|
+
updated_at=updated_at,
|
|
422
|
+
pipeline_id=pipeline_id,
|
|
423
|
+
pipeline_version=pipeline_version,
|
|
424
|
+
progress=progress,
|
|
425
|
+
error=error,
|
|
426
|
+
result=result,
|
|
427
|
+
summary=summary,
|
|
428
|
+
children=children,
|
|
429
|
+
has_source=has_source,
|
|
430
|
+
source_media_type=source_media_type,
|
|
431
|
+
source_parse_job_id=source_parse_job_id,
|
|
432
|
+
related_extractions=related_extractions,
|
|
433
|
+
extraction_schema=extraction_schema,
|
|
434
|
+
ocr_model=ocr_model,
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
return job
|
|
@@ -0,0 +1,131 @@
|
|
|
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.job_accepted_operation import JobAcceptedOperation
|
|
12
|
+
from ..models.job_status import JobStatus
|
|
13
|
+
from ..models.ocr_output_format import OcrOutputFormat
|
|
14
|
+
from dateutil.parser import isoparse
|
|
15
|
+
from typing import cast
|
|
16
|
+
import datetime
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
T = TypeVar("T", bound="JobAccepted")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@_attrs_define
|
|
28
|
+
class JobAccepted:
|
|
29
|
+
"""
|
|
30
|
+
Attributes:
|
|
31
|
+
id (str): Prefixed public id for an OCR job (`opj_…`). Example: opj_V1StGXR8_Z5jdHi6B-myT.
|
|
32
|
+
operation (JobAcceptedOperation):
|
|
33
|
+
status (JobStatus): Durable job status. For batch parent jobs, status is derived from children after each
|
|
34
|
+
child transition:
|
|
35
|
+
1. If any child is non-terminal, the parent remains `queued` only while every child is
|
|
36
|
+
queued; it becomes `running` once any child is running or terminal.
|
|
37
|
+
2. When every child is terminal and any child is `indeterminate`, the parent is
|
|
38
|
+
`indeterminate`.
|
|
39
|
+
3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
|
|
40
|
+
the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
|
|
41
|
+
success/failure closes as parent `succeeded` while preserving failed children in
|
|
42
|
+
summaries).
|
|
43
|
+
4. When every child is `succeeded`, the parent is `succeeded`.
|
|
44
|
+
|
|
45
|
+
Partial failures are always retained on child summaries; parent status does not drop
|
|
46
|
+
failed children from results.
|
|
47
|
+
output_format (OcrOutputFormat):
|
|
48
|
+
created_at (datetime.datetime):
|
|
49
|
+
updated_at (datetime.datetime):
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
id: str
|
|
53
|
+
operation: JobAcceptedOperation
|
|
54
|
+
status: JobStatus
|
|
55
|
+
output_format: OcrOutputFormat
|
|
56
|
+
created_at: datetime.datetime
|
|
57
|
+
updated_at: datetime.datetime
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def to_dict(self) -> dict[str, Any]:
|
|
64
|
+
id = self.id
|
|
65
|
+
|
|
66
|
+
operation = self.operation.value
|
|
67
|
+
|
|
68
|
+
status = self.status.value
|
|
69
|
+
|
|
70
|
+
output_format = self.output_format.value
|
|
71
|
+
|
|
72
|
+
created_at = self.created_at.isoformat()
|
|
73
|
+
|
|
74
|
+
updated_at = self.updated_at.isoformat()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
field_dict: dict[str, Any] = {}
|
|
78
|
+
|
|
79
|
+
field_dict.update({
|
|
80
|
+
"id": id,
|
|
81
|
+
"operation": operation,
|
|
82
|
+
"status": status,
|
|
83
|
+
"output_format": output_format,
|
|
84
|
+
"created_at": created_at,
|
|
85
|
+
"updated_at": updated_at,
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
return field_dict
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@classmethod
|
|
93
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
94
|
+
d = dict(src_dict)
|
|
95
|
+
id = d.pop("id")
|
|
96
|
+
|
|
97
|
+
operation = JobAcceptedOperation(d.pop("operation"))
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
status = JobStatus(d.pop("status"))
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
output_format = OcrOutputFormat(d.pop("output_format"))
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
created_at = isoparse(d.pop("created_at"))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
updated_at = isoparse(d.pop("updated_at"))
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
job_accepted = cls(
|
|
123
|
+
id=id,
|
|
124
|
+
operation=operation,
|
|
125
|
+
status=status,
|
|
126
|
+
output_format=output_format,
|
|
127
|
+
created_at=created_at,
|
|
128
|
+
updated_at=updated_at,
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
return job_accepted
|
|
@@ -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="JobExtractionSchema")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class JobExtractionSchema:
|
|
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
|
+
job_extraction_schema = cls(
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
job_extraction_schema.additional_properties = d
|
|
49
|
+
return job_extraction_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
|