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,98 @@
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
+ from typing import cast
13
+
14
+ if TYPE_CHECKING:
15
+ from ..models.job_failure_details import JobFailureDetails
16
+
17
+
18
+
19
+
20
+
21
+ T = TypeVar("T", bound="JobFailure")
22
+
23
+
24
+
25
+ @_attrs_define
26
+ class JobFailure:
27
+ """
28
+ Attributes:
29
+ code (str):
30
+ message (str):
31
+ retryable (bool):
32
+ details (JobFailureDetails | Unset):
33
+ """
34
+
35
+ code: str
36
+ message: str
37
+ retryable: bool
38
+ details: JobFailureDetails | Unset = UNSET
39
+
40
+
41
+
42
+
43
+
44
+ def to_dict(self) -> dict[str, Any]:
45
+ from ..models.job_failure_details import JobFailureDetails
46
+ code = self.code
47
+
48
+ message = self.message
49
+
50
+ retryable = self.retryable
51
+
52
+ details: dict[str, Any] | Unset = UNSET
53
+ if not isinstance(self.details, Unset):
54
+ details = self.details.to_dict()
55
+
56
+
57
+ field_dict: dict[str, Any] = {}
58
+
59
+ field_dict.update({
60
+ "code": code,
61
+ "message": message,
62
+ "retryable": retryable,
63
+ })
64
+ if details is not UNSET:
65
+ field_dict["details"] = details
66
+
67
+ return field_dict
68
+
69
+
70
+
71
+ @classmethod
72
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
73
+ from ..models.job_failure_details import JobFailureDetails
74
+ d = dict(src_dict)
75
+ code = d.pop("code")
76
+
77
+ message = d.pop("message")
78
+
79
+ retryable = d.pop("retryable")
80
+
81
+ _details = d.pop("details", UNSET)
82
+ details: JobFailureDetails | Unset
83
+ if isinstance(_details, Unset):
84
+ details = UNSET
85
+ else:
86
+ details = JobFailureDetails.from_dict(_details)
87
+
88
+
89
+
90
+
91
+ job_failure = cls(
92
+ code=code,
93
+ message=message,
94
+ retryable=retryable,
95
+ details=details,
96
+ )
97
+
98
+ return job_failure
@@ -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="JobFailureDetails")
18
+
19
+
20
+
21
+ @_attrs_define
22
+ class JobFailureDetails:
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
+ job_failure_details = cls(
45
+ )
46
+
47
+
48
+ job_failure_details.additional_properties = d
49
+ return job_failure_details
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
@@ -0,0 +1,91 @@
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.job_summary import JobSummary
15
+
16
+
17
+
18
+
19
+
20
+ T = TypeVar("T", bound="JobListResponse")
21
+
22
+
23
+
24
+ @_attrs_define
25
+ class JobListResponse:
26
+ """ Cursor-paginated page of job summaries for the authenticated tenant.
27
+
28
+ Attributes:
29
+ data (list[JobSummary]):
30
+ next_cursor (None | str): Opaque cursor for the next page, or `null` when exhausted.
31
+ """
32
+
33
+ data: list[JobSummary]
34
+ next_cursor: None | str
35
+
36
+
37
+
38
+
39
+
40
+ def to_dict(self) -> dict[str, Any]:
41
+ from ..models.job_summary import JobSummary
42
+ data = []
43
+ for data_item_data in self.data:
44
+ data_item = data_item_data.to_dict()
45
+ data.append(data_item)
46
+
47
+
48
+
49
+ next_cursor: None | str
50
+ next_cursor = self.next_cursor
51
+
52
+
53
+ field_dict: dict[str, Any] = {}
54
+
55
+ field_dict.update({
56
+ "data": data,
57
+ "next_cursor": next_cursor,
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
+ from ..models.job_summary import JobSummary
67
+ d = dict(src_dict)
68
+ data = []
69
+ _data = d.pop("data")
70
+ for data_item_data in (_data):
71
+ data_item = JobSummary.from_dict(data_item_data)
72
+
73
+
74
+
75
+ data.append(data_item)
76
+
77
+
78
+ def _parse_next_cursor(data: object) -> None | str:
79
+ if data is None:
80
+ return data
81
+ return cast(None | str, data)
82
+
83
+ next_cursor = _parse_next_cursor(d.pop("next_cursor"))
84
+
85
+
86
+ job_list_response = cls(
87
+ data=data,
88
+ next_cursor=next_cursor,
89
+ )
90
+
91
+ return job_list_response
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+ class JobOperation(str, Enum):
4
+ EXTRACT = "extract"
5
+ EXTRACT_BATCH = "extract_batch"
6
+ PARSE = "parse"
7
+ PARSE_BATCH = "parse_batch"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,68 @@
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="JobProgress")
19
+
20
+
21
+
22
+ @_attrs_define
23
+ class JobProgress:
24
+ """
25
+ Attributes:
26
+ completed (int | Unset):
27
+ total (int | Unset):
28
+ """
29
+
30
+ completed: int | Unset = UNSET
31
+ total: int | Unset = UNSET
32
+
33
+
34
+
35
+
36
+
37
+ def to_dict(self) -> dict[str, Any]:
38
+ completed = self.completed
39
+
40
+ total = self.total
41
+
42
+
43
+ field_dict: dict[str, Any] = {}
44
+
45
+ field_dict.update({
46
+ })
47
+ if completed is not UNSET:
48
+ field_dict["completed"] = completed
49
+ if total is not UNSET:
50
+ field_dict["total"] = total
51
+
52
+ return field_dict
53
+
54
+
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+ completed = d.pop("completed", UNSET)
60
+
61
+ total = d.pop("total", UNSET)
62
+
63
+ job_progress = cls(
64
+ completed=completed,
65
+ total=total,
66
+ )
67
+
68
+ return job_progress
@@ -0,0 +1,145 @@
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.job_status import JobStatus
12
+ from ..types import UNSET, Unset
13
+ from dateutil.parser import isoparse
14
+ from typing import cast
15
+ import datetime
16
+
17
+
18
+
19
+
20
+
21
+
22
+ T = TypeVar("T", bound="JobRelatedExtractionsItem")
23
+
24
+
25
+
26
+ @_attrs_define
27
+ class JobRelatedExtractionsItem:
28
+ """
29
+ Attributes:
30
+ id (str): Prefixed public id for an OCR job (`opj_…`). Example: opj_V1StGXR8_Z5jdHi6B-myT.
31
+ status (JobStatus): Durable job status. For batch parent jobs, status is derived from children after each
32
+ child transition:
33
+ 1. If any child is non-terminal, the parent remains `queued` only while every child is
34
+ queued; it becomes `running` once any child is running or terminal.
35
+ 2. When every child is terminal and any child is `indeterminate`, the parent is
36
+ `indeterminate`.
37
+ 3. When every child is terminal, none are `indeterminate`, and any child is `failed`:
38
+ the parent is `failed` if zero children succeeded, otherwise `succeeded` (mixed
39
+ success/failure closes as parent `succeeded` while preserving failed children in
40
+ summaries).
41
+ 4. When every child is `succeeded`, the parent is `succeeded`.
42
+
43
+ Partial failures are always retained on child summaries; parent status does not drop
44
+ failed children from results.
45
+ created_at (datetime.datetime):
46
+ updated_at (datetime.datetime):
47
+ has_result (bool):
48
+ url (str):
49
+ llm_model (None | str | Unset):
50
+ """
51
+
52
+ id: str
53
+ status: JobStatus
54
+ created_at: datetime.datetime
55
+ updated_at: datetime.datetime
56
+ has_result: bool
57
+ url: str
58
+ llm_model: None | str | Unset = UNSET
59
+
60
+
61
+
62
+
63
+
64
+ def to_dict(self) -> dict[str, Any]:
65
+ id = self.id
66
+
67
+ status = self.status.value
68
+
69
+ created_at = self.created_at.isoformat()
70
+
71
+ updated_at = self.updated_at.isoformat()
72
+
73
+ has_result = self.has_result
74
+
75
+ url = self.url
76
+
77
+ llm_model: None | str | Unset
78
+ if isinstance(self.llm_model, Unset):
79
+ llm_model = UNSET
80
+ else:
81
+ llm_model = self.llm_model
82
+
83
+
84
+ field_dict: dict[str, Any] = {}
85
+
86
+ field_dict.update({
87
+ "id": id,
88
+ "status": status,
89
+ "created_at": created_at,
90
+ "updated_at": updated_at,
91
+ "has_result": has_result,
92
+ "url": url,
93
+ })
94
+ if llm_model is not UNSET:
95
+ field_dict["llm_model"] = llm_model
96
+
97
+ return field_dict
98
+
99
+
100
+
101
+ @classmethod
102
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
103
+ d = dict(src_dict)
104
+ id = d.pop("id")
105
+
106
+ status = JobStatus(d.pop("status"))
107
+
108
+
109
+
110
+
111
+ created_at = isoparse(d.pop("created_at"))
112
+
113
+
114
+
115
+
116
+ updated_at = isoparse(d.pop("updated_at"))
117
+
118
+
119
+
120
+
121
+ has_result = d.pop("has_result")
122
+
123
+ url = d.pop("url")
124
+
125
+ def _parse_llm_model(data: object) -> None | str | Unset:
126
+ if data is None:
127
+ return data
128
+ if isinstance(data, Unset):
129
+ return data
130
+ return cast(None | str | Unset, data)
131
+
132
+ llm_model = _parse_llm_model(d.pop("llm_model", UNSET))
133
+
134
+
135
+ job_related_extractions_item = cls(
136
+ id=id,
137
+ status=status,
138
+ created_at=created_at,
139
+ updated_at=updated_at,
140
+ has_result=has_result,
141
+ url=url,
142
+ llm_model=llm_model,
143
+ )
144
+
145
+ return job_related_extractions_item
@@ -0,0 +1,11 @@
1
+ from enum import Enum
2
+
3
+ class JobStatus(str, Enum):
4
+ FAILED = "failed"
5
+ INDETERMINATE = "indeterminate"
6
+ QUEUED = "queued"
7
+ RUNNING = "running"
8
+ SUCCEEDED = "succeeded"
9
+
10
+ def __str__(self) -> str:
11
+ return str(self.value)