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,139 @@
|
|
|
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.batch_job_accepted_operation import BatchJobAcceptedOperation
|
|
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="BatchJobAccepted")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@_attrs_define
|
|
28
|
+
class BatchJobAccepted:
|
|
29
|
+
"""
|
|
30
|
+
Attributes:
|
|
31
|
+
id (str): Prefixed public id for an OCR job (`opj_…`). Example: opj_V1StGXR8_Z5jdHi6B-myT.
|
|
32
|
+
operation (BatchJobAcceptedOperation):
|
|
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
|
+
child_count (int):
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
id: str
|
|
54
|
+
operation: BatchJobAcceptedOperation
|
|
55
|
+
status: JobStatus
|
|
56
|
+
output_format: OcrOutputFormat
|
|
57
|
+
created_at: datetime.datetime
|
|
58
|
+
updated_at: datetime.datetime
|
|
59
|
+
child_count: int
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def to_dict(self) -> dict[str, Any]:
|
|
66
|
+
id = self.id
|
|
67
|
+
|
|
68
|
+
operation = self.operation.value
|
|
69
|
+
|
|
70
|
+
status = self.status.value
|
|
71
|
+
|
|
72
|
+
output_format = self.output_format.value
|
|
73
|
+
|
|
74
|
+
created_at = self.created_at.isoformat()
|
|
75
|
+
|
|
76
|
+
updated_at = self.updated_at.isoformat()
|
|
77
|
+
|
|
78
|
+
child_count = self.child_count
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
field_dict: dict[str, Any] = {}
|
|
82
|
+
|
|
83
|
+
field_dict.update({
|
|
84
|
+
"id": id,
|
|
85
|
+
"operation": operation,
|
|
86
|
+
"status": status,
|
|
87
|
+
"output_format": output_format,
|
|
88
|
+
"created_at": created_at,
|
|
89
|
+
"updated_at": updated_at,
|
|
90
|
+
"child_count": child_count,
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
return field_dict
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@classmethod
|
|
98
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
99
|
+
d = dict(src_dict)
|
|
100
|
+
id = d.pop("id")
|
|
101
|
+
|
|
102
|
+
operation = BatchJobAcceptedOperation(d.pop("operation"))
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
status = JobStatus(d.pop("status"))
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
output_format = OcrOutputFormat(d.pop("output_format"))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
created_at = isoparse(d.pop("created_at"))
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
updated_at = isoparse(d.pop("updated_at"))
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
child_count = d.pop("child_count")
|
|
128
|
+
|
|
129
|
+
batch_job_accepted = cls(
|
|
130
|
+
id=id,
|
|
131
|
+
operation=operation,
|
|
132
|
+
status=status,
|
|
133
|
+
output_format=output_format,
|
|
134
|
+
created_at=created_at,
|
|
135
|
+
updated_at=updated_at,
|
|
136
|
+
child_count=child_count,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
return batch_job_accepted
|
|
@@ -0,0 +1,97 @@
|
|
|
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="BatchSummaryCounts")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class BatchSummaryCounts:
|
|
23
|
+
"""
|
|
24
|
+
Attributes:
|
|
25
|
+
total (int):
|
|
26
|
+
queued (int):
|
|
27
|
+
running (int):
|
|
28
|
+
succeeded (int):
|
|
29
|
+
failed (int):
|
|
30
|
+
indeterminate (int):
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
total: int
|
|
34
|
+
queued: int
|
|
35
|
+
running: int
|
|
36
|
+
succeeded: int
|
|
37
|
+
failed: int
|
|
38
|
+
indeterminate: int
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def to_dict(self) -> dict[str, Any]:
|
|
45
|
+
total = self.total
|
|
46
|
+
|
|
47
|
+
queued = self.queued
|
|
48
|
+
|
|
49
|
+
running = self.running
|
|
50
|
+
|
|
51
|
+
succeeded = self.succeeded
|
|
52
|
+
|
|
53
|
+
failed = self.failed
|
|
54
|
+
|
|
55
|
+
indeterminate = self.indeterminate
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
field_dict: dict[str, Any] = {}
|
|
59
|
+
|
|
60
|
+
field_dict.update({
|
|
61
|
+
"total": total,
|
|
62
|
+
"queued": queued,
|
|
63
|
+
"running": running,
|
|
64
|
+
"succeeded": succeeded,
|
|
65
|
+
"failed": failed,
|
|
66
|
+
"indeterminate": indeterminate,
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
return field_dict
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@classmethod
|
|
74
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
75
|
+
d = dict(src_dict)
|
|
76
|
+
total = d.pop("total")
|
|
77
|
+
|
|
78
|
+
queued = d.pop("queued")
|
|
79
|
+
|
|
80
|
+
running = d.pop("running")
|
|
81
|
+
|
|
82
|
+
succeeded = d.pop("succeeded")
|
|
83
|
+
|
|
84
|
+
failed = d.pop("failed")
|
|
85
|
+
|
|
86
|
+
indeterminate = d.pop("indeterminate")
|
|
87
|
+
|
|
88
|
+
batch_summary_counts = cls(
|
|
89
|
+
total=total,
|
|
90
|
+
queued=queued,
|
|
91
|
+
running=running,
|
|
92
|
+
succeeded=succeeded,
|
|
93
|
+
failed=failed,
|
|
94
|
+
indeterminate=indeterminate,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
return batch_summary_counts
|
|
@@ -0,0 +1,82 @@
|
|
|
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="BoundingBox")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class BoundingBox:
|
|
23
|
+
""" Axis-aligned integer page coordinates with exclusive right and bottom edges.
|
|
24
|
+
|
|
25
|
+
Attributes:
|
|
26
|
+
left (int):
|
|
27
|
+
top (int):
|
|
28
|
+
right (int):
|
|
29
|
+
bottom (int):
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
left: int
|
|
33
|
+
top: int
|
|
34
|
+
right: int
|
|
35
|
+
bottom: int
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def to_dict(self) -> dict[str, Any]:
|
|
42
|
+
left = self.left
|
|
43
|
+
|
|
44
|
+
top = self.top
|
|
45
|
+
|
|
46
|
+
right = self.right
|
|
47
|
+
|
|
48
|
+
bottom = self.bottom
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
field_dict: dict[str, Any] = {}
|
|
52
|
+
|
|
53
|
+
field_dict.update({
|
|
54
|
+
"left": left,
|
|
55
|
+
"top": top,
|
|
56
|
+
"right": right,
|
|
57
|
+
"bottom": bottom,
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
return field_dict
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@classmethod
|
|
65
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
66
|
+
d = dict(src_dict)
|
|
67
|
+
left = d.pop("left")
|
|
68
|
+
|
|
69
|
+
top = d.pop("top")
|
|
70
|
+
|
|
71
|
+
right = d.pop("right")
|
|
72
|
+
|
|
73
|
+
bottom = d.pop("bottom")
|
|
74
|
+
|
|
75
|
+
bounding_box = cls(
|
|
76
|
+
left=left,
|
|
77
|
+
top=top,
|
|
78
|
+
right=right,
|
|
79
|
+
bottom=bottom,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
return bounding_box
|
|
@@ -0,0 +1,97 @@
|
|
|
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 typing import cast
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ..models.bounding_box import BoundingBox
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
T = TypeVar("T", bound="ChunkProvenanceSpan")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@_attrs_define
|
|
25
|
+
class ChunkProvenanceSpan:
|
|
26
|
+
"""
|
|
27
|
+
Attributes:
|
|
28
|
+
start_char (int):
|
|
29
|
+
end_char (int):
|
|
30
|
+
page_number (int):
|
|
31
|
+
bbox (BoundingBox): Axis-aligned integer page coordinates with exclusive right and bottom edges.
|
|
32
|
+
region_id (str):
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
start_char: int
|
|
36
|
+
end_char: int
|
|
37
|
+
page_number: int
|
|
38
|
+
bbox: BoundingBox
|
|
39
|
+
region_id: str
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def to_dict(self) -> dict[str, Any]:
|
|
46
|
+
from ..models.bounding_box import BoundingBox
|
|
47
|
+
start_char = self.start_char
|
|
48
|
+
|
|
49
|
+
end_char = self.end_char
|
|
50
|
+
|
|
51
|
+
page_number = self.page_number
|
|
52
|
+
|
|
53
|
+
bbox = self.bbox.to_dict()
|
|
54
|
+
|
|
55
|
+
region_id = self.region_id
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
field_dict: dict[str, Any] = {}
|
|
59
|
+
|
|
60
|
+
field_dict.update({
|
|
61
|
+
"start_char": start_char,
|
|
62
|
+
"end_char": end_char,
|
|
63
|
+
"page_number": page_number,
|
|
64
|
+
"bbox": bbox,
|
|
65
|
+
"region_id": region_id,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
return field_dict
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@classmethod
|
|
73
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
74
|
+
from ..models.bounding_box import BoundingBox
|
|
75
|
+
d = dict(src_dict)
|
|
76
|
+
start_char = d.pop("start_char")
|
|
77
|
+
|
|
78
|
+
end_char = d.pop("end_char")
|
|
79
|
+
|
|
80
|
+
page_number = d.pop("page_number")
|
|
81
|
+
|
|
82
|
+
bbox = BoundingBox.from_dict(d.pop("bbox"))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
region_id = d.pop("region_id")
|
|
88
|
+
|
|
89
|
+
chunk_provenance_span = cls(
|
|
90
|
+
start_char=start_char,
|
|
91
|
+
end_char=end_char,
|
|
92
|
+
page_number=page_number,
|
|
93
|
+
bbox=bbox,
|
|
94
|
+
region_id=region_id,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
return chunk_provenance_span
|
|
@@ -0,0 +1,177 @@
|
|
|
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.create_extraction_pipeline_request_grounding import CreateExtractionPipelineRequestGrounding
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
from typing import cast
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from ..models.create_extraction_pipeline_request_llm_options import CreateExtractionPipelineRequestLlmOptions
|
|
17
|
+
from ..models.create_extraction_pipeline_request_ocr_options import CreateExtractionPipelineRequestOcrOptions
|
|
18
|
+
from ..models.create_extraction_pipeline_request_schema import CreateExtractionPipelineRequestSchema
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
T = TypeVar("T", bound="CreateExtractionPipelineRequest")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@_attrs_define
|
|
29
|
+
class CreateExtractionPipelineRequest:
|
|
30
|
+
""" Create a tenant-scoped saved extraction configuration.
|
|
31
|
+
|
|
32
|
+
Attributes:
|
|
33
|
+
name (str):
|
|
34
|
+
ocr_model (str):
|
|
35
|
+
llm_model (str):
|
|
36
|
+
schema (CreateExtractionPipelineRequestSchema): JSON Schema object describing fields to extract. Root must be an
|
|
37
|
+
object schema with
|
|
38
|
+
explicit `properties` and at least one named property. Admission applies the same
|
|
39
|
+
strict structured-output normalization as extract.
|
|
40
|
+
slug (str | Unset):
|
|
41
|
+
ocr_options (CreateExtractionPipelineRequestOcrOptions | Unset):
|
|
42
|
+
llm_options (CreateExtractionPipelineRequestLlmOptions | Unset):
|
|
43
|
+
repair_attempts (int | Unset):
|
|
44
|
+
grounding (CreateExtractionPipelineRequestGrounding | Unset):
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
name: str
|
|
48
|
+
ocr_model: str
|
|
49
|
+
llm_model: str
|
|
50
|
+
schema: CreateExtractionPipelineRequestSchema
|
|
51
|
+
slug: str | Unset = UNSET
|
|
52
|
+
ocr_options: CreateExtractionPipelineRequestOcrOptions | Unset = UNSET
|
|
53
|
+
llm_options: CreateExtractionPipelineRequestLlmOptions | Unset = UNSET
|
|
54
|
+
repair_attempts: int | Unset = UNSET
|
|
55
|
+
grounding: CreateExtractionPipelineRequestGrounding | Unset = UNSET
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def to_dict(self) -> dict[str, Any]:
|
|
62
|
+
from ..models.create_extraction_pipeline_request_llm_options import CreateExtractionPipelineRequestLlmOptions
|
|
63
|
+
from ..models.create_extraction_pipeline_request_ocr_options import CreateExtractionPipelineRequestOcrOptions
|
|
64
|
+
from ..models.create_extraction_pipeline_request_schema import CreateExtractionPipelineRequestSchema
|
|
65
|
+
name = self.name
|
|
66
|
+
|
|
67
|
+
ocr_model = self.ocr_model
|
|
68
|
+
|
|
69
|
+
llm_model = self.llm_model
|
|
70
|
+
|
|
71
|
+
schema = self.schema.to_dict()
|
|
72
|
+
|
|
73
|
+
slug = self.slug
|
|
74
|
+
|
|
75
|
+
ocr_options: dict[str, Any] | Unset = UNSET
|
|
76
|
+
if not isinstance(self.ocr_options, Unset):
|
|
77
|
+
ocr_options = self.ocr_options.to_dict()
|
|
78
|
+
|
|
79
|
+
llm_options: dict[str, Any] | Unset = UNSET
|
|
80
|
+
if not isinstance(self.llm_options, Unset):
|
|
81
|
+
llm_options = self.llm_options.to_dict()
|
|
82
|
+
|
|
83
|
+
repair_attempts = self.repair_attempts
|
|
84
|
+
|
|
85
|
+
grounding: str | Unset = UNSET
|
|
86
|
+
if not isinstance(self.grounding, Unset):
|
|
87
|
+
grounding = self.grounding.value
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
field_dict: dict[str, Any] = {}
|
|
92
|
+
|
|
93
|
+
field_dict.update({
|
|
94
|
+
"name": name,
|
|
95
|
+
"ocr_model": ocr_model,
|
|
96
|
+
"llm_model": llm_model,
|
|
97
|
+
"schema": schema,
|
|
98
|
+
})
|
|
99
|
+
if slug is not UNSET:
|
|
100
|
+
field_dict["slug"] = slug
|
|
101
|
+
if ocr_options is not UNSET:
|
|
102
|
+
field_dict["ocr_options"] = ocr_options
|
|
103
|
+
if llm_options is not UNSET:
|
|
104
|
+
field_dict["llm_options"] = llm_options
|
|
105
|
+
if repair_attempts is not UNSET:
|
|
106
|
+
field_dict["repair_attempts"] = repair_attempts
|
|
107
|
+
if grounding is not UNSET:
|
|
108
|
+
field_dict["grounding"] = grounding
|
|
109
|
+
|
|
110
|
+
return field_dict
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
116
|
+
from ..models.create_extraction_pipeline_request_llm_options import CreateExtractionPipelineRequestLlmOptions
|
|
117
|
+
from ..models.create_extraction_pipeline_request_ocr_options import CreateExtractionPipelineRequestOcrOptions
|
|
118
|
+
from ..models.create_extraction_pipeline_request_schema import CreateExtractionPipelineRequestSchema
|
|
119
|
+
d = dict(src_dict)
|
|
120
|
+
name = d.pop("name")
|
|
121
|
+
|
|
122
|
+
ocr_model = d.pop("ocr_model")
|
|
123
|
+
|
|
124
|
+
llm_model = d.pop("llm_model")
|
|
125
|
+
|
|
126
|
+
schema = CreateExtractionPipelineRequestSchema.from_dict(d.pop("schema"))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
slug = d.pop("slug", UNSET)
|
|
132
|
+
|
|
133
|
+
_ocr_options = d.pop("ocr_options", UNSET)
|
|
134
|
+
ocr_options: CreateExtractionPipelineRequestOcrOptions | Unset
|
|
135
|
+
if isinstance(_ocr_options, Unset):
|
|
136
|
+
ocr_options = UNSET
|
|
137
|
+
else:
|
|
138
|
+
ocr_options = CreateExtractionPipelineRequestOcrOptions.from_dict(_ocr_options)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
_llm_options = d.pop("llm_options", UNSET)
|
|
144
|
+
llm_options: CreateExtractionPipelineRequestLlmOptions | Unset
|
|
145
|
+
if isinstance(_llm_options, Unset):
|
|
146
|
+
llm_options = UNSET
|
|
147
|
+
else:
|
|
148
|
+
llm_options = CreateExtractionPipelineRequestLlmOptions.from_dict(_llm_options)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
repair_attempts = d.pop("repair_attempts", UNSET)
|
|
154
|
+
|
|
155
|
+
_grounding = d.pop("grounding", UNSET)
|
|
156
|
+
grounding: CreateExtractionPipelineRequestGrounding | Unset
|
|
157
|
+
if isinstance(_grounding, Unset):
|
|
158
|
+
grounding = UNSET
|
|
159
|
+
else:
|
|
160
|
+
grounding = CreateExtractionPipelineRequestGrounding(_grounding)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
create_extraction_pipeline_request = cls(
|
|
166
|
+
name=name,
|
|
167
|
+
ocr_model=ocr_model,
|
|
168
|
+
llm_model=llm_model,
|
|
169
|
+
schema=schema,
|
|
170
|
+
slug=slug,
|
|
171
|
+
ocr_options=ocr_options,
|
|
172
|
+
llm_options=llm_options,
|
|
173
|
+
repair_attempts=repair_attempts,
|
|
174
|
+
grounding=grounding,
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
return create_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.create_extraction_pipeline_request_llm_options_reasoning_effort_type_1 import CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1
|
|
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="CreateExtractionPipelineRequestLlmOptions")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class CreateExtractionPipelineRequestLlmOptions:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
reasoning_effort (CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1 | Literal['auto'] | Unset):
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
reasoning_effort: CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1 | 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, CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1):
|
|
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) -> CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1 | 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 = CreateExtractionPipelineRequestLlmOptionsReasoningEffortType1(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
|
+
create_extraction_pipeline_request_llm_options = cls(
|
|
81
|
+
reasoning_effort=reasoning_effort,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
return create_extraction_pipeline_request_llm_options
|