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.
Files changed (173) hide show
  1. openparser/__init__.py +54 -0
  2. openparser/_files.py +43 -0
  3. openparser/_generated/__init__.py +8 -0
  4. openparser/_generated/api/__init__.py +1 -0
  5. openparser/_generated/api/extract/__init__.py +1 -0
  6. openparser/_generated/api/extract/extract_async.py +280 -0
  7. openparser/_generated/api/extract/extract_batch.py +284 -0
  8. openparser/_generated/api/extract/extract_sync.py +315 -0
  9. openparser/_generated/api/extract/suggest_schema.py +260 -0
  10. openparser/_generated/api/files/__init__.py +1 -0
  11. openparser/_generated/api/files/create_file.py +237 -0
  12. openparser/_generated/api/files/delete_file.py +200 -0
  13. openparser/_generated/api/files/get_file.py +200 -0
  14. openparser/_generated/api/files/get_file_content.py +198 -0
  15. openparser/_generated/api/jobs/__init__.py +1 -0
  16. openparser/_generated/api/jobs/get_job.py +261 -0
  17. openparser/_generated/api/jobs/get_job_result.py +305 -0
  18. openparser/_generated/api/jobs/get_job_source.py +233 -0
  19. openparser/_generated/api/jobs/list_jobs.py +340 -0
  20. openparser/_generated/api/models/__init__.py +1 -0
  21. openparser/_generated/api/models/list_llm_models.py +288 -0
  22. openparser/_generated/api/models/list_ocr_models.py +184 -0
  23. openparser/_generated/api/parse/__init__.py +1 -0
  24. openparser/_generated/api/parse/parse_async.py +316 -0
  25. openparser/_generated/api/parse/parse_batch.py +280 -0
  26. openparser/_generated/api/parse/parse_sync.py +369 -0
  27. openparser/_generated/api/pipelines/__init__.py +1 -0
  28. openparser/_generated/api/pipelines/create_extraction_pipeline.py +242 -0
  29. openparser/_generated/api/pipelines/delete_extraction_pipeline.py +212 -0
  30. openparser/_generated/api/pipelines/get_extraction_pipeline.py +212 -0
  31. openparser/_generated/api/pipelines/list_extraction_pipelines.py +180 -0
  32. openparser/_generated/api/pipelines/update_extraction_pipeline.py +258 -0
  33. openparser/_generated/client.py +270 -0
  34. openparser/_generated/errors.py +14 -0
  35. openparser/_generated/models/__init__.py +261 -0
  36. openparser/_generated/models/batch_child_page.py +97 -0
  37. openparser/_generated/models/batch_child_summary.py +195 -0
  38. openparser/_generated/models/batch_job_accepted.py +139 -0
  39. openparser/_generated/models/batch_job_accepted_operation.py +8 -0
  40. openparser/_generated/models/batch_summary_counts.py +97 -0
  41. openparser/_generated/models/bounding_box.py +82 -0
  42. openparser/_generated/models/chunk_provenance_span.py +97 -0
  43. openparser/_generated/models/content_kind.py +10 -0
  44. openparser/_generated/models/create_extraction_pipeline_request.py +177 -0
  45. openparser/_generated/models/create_extraction_pipeline_request_grounding.py +8 -0
  46. openparser/_generated/models/create_extraction_pipeline_request_llm_options.py +84 -0
  47. openparser/_generated/models/create_extraction_pipeline_request_llm_options_reasoning_effort_type_1.py +13 -0
  48. openparser/_generated/models/create_extraction_pipeline_request_ocr_options.py +78 -0
  49. openparser/_generated/models/create_extraction_pipeline_request_schema.py +68 -0
  50. openparser/_generated/models/create_file_body.py +78 -0
  51. openparser/_generated/models/delete_extraction_pipeline_response.py +66 -0
  52. openparser/_generated/models/delete_file_response.py +57 -0
  53. openparser/_generated/models/error_body.py +106 -0
  54. openparser/_generated/models/error_body_details.py +65 -0
  55. openparser/_generated/models/error_response.py +65 -0
  56. openparser/_generated/models/extract_async_body.py +136 -0
  57. openparser/_generated/models/extract_batch_body.py +143 -0
  58. openparser/_generated/models/extract_batch_item.py +207 -0
  59. openparser/_generated/models/extract_batch_item_grounding.py +8 -0
  60. openparser/_generated/models/extract_batch_item_llm_options.py +84 -0
  61. openparser/_generated/models/extract_batch_item_llm_options_reasoning_effort_type_1.py +13 -0
  62. openparser/_generated/models/extract_batch_item_ocr_options.py +78 -0
  63. openparser/_generated/models/extract_batch_item_schema.py +65 -0
  64. openparser/_generated/models/extract_batch_request.py +99 -0
  65. openparser/_generated/models/extract_batch_request_items_item.py +201 -0
  66. openparser/_generated/models/extract_batch_request_items_item_grounding.py +8 -0
  67. openparser/_generated/models/extract_batch_request_items_item_llm_options.py +84 -0
  68. openparser/_generated/models/extract_batch_request_items_item_llm_options_reasoning_effort_type_1.py +13 -0
  69. openparser/_generated/models/extract_batch_request_items_item_ocr_options.py +78 -0
  70. openparser/_generated/models/extract_batch_request_items_item_schema.py +65 -0
  71. openparser/_generated/models/extract_batch_request_output_format.py +8 -0
  72. openparser/_generated/models/extract_request.py +226 -0
  73. openparser/_generated/models/extract_request_grounding.py +8 -0
  74. openparser/_generated/models/extract_request_llm_options.py +84 -0
  75. openparser/_generated/models/extract_request_llm_options_reasoning_effort_type_1.py +13 -0
  76. openparser/_generated/models/extract_request_ocr_options.py +78 -0
  77. openparser/_generated/models/extract_request_output_format.py +8 -0
  78. openparser/_generated/models/extract_request_schema.py +65 -0
  79. openparser/_generated/models/extract_sync_body.py +136 -0
  80. openparser/_generated/models/extraction_attempt.py +122 -0
  81. openparser/_generated/models/extraction_attempt_kind.py +8 -0
  82. openparser/_generated/models/extraction_attempt_status.py +9 -0
  83. openparser/_generated/models/extraction_chunk.py +184 -0
  84. openparser/_generated/models/extraction_citation.py +169 -0
  85. openparser/_generated/models/extraction_citation_granularity.py +8 -0
  86. openparser/_generated/models/extraction_citation_source_type.py +16 -0
  87. openparser/_generated/models/extraction_grounding_field.py +102 -0
  88. openparser/_generated/models/extraction_grounding_mode.py +8 -0
  89. openparser/_generated/models/extraction_grounding_result.py +87 -0
  90. openparser/_generated/models/extraction_pipeline.py +201 -0
  91. openparser/_generated/models/extraction_pipeline_list_response.py +76 -0
  92. openparser/_generated/models/extraction_pipeline_llm_options.py +84 -0
  93. openparser/_generated/models/extraction_pipeline_llm_options_reasoning_effort_type_0_type_1.py +13 -0
  94. openparser/_generated/models/extraction_pipeline_ocr_options.py +73 -0
  95. openparser/_generated/models/extraction_pipeline_schema.py +67 -0
  96. openparser/_generated/models/extraction_terminal_result.py +206 -0
  97. openparser/_generated/models/extraction_terminal_result_reasoning_effort_type_0.py +13 -0
  98. openparser/_generated/models/extraction_usage_totals.py +80 -0
  99. openparser/_generated/models/job.py +437 -0
  100. openparser/_generated/models/job_accepted.py +131 -0
  101. openparser/_generated/models/job_accepted_operation.py +8 -0
  102. openparser/_generated/models/job_extraction_schema.py +65 -0
  103. openparser/_generated/models/job_failure.py +98 -0
  104. openparser/_generated/models/job_failure_details.py +65 -0
  105. openparser/_generated/models/job_list_response.py +91 -0
  106. openparser/_generated/models/job_operation.py +10 -0
  107. openparser/_generated/models/job_progress.py +68 -0
  108. openparser/_generated/models/job_related_extractions_item.py +145 -0
  109. openparser/_generated/models/job_status.py +11 -0
  110. openparser/_generated/models/job_summary.py +264 -0
  111. openparser/_generated/models/json_schema_object.py +66 -0
  112. openparser/_generated/models/list_llm_models_mode.py +8 -0
  113. openparser/_generated/models/ocr_llm_model_catalog_entry.py +257 -0
  114. openparser/_generated/models/ocr_llm_model_catalog_entry_pricing.py +76 -0
  115. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0.py +134 -0
  116. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_default_effort_type_0.py +13 -0
  117. openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_supported_efforts_type_0_item.py +13 -0
  118. openparser/_generated/models/ocr_llm_model_catalog_entry_recommendation.py +8 -0
  119. openparser/_generated/models/ocr_llm_models_response.py +150 -0
  120. openparser/_generated/models/ocr_llm_models_response_mode.py +8 -0
  121. openparser/_generated/models/ocr_model.py +7 -0
  122. openparser/_generated/models/ocr_model_catalog_entry.py +131 -0
  123. openparser/_generated/models/ocr_model_catalog_entry_availability.py +9 -0
  124. openparser/_generated/models/ocr_model_catalog_entry_capabilities.py +97 -0
  125. openparser/_generated/models/ocr_model_catalog_entry_capabilities_options.py +73 -0
  126. openparser/_generated/models/ocr_model_catalog_entry_option_defaults.py +73 -0
  127. openparser/_generated/models/ocr_model_catalog_entry_pricing.py +68 -0
  128. openparser/_generated/models/ocr_models_response.py +76 -0
  129. openparser/_generated/models/ocr_output_format.py +8 -0
  130. openparser/_generated/models/paddle_raw_profile.py +76 -0
  131. openparser/_generated/models/paddle_raw_profile_options.py +115 -0
  132. openparser/_generated/models/page_block.py +332 -0
  133. openparser/_generated/models/page_block_kind.py +9 -0
  134. openparser/_generated/models/page_block_polygon_type_0_item.py +65 -0
  135. openparser/_generated/models/parse_async_body.py +133 -0
  136. openparser/_generated/models/parse_batch_body.py +143 -0
  137. openparser/_generated/models/parse_batch_item.py +109 -0
  138. openparser/_generated/models/parse_batch_item_ocr_options.py +78 -0
  139. openparser/_generated/models/parse_batch_request.py +100 -0
  140. openparser/_generated/models/parse_batch_request_items_item.py +108 -0
  141. openparser/_generated/models/parse_batch_request_items_item_ocr_options.py +78 -0
  142. openparser/_generated/models/parse_batch_request_output_format.py +8 -0
  143. openparser/_generated/models/parse_request.py +112 -0
  144. openparser/_generated/models/parse_request_ocr_options.py +78 -0
  145. openparser/_generated/models/parse_request_output_format.py +8 -0
  146. openparser/_generated/models/parse_sync_body.py +133 -0
  147. openparser/_generated/models/parsed_document.py +187 -0
  148. openparser/_generated/models/public_file.py +117 -0
  149. openparser/_generated/models/raw_parse_result.py +110 -0
  150. openparser/_generated/models/raw_parse_result_result.py +65 -0
  151. openparser/_generated/models/region.py +224 -0
  152. openparser/_generated/models/region_content.py +155 -0
  153. openparser/_generated/models/region_polygon_type_0_item.py +65 -0
  154. openparser/_generated/models/region_type.py +16 -0
  155. openparser/_generated/models/suggest_schema_request.py +69 -0
  156. openparser/_generated/models/suggest_schema_response.py +74 -0
  157. openparser/_generated/models/suggest_schema_response_schema.py +66 -0
  158. openparser/_generated/models/update_extraction_pipeline_request.py +227 -0
  159. openparser/_generated/models/update_extraction_pipeline_request_grounding.py +8 -0
  160. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0.py +84 -0
  161. openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1.py +13 -0
  162. openparser/_generated/models/update_extraction_pipeline_request_ocr_options_type_0.py +78 -0
  163. openparser/_generated/models/update_extraction_pipeline_request_schema.py +67 -0
  164. openparser/_generated/py.typed +1 -0
  165. openparser/_generated/types.py +53 -0
  166. openparser/_telemetry.py +34 -0
  167. openparser/client.py +541 -0
  168. openparser/errors.py +172 -0
  169. openparser/py.typed +0 -0
  170. openparser_sdk-0.0.1.dist-info/METADATA +178 -0
  171. openparser_sdk-0.0.1.dist-info/RECORD +173 -0
  172. openparser_sdk-0.0.1.dist-info/WHEEL +4 -0
  173. 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,8 @@
1
+ from enum import Enum
2
+
3
+ class BatchJobAcceptedOperation(str, Enum):
4
+ EXTRACT_BATCH = "extract_batch"
5
+ PARSE_BATCH = "parse_batch"
6
+
7
+ def __str__(self) -> str:
8
+ return str(self.value)
@@ -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,10 @@
1
+ from enum import Enum
2
+
3
+ class ContentKind(str, Enum):
4
+ FIGURE = "figure"
5
+ STATE = "state"
6
+ TABLE = "table"
7
+ TEXT = "text"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -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,8 @@
1
+ from enum import Enum
2
+
3
+ class CreateExtractionPipelineRequestGrounding(str, Enum):
4
+ FIELD = "field"
5
+ NONE = "none"
6
+
7
+ def __str__(self) -> str:
8
+ return str(self.value)
@@ -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