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