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,206 @@
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.extraction_terminal_result_reasoning_effort_type_0 import ExtractionTerminalResultReasoningEffortType0
12
+ from ..types import UNSET, Unset
13
+ from typing import cast
14
+
15
+ if TYPE_CHECKING:
16
+ from ..models.extraction_attempt import ExtractionAttempt
17
+ from ..models.extraction_grounding_result import ExtractionGroundingResult
18
+ from ..models.extraction_usage_totals import ExtractionUsageTotals
19
+ from ..models.parsed_document import ParsedDocument
20
+
21
+
22
+
23
+
24
+
25
+ T = TypeVar("T", bound="ExtractionTerminalResult")
26
+
27
+
28
+
29
+ @_attrs_define
30
+ class ExtractionTerminalResult:
31
+ """ Terminal extraction result returned by sync `200` and embedded in succeeded jobs.
32
+
33
+ Attributes:
34
+ output (Any): Validated extraction output JSON matching the requested schema (wrappers never leak).
35
+ parsed_document (ParsedDocument): Versioned OpenParser `openparser@1` document representation. `blocks` is the
36
+ primary
37
+ stable interface; `regions`, `contents`, and `chunks` preserve provider-neutral geometry,
38
+ confidence, labels, provenance, and extraction views. Compatible optional fields may be
39
+ added within version 1; breaking representation changes create a new output-format version.
40
+ llm_model (str): OpenRouter model slug from the compatible OCR extraction catalog
41
+ (`GET /models/llm`). Unknown or deprecated values return `422 unsupported_llm_model`.
42
+ Ordinary extract may use any currently compatible model; field grounding requires a
43
+ certified model.
44
+ Example: openai/gpt-5.6-terra.
45
+ attempts (list[ExtractionAttempt]):
46
+ parse_job_id (str | Unset): Prefixed public id for an OCR job (`opj_…`). Example: opj_V1StGXR8_Z5jdHi6B-myT.
47
+ reasoning_effort (ExtractionTerminalResultReasoningEffortType0 | None | Unset):
48
+ usage (ExtractionUsageTotals | Unset): Aggregated customer retail OpenRouter usage for transparency. `cost_usd`
49
+ is the
50
+ customer charge, not raw provider list cost. Distinct from the customer
51
+ USD $0.001/page (0.1 credits/page) OCR charge recorded by Eigenpal billing.
52
+ grounding (ExtractionGroundingResult | Unset): Optional terminal grounding envelope present only when
53
+ `grounding: field` succeeded.
54
+ """
55
+
56
+ output: Any
57
+ parsed_document: ParsedDocument
58
+ llm_model: str
59
+ attempts: list[ExtractionAttempt]
60
+ parse_job_id: str | Unset = UNSET
61
+ reasoning_effort: ExtractionTerminalResultReasoningEffortType0 | None | Unset = UNSET
62
+ usage: ExtractionUsageTotals | Unset = UNSET
63
+ grounding: ExtractionGroundingResult | Unset = UNSET
64
+
65
+
66
+
67
+
68
+
69
+ def to_dict(self) -> dict[str, Any]:
70
+ from ..models.extraction_attempt import ExtractionAttempt
71
+ from ..models.extraction_grounding_result import ExtractionGroundingResult
72
+ from ..models.extraction_usage_totals import ExtractionUsageTotals
73
+ from ..models.parsed_document import ParsedDocument
74
+ output = self.output
75
+
76
+ parsed_document = self.parsed_document.to_dict()
77
+
78
+ llm_model = self.llm_model
79
+
80
+ attempts = []
81
+ for attempts_item_data in self.attempts:
82
+ attempts_item = attempts_item_data.to_dict()
83
+ attempts.append(attempts_item)
84
+
85
+
86
+
87
+ parse_job_id = self.parse_job_id
88
+
89
+ reasoning_effort: None | str | Unset
90
+ if isinstance(self.reasoning_effort, Unset):
91
+ reasoning_effort = UNSET
92
+ elif isinstance(self.reasoning_effort, ExtractionTerminalResultReasoningEffortType0):
93
+ reasoning_effort = self.reasoning_effort.value
94
+ else:
95
+ reasoning_effort = self.reasoning_effort
96
+
97
+ usage: dict[str, Any] | Unset = UNSET
98
+ if not isinstance(self.usage, Unset):
99
+ usage = self.usage.to_dict()
100
+
101
+ grounding: dict[str, Any] | Unset = UNSET
102
+ if not isinstance(self.grounding, Unset):
103
+ grounding = self.grounding.to_dict()
104
+
105
+
106
+ field_dict: dict[str, Any] = {}
107
+
108
+ field_dict.update({
109
+ "output": output,
110
+ "parsed_document": parsed_document,
111
+ "llm_model": llm_model,
112
+ "attempts": attempts,
113
+ })
114
+ if parse_job_id is not UNSET:
115
+ field_dict["parse_job_id"] = parse_job_id
116
+ if reasoning_effort is not UNSET:
117
+ field_dict["reasoning_effort"] = reasoning_effort
118
+ if usage is not UNSET:
119
+ field_dict["usage"] = usage
120
+ if grounding is not UNSET:
121
+ field_dict["grounding"] = grounding
122
+
123
+ return field_dict
124
+
125
+
126
+
127
+ @classmethod
128
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
129
+ from ..models.extraction_attempt import ExtractionAttempt
130
+ from ..models.extraction_grounding_result import ExtractionGroundingResult
131
+ from ..models.extraction_usage_totals import ExtractionUsageTotals
132
+ from ..models.parsed_document import ParsedDocument
133
+ d = dict(src_dict)
134
+ output = d.pop("output")
135
+
136
+ parsed_document = ParsedDocument.from_dict(d.pop("parsed_document"))
137
+
138
+
139
+
140
+
141
+ llm_model = d.pop("llm_model")
142
+
143
+ attempts = []
144
+ _attempts = d.pop("attempts")
145
+ for attempts_item_data in (_attempts):
146
+ attempts_item = ExtractionAttempt.from_dict(attempts_item_data)
147
+
148
+
149
+
150
+ attempts.append(attempts_item)
151
+
152
+
153
+ parse_job_id = d.pop("parse_job_id", UNSET)
154
+
155
+ def _parse_reasoning_effort(data: object) -> ExtractionTerminalResultReasoningEffortType0 | None | Unset:
156
+ if data is None:
157
+ return data
158
+ if isinstance(data, Unset):
159
+ return data
160
+ try:
161
+ if not isinstance(data, str):
162
+ raise TypeError()
163
+ reasoning_effort_type_0 = ExtractionTerminalResultReasoningEffortType0(data)
164
+
165
+
166
+
167
+ return reasoning_effort_type_0
168
+ except (TypeError, ValueError, AttributeError, KeyError):
169
+ pass
170
+ return cast(ExtractionTerminalResultReasoningEffortType0 | None | Unset, data)
171
+
172
+ reasoning_effort = _parse_reasoning_effort(d.pop("reasoning_effort", UNSET))
173
+
174
+
175
+ _usage = d.pop("usage", UNSET)
176
+ usage: ExtractionUsageTotals | Unset
177
+ if isinstance(_usage, Unset):
178
+ usage = UNSET
179
+ else:
180
+ usage = ExtractionUsageTotals.from_dict(_usage)
181
+
182
+
183
+
184
+
185
+ _grounding = d.pop("grounding", UNSET)
186
+ grounding: ExtractionGroundingResult | Unset
187
+ if isinstance(_grounding, Unset):
188
+ grounding = UNSET
189
+ else:
190
+ grounding = ExtractionGroundingResult.from_dict(_grounding)
191
+
192
+
193
+
194
+
195
+ extraction_terminal_result = cls(
196
+ output=output,
197
+ parsed_document=parsed_document,
198
+ llm_model=llm_model,
199
+ attempts=attempts,
200
+ parse_job_id=parse_job_id,
201
+ reasoning_effort=reasoning_effort,
202
+ usage=usage,
203
+ grounding=grounding,
204
+ )
205
+
206
+ return extraction_terminal_result
@@ -0,0 +1,13 @@
1
+ from enum import Enum
2
+
3
+ class ExtractionTerminalResultReasoningEffortType0(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,80 @@
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="ExtractionUsageTotals")
19
+
20
+
21
+
22
+ @_attrs_define
23
+ class ExtractionUsageTotals:
24
+ """ Aggregated customer retail OpenRouter usage for transparency. `cost_usd` is the
25
+ customer charge, not raw provider list cost. Distinct from the customer
26
+ USD $0.001/page (0.1 credits/page) OCR charge recorded by Eigenpal billing.
27
+
28
+ Attributes:
29
+ input_tokens (int | Unset):
30
+ output_tokens (int | Unset):
31
+ cost_usd (float | Unset):
32
+ """
33
+
34
+ input_tokens: int | Unset = UNSET
35
+ output_tokens: int | Unset = UNSET
36
+ cost_usd: float | Unset = UNSET
37
+
38
+
39
+
40
+
41
+
42
+ def to_dict(self) -> dict[str, Any]:
43
+ input_tokens = self.input_tokens
44
+
45
+ output_tokens = self.output_tokens
46
+
47
+ cost_usd = self.cost_usd
48
+
49
+
50
+ field_dict: dict[str, Any] = {}
51
+
52
+ field_dict.update({
53
+ })
54
+ if input_tokens is not UNSET:
55
+ field_dict["input_tokens"] = input_tokens
56
+ if output_tokens is not UNSET:
57
+ field_dict["output_tokens"] = output_tokens
58
+ if cost_usd is not UNSET:
59
+ field_dict["cost_usd"] = cost_usd
60
+
61
+ return field_dict
62
+
63
+
64
+
65
+ @classmethod
66
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
67
+ d = dict(src_dict)
68
+ input_tokens = d.pop("input_tokens", UNSET)
69
+
70
+ output_tokens = d.pop("output_tokens", UNSET)
71
+
72
+ cost_usd = d.pop("cost_usd", UNSET)
73
+
74
+ extraction_usage_totals = cls(
75
+ input_tokens=input_tokens,
76
+ output_tokens=output_tokens,
77
+ cost_usd=cost_usd,
78
+ )
79
+
80
+ return extraction_usage_totals