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,133 @@
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
+ import json
9
+ from .. import types
10
+
11
+ from ..types import UNSET, Unset
12
+
13
+ from ..types import File, FileTypes
14
+ from ..types import UNSET, Unset
15
+ from io import BytesIO
16
+ from typing import cast
17
+
18
+ if TYPE_CHECKING:
19
+ from ..models.parse_request import ParseRequest
20
+
21
+
22
+
23
+
24
+
25
+ T = TypeVar("T", bound="ParseSyncBody")
26
+
27
+
28
+
29
+ @_attrs_define
30
+ class ParseSyncBody:
31
+ """
32
+ Attributes:
33
+ request (ParseRequest):
34
+ file (File | Unset): Source document bytes (PDF, PNG, or JPEG). Required unless `request.file_id`
35
+ references an existing Eigenpal reusable file.
36
+ """
37
+
38
+ request: ParseRequest
39
+ file: File | Unset = UNSET
40
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
41
+
42
+
43
+
44
+
45
+
46
+ def to_dict(self) -> dict[str, Any]:
47
+ from ..models.parse_request import ParseRequest
48
+ request = self.request.to_dict()
49
+
50
+ file: FileTypes | Unset = UNSET
51
+ if not isinstance(self.file, Unset):
52
+ file = self.file.to_tuple()
53
+
54
+
55
+
56
+ field_dict: dict[str, Any] = {}
57
+ field_dict.update(self.additional_properties)
58
+ field_dict.update({
59
+ "request": request,
60
+ })
61
+ if file is not UNSET:
62
+ field_dict["file"] = file
63
+
64
+ return field_dict
65
+
66
+
67
+ def to_multipart(self) -> types.RequestFiles:
68
+ from ..models.parse_request import ParseRequest
69
+ files: types.RequestFiles = []
70
+
71
+ files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
72
+
73
+
74
+
75
+ if not isinstance(self.file, Unset):
76
+ files.append(("file", self.file.to_tuple()))
77
+
78
+
79
+
80
+
81
+ for prop_name, prop in self.additional_properties.items():
82
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
83
+
84
+
85
+
86
+ return files
87
+
88
+
89
+ @classmethod
90
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
91
+ from ..models.parse_request import ParseRequest
92
+ d = dict(src_dict)
93
+ request = ParseRequest.from_dict(d.pop("request"))
94
+
95
+
96
+
97
+
98
+ _file = d.pop("file", UNSET)
99
+ file: File | Unset
100
+ if isinstance(_file, Unset):
101
+ file = UNSET
102
+ else:
103
+ file = File(
104
+ payload = BytesIO(_file)
105
+ )
106
+
107
+
108
+
109
+
110
+ parse_sync_body = cls(
111
+ request=request,
112
+ file=file,
113
+ )
114
+
115
+
116
+ parse_sync_body.additional_properties = d
117
+ return parse_sync_body
118
+
119
+ @property
120
+ def additional_keys(self) -> list[str]:
121
+ return list(self.additional_properties.keys())
122
+
123
+ def __getitem__(self, key: str) -> Any:
124
+ return self.additional_properties[key]
125
+
126
+ def __setitem__(self, key: str, value: Any) -> None:
127
+ self.additional_properties[key] = value
128
+
129
+ def __delitem__(self, key: str) -> None:
130
+ del self.additional_properties[key]
131
+
132
+ def __contains__(self, key: str) -> bool:
133
+ return key in self.additional_properties
@@ -0,0 +1,187 @@
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
+ from typing import Literal, cast
13
+
14
+ if TYPE_CHECKING:
15
+ from ..models.extraction_chunk import ExtractionChunk
16
+ from ..models.page_block import PageBlock
17
+ from ..models.region import Region
18
+ from ..models.region_content import RegionContent
19
+
20
+
21
+
22
+
23
+
24
+ T = TypeVar("T", bound="ParsedDocument")
25
+
26
+
27
+
28
+ @_attrs_define
29
+ class ParsedDocument:
30
+ """ Versioned OpenParser `openparser@1` document representation. `blocks` is the primary
31
+ stable interface; `regions`, `contents`, and `chunks` preserve provider-neutral geometry,
32
+ confidence, labels, provenance, and extraction views. Compatible optional fields may be
33
+ added within version 1; breaking representation changes create a new output-format version.
34
+
35
+ Attributes:
36
+ output_format (Literal['openparser@1']):
37
+ document_id (str):
38
+ page_count (int): Authoritative successfully parsed page count from the HPS/parse result. Customer
39
+ page billing uses this value only when a successful terminal result is published.
40
+ markdown (str): Derived markdown rendered from ordered blocks.
41
+ blocks (list[PageBlock]):
42
+ regions (list[Region]):
43
+ contents (list[RegionContent]):
44
+ chunks (list[ExtractionChunk]):
45
+ """
46
+
47
+ output_format: Literal['openparser@1']
48
+ document_id: str
49
+ page_count: int
50
+ markdown: str
51
+ blocks: list[PageBlock]
52
+ regions: list[Region]
53
+ contents: list[RegionContent]
54
+ chunks: list[ExtractionChunk]
55
+
56
+
57
+
58
+
59
+
60
+ def to_dict(self) -> dict[str, Any]:
61
+ from ..models.extraction_chunk import ExtractionChunk
62
+ from ..models.page_block import PageBlock
63
+ from ..models.region import Region
64
+ from ..models.region_content import RegionContent
65
+ output_format = self.output_format
66
+
67
+ document_id = self.document_id
68
+
69
+ page_count = self.page_count
70
+
71
+ markdown = self.markdown
72
+
73
+ blocks = []
74
+ for blocks_item_data in self.blocks:
75
+ blocks_item = blocks_item_data.to_dict()
76
+ blocks.append(blocks_item)
77
+
78
+
79
+
80
+ regions = []
81
+ for regions_item_data in self.regions:
82
+ regions_item = regions_item_data.to_dict()
83
+ regions.append(regions_item)
84
+
85
+
86
+
87
+ contents = []
88
+ for contents_item_data in self.contents:
89
+ contents_item = contents_item_data.to_dict()
90
+ contents.append(contents_item)
91
+
92
+
93
+
94
+ chunks = []
95
+ for chunks_item_data in self.chunks:
96
+ chunks_item = chunks_item_data.to_dict()
97
+ chunks.append(chunks_item)
98
+
99
+
100
+
101
+
102
+ field_dict: dict[str, Any] = {}
103
+
104
+ field_dict.update({
105
+ "output_format": output_format,
106
+ "document_id": document_id,
107
+ "page_count": page_count,
108
+ "markdown": markdown,
109
+ "blocks": blocks,
110
+ "regions": regions,
111
+ "contents": contents,
112
+ "chunks": chunks,
113
+ })
114
+
115
+ return field_dict
116
+
117
+
118
+
119
+ @classmethod
120
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
121
+ from ..models.extraction_chunk import ExtractionChunk
122
+ from ..models.page_block import PageBlock
123
+ from ..models.region import Region
124
+ from ..models.region_content import RegionContent
125
+ d = dict(src_dict)
126
+ output_format = cast(Literal['openparser@1'] , d.pop("output_format"))
127
+ if output_format != 'openparser@1':
128
+ raise ValueError(f"output_format must match const 'openparser@1', got '{output_format}'")
129
+
130
+ document_id = d.pop("document_id")
131
+
132
+ page_count = d.pop("page_count")
133
+
134
+ markdown = d.pop("markdown")
135
+
136
+ blocks = []
137
+ _blocks = d.pop("blocks")
138
+ for blocks_item_data in (_blocks):
139
+ blocks_item = PageBlock.from_dict(blocks_item_data)
140
+
141
+
142
+
143
+ blocks.append(blocks_item)
144
+
145
+
146
+ regions = []
147
+ _regions = d.pop("regions")
148
+ for regions_item_data in (_regions):
149
+ regions_item = Region.from_dict(regions_item_data)
150
+
151
+
152
+
153
+ regions.append(regions_item)
154
+
155
+
156
+ contents = []
157
+ _contents = d.pop("contents")
158
+ for contents_item_data in (_contents):
159
+ contents_item = RegionContent.from_dict(contents_item_data)
160
+
161
+
162
+
163
+ contents.append(contents_item)
164
+
165
+
166
+ chunks = []
167
+ _chunks = d.pop("chunks")
168
+ for chunks_item_data in (_chunks):
169
+ chunks_item = ExtractionChunk.from_dict(chunks_item_data)
170
+
171
+
172
+
173
+ chunks.append(chunks_item)
174
+
175
+
176
+ parsed_document = cls(
177
+ output_format=output_format,
178
+ document_id=document_id,
179
+ page_count=page_count,
180
+ markdown=markdown,
181
+ blocks=blocks,
182
+ regions=regions,
183
+ contents=contents,
184
+ chunks=chunks,
185
+ )
186
+
187
+ return parsed_document
@@ -0,0 +1,117 @@
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 dateutil.parser import isoparse
12
+ from typing import cast
13
+ import datetime
14
+
15
+
16
+
17
+
18
+
19
+
20
+ T = TypeVar("T", bound="PublicFile")
21
+
22
+
23
+
24
+ @_attrs_define
25
+ class PublicFile:
26
+ """
27
+ Attributes:
28
+ id (str):
29
+ filename (str):
30
+ content_type (None | str):
31
+ size (int | None):
32
+ purpose (None):
33
+ created_at (datetime.datetime):
34
+ """
35
+
36
+ id: str
37
+ filename: str
38
+ content_type: None | str
39
+ size: int | None
40
+ purpose: None
41
+ created_at: datetime.datetime
42
+
43
+
44
+
45
+
46
+
47
+ def to_dict(self) -> dict[str, Any]:
48
+ id = self.id
49
+
50
+ filename = self.filename
51
+
52
+ content_type: None | str
53
+ content_type = self.content_type
54
+
55
+ size: int | None
56
+ size = self.size
57
+
58
+ purpose = self.purpose
59
+
60
+ created_at = self.created_at.isoformat()
61
+
62
+
63
+ field_dict: dict[str, Any] = {}
64
+
65
+ field_dict.update({
66
+ "id": id,
67
+ "filename": filename,
68
+ "contentType": content_type,
69
+ "size": size,
70
+ "purpose": purpose,
71
+ "createdAt": created_at,
72
+ })
73
+
74
+ return field_dict
75
+
76
+
77
+
78
+ @classmethod
79
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
80
+ d = dict(src_dict)
81
+ id = d.pop("id")
82
+
83
+ filename = d.pop("filename")
84
+
85
+ def _parse_content_type(data: object) -> None | str:
86
+ if data is None:
87
+ return data
88
+ return cast(None | str, data)
89
+
90
+ content_type = _parse_content_type(d.pop("contentType"))
91
+
92
+
93
+ def _parse_size(data: object) -> int | None:
94
+ if data is None:
95
+ return data
96
+ return cast(int | None, data)
97
+
98
+ size = _parse_size(d.pop("size"))
99
+
100
+
101
+ purpose = d.pop("purpose")
102
+
103
+ created_at = isoparse(d.pop("createdAt"))
104
+
105
+
106
+
107
+
108
+ public_file = cls(
109
+ id=id,
110
+ filename=filename,
111
+ content_type=content_type,
112
+ size=size,
113
+ purpose=purpose,
114
+ created_at=created_at,
115
+ )
116
+
117
+ return public_file
@@ -0,0 +1,110 @@
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
+ from typing import Literal, cast
13
+
14
+ if TYPE_CHECKING:
15
+ from ..models.paddle_raw_profile import PaddleRawProfile
16
+ from ..models.raw_parse_result_result import RawParseResultResult
17
+
18
+
19
+
20
+
21
+
22
+ T = TypeVar("T", bound="RawParseResult")
23
+
24
+
25
+
26
+ @_attrs_define
27
+ class RawParseResult:
28
+ """
29
+ Attributes:
30
+ output_format (Literal['raw']):
31
+ provider (Literal['paddle']):
32
+ model (Literal['paddleocr-vl-1.6']):
33
+ profile (PaddleRawProfile):
34
+ result (RawParseResultResult):
35
+ """
36
+
37
+ output_format: Literal['raw']
38
+ provider: Literal['paddle']
39
+ model: Literal['paddleocr-vl-1.6']
40
+ profile: PaddleRawProfile
41
+ result: RawParseResultResult
42
+
43
+
44
+
45
+
46
+
47
+ def to_dict(self) -> dict[str, Any]:
48
+ from ..models.paddle_raw_profile import PaddleRawProfile
49
+ from ..models.raw_parse_result_result import RawParseResultResult
50
+ output_format = self.output_format
51
+
52
+ provider = self.provider
53
+
54
+ model = self.model
55
+
56
+ profile = self.profile.to_dict()
57
+
58
+ result = self.result.to_dict()
59
+
60
+
61
+ field_dict: dict[str, Any] = {}
62
+
63
+ field_dict.update({
64
+ "output_format": output_format,
65
+ "provider": provider,
66
+ "model": model,
67
+ "profile": profile,
68
+ "result": result,
69
+ })
70
+
71
+ return field_dict
72
+
73
+
74
+
75
+ @classmethod
76
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
77
+ from ..models.paddle_raw_profile import PaddleRawProfile
78
+ from ..models.raw_parse_result_result import RawParseResultResult
79
+ d = dict(src_dict)
80
+ output_format = cast(Literal['raw'] , d.pop("output_format"))
81
+ if output_format != 'raw':
82
+ raise ValueError(f"output_format must match const 'raw', got '{output_format}'")
83
+
84
+ provider = cast(Literal['paddle'] , d.pop("provider"))
85
+ if provider != 'paddle':
86
+ raise ValueError(f"provider must match const 'paddle', got '{provider}'")
87
+
88
+ model = cast(Literal['paddleocr-vl-1.6'] , d.pop("model"))
89
+ if model != 'paddleocr-vl-1.6':
90
+ raise ValueError(f"model must match const 'paddleocr-vl-1.6', got '{model}'")
91
+
92
+ profile = PaddleRawProfile.from_dict(d.pop("profile"))
93
+
94
+
95
+
96
+
97
+ result = RawParseResultResult.from_dict(d.pop("result"))
98
+
99
+
100
+
101
+
102
+ raw_parse_result = cls(
103
+ output_format=output_format,
104
+ provider=provider,
105
+ model=model,
106
+ profile=profile,
107
+ result=result,
108
+ )
109
+
110
+ return raw_parse_result
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ T = TypeVar("T", bound="RawParseResultResult")
18
+
19
+
20
+
21
+ @_attrs_define
22
+ class RawParseResultResult:
23
+ """
24
+ """
25
+
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+
29
+
30
+
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+
37
+ return field_dict
38
+
39
+
40
+
41
+ @classmethod
42
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
43
+ d = dict(src_dict)
44
+ raw_parse_result_result = cls(
45
+ )
46
+
47
+
48
+ raw_parse_result_result.additional_properties = d
49
+ return raw_parse_result_result
50
+
51
+ @property
52
+ def additional_keys(self) -> list[str]:
53
+ return list(self.additional_properties.keys())
54
+
55
+ def __getitem__(self, key: str) -> Any:
56
+ return self.additional_properties[key]
57
+
58
+ def __setitem__(self, key: str, value: Any) -> None:
59
+ self.additional_properties[key] = value
60
+
61
+ def __delitem__(self, key: str) -> None:
62
+ del self.additional_properties[key]
63
+
64
+ def __contains__(self, key: str) -> bool:
65
+ return key in self.additional_properties