groundx 3.2.9__tar.gz → 3.3.2__tar.gz

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 (194) hide show
  1. {groundx-3.2.9 → groundx-3.3.2}/PKG-INFO +6 -2
  2. {groundx-3.2.9 → groundx-3.3.2}/pyproject.toml +8 -3
  3. groundx-3.3.2/src/groundx/__init__.py +277 -0
  4. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/buckets/raw_client.py +28 -28
  5. groundx-3.3.2/src/groundx/client.py +306 -0
  6. groundx-3.3.2/src/groundx/core/__init__.py +105 -0
  7. groundx-3.3.2/src/groundx/core/client_wrapper.py +93 -0
  8. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/force_multipart.py +4 -2
  9. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/http_client.py +217 -97
  10. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/http_response.py +6 -2
  11. groundx-3.3.2/src/groundx/core/http_sse/__init__.py +42 -0
  12. groundx-3.3.2/src/groundx/core/http_sse/_api.py +112 -0
  13. groundx-3.3.2/src/groundx/core/http_sse/_decoders.py +61 -0
  14. groundx-3.3.2/src/groundx/core/http_sse/_exceptions.py +7 -0
  15. groundx-3.3.2/src/groundx/core/http_sse/_models.py +17 -0
  16. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/jsonable_encoder.py +8 -0
  17. groundx-3.3.2/src/groundx/core/pydantic_utilities.py +560 -0
  18. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/documents/client.py +8 -8
  19. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/documents/raw_client.py +104 -104
  20. groundx-3.3.2/src/groundx/errors/__init__.py +38 -0
  21. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/errors/bad_request_error.py +1 -1
  22. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/errors/unauthorized_error.py +1 -1
  23. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/agents/agent.py +2 -0
  24. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/document.py +10 -9
  25. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/field.py +9 -0
  26. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/test_document.py +3 -3
  27. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/utility/utility.py +10 -0
  28. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/groups/raw_client.py +44 -44
  29. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/health/raw_client.py +4 -4
  30. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/ingest.py +3 -0
  31. groundx-3.3.2/src/groundx/mcp/__init__.py +4 -0
  32. groundx-3.3.2/src/groundx/mcp/client.py +118 -0
  33. groundx-3.3.2/src/groundx/mcp/raw_client.py +113 -0
  34. groundx-3.3.2/src/groundx/search/__init__.py +34 -0
  35. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/search/client.py +8 -8
  36. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/search/raw_client.py +24 -24
  37. groundx-3.3.2/src/groundx/search/types/__init__.py +34 -0
  38. groundx-3.3.2/src/groundx/types/__init__.py +236 -0
  39. groundx-3.3.2/src/groundx/types/bounding_box_detail.py +52 -0
  40. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/bucket_detail.py +11 -15
  41. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/bucket_update_detail.py +1 -1
  42. groundx-3.3.2/src/groundx/types/document.py +60 -0
  43. groundx-3.3.2/src/groundx/types/document_detail.py +79 -0
  44. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/document_list_response.py +3 -1
  45. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/document_lookup_response.py +3 -1
  46. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/group_detail.py +17 -15
  47. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/health_service.py +7 -5
  48. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_local_document.py +1 -1
  49. groundx-3.3.2/src/groundx/types/ingest_local_document_metadata.py +53 -0
  50. groundx-3.3.2/src/groundx/types/ingest_remote_document.py +58 -0
  51. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status.py +4 -2
  52. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_light.py +4 -2
  53. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/meter_detail.py +5 -7
  54. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/search_response_search.py +12 -13
  55. groundx-3.3.2/src/groundx/types/search_result_item.py +87 -0
  56. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/search_result_item_pages_item.py +5 -7
  57. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/subscription_detail_meters.py +3 -1
  58. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/website_source.py +19 -15
  59. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_apply_request.py +5 -4
  60. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_detail.py +17 -16
  61. groundx-3.3.2/src/groundx/types/workflow_engine.py +59 -0
  62. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_request.py +7 -3
  63. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_step.py +7 -3
  64. groundx-3.3.2/src/groundx/types/workflow_steps.py +52 -0
  65. groundx-3.3.2/src/groundx/workflows/__init__.py +34 -0
  66. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/workflows/client.py +8 -8
  67. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/workflows/raw_client.py +8 -8
  68. groundx-3.3.2/src/groundx/workflows/types/__init__.py +34 -0
  69. groundx-3.2.9/src/groundx/__init__.py +0 -165
  70. groundx-3.2.9/src/groundx/client.py +0 -161
  71. groundx-3.2.9/src/groundx/core/__init__.py +0 -52
  72. groundx-3.2.9/src/groundx/core/client_wrapper.py +0 -55
  73. groundx-3.2.9/src/groundx/core/pydantic_utilities.py +0 -255
  74. groundx-3.2.9/src/groundx/errors/__init__.py +0 -8
  75. groundx-3.2.9/src/groundx/search/__init__.py +0 -7
  76. groundx-3.2.9/src/groundx/search/types/__init__.py +0 -7
  77. groundx-3.2.9/src/groundx/types/__init__.py +0 -141
  78. groundx-3.2.9/src/groundx/types/bounding_box_detail.py +0 -54
  79. groundx-3.2.9/src/groundx/types/document.py +0 -54
  80. groundx-3.2.9/src/groundx/types/document_detail.py +0 -78
  81. groundx-3.2.9/src/groundx/types/ingest_local_document_metadata.py +0 -51
  82. groundx-3.2.9/src/groundx/types/ingest_remote_document.py +0 -54
  83. groundx-3.2.9/src/groundx/types/search_result_item.py +0 -98
  84. groundx-3.2.9/src/groundx/types/workflow_engine.py +0 -58
  85. groundx-3.2.9/src/groundx/types/workflow_steps.py +0 -40
  86. groundx-3.2.9/src/groundx/workflows/__init__.py +0 -7
  87. groundx-3.2.9/src/groundx/workflows/types/__init__.py +0 -7
  88. {groundx-3.2.9 → groundx-3.3.2}/LICENSE +0 -0
  89. {groundx-3.2.9 → groundx-3.3.2}/README.md +0 -0
  90. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/buckets/__init__.py +0 -0
  91. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/buckets/client.py +0 -0
  92. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/api_error.py +0 -0
  93. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/datetime_utils.py +0 -0
  94. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/file.py +0 -0
  95. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/query_encoder.py +0 -0
  96. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/remove_none_from_dict.py +0 -0
  97. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/request_options.py +0 -0
  98. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/core/serialization.py +0 -0
  99. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/csv_splitter.py +0 -0
  100. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/customer/__init__.py +0 -0
  101. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/customer/client.py +0 -0
  102. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/customer/raw_client.py +0 -0
  103. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/documents/__init__.py +0 -0
  104. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/environment.py +0 -0
  105. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/__init__.py +0 -0
  106. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/agents/__init__.py +0 -0
  107. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/__init__.py +0 -0
  108. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/agent.py +0 -0
  109. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/api.py +0 -0
  110. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/element.py +0 -0
  111. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/groundx.py +0 -0
  112. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/group.py +0 -0
  113. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/prompt.py +0 -0
  114. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/test_field.py +0 -0
  115. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/test_groundx.py +0 -0
  116. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/test_group.py +0 -0
  117. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/classes/test_prompt.py +0 -0
  118. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/post_process/__init__.py +0 -0
  119. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/post_process/post_process.py +0 -0
  120. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/__init__.py +0 -0
  121. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/manager.py +0 -0
  122. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/object_store.py +0 -0
  123. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/source.py +0 -0
  124. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/test_manager.py +0 -0
  125. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/prompt/utility.py +0 -0
  126. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/.DS_Store +0 -0
  127. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/__init__.py +0 -0
  128. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/csv.py +0 -0
  129. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/logger.py +0 -0
  130. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/logging_cfg.py +0 -0
  131. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/ratelimit.py +0 -0
  132. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/sheets_client.py +0 -0
  133. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/status.py +0 -0
  134. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/test_upload_minio.py +0 -0
  135. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/upload.py +0 -0
  136. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/upload_minio.py +0 -0
  137. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/upload_s3.py +0 -0
  138. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/services/utility.py +0 -0
  139. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/settings/__init__.py +0 -0
  140. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/settings/settings.py +0 -0
  141. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/settings/test_settings.py +0 -0
  142. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/tasks/__init__.py +0 -0
  143. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/tasks/utility.py +0 -0
  144. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/utility/__init__.py +0 -0
  145. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/extract/utility/test_utility.py +0 -0
  146. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/groups/__init__.py +0 -0
  147. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/groups/client.py +0 -0
  148. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/health/__init__.py +0 -0
  149. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/health/client.py +0 -0
  150. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/py.typed +0 -0
  151. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/search/types/search_content_request_id.py +0 -0
  152. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/bucket_list_response.py +0 -0
  153. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/bucket_response.py +0 -0
  154. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/bucket_update_response.py +0 -0
  155. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/customer_detail.py +0 -0
  156. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/customer_response.py +0 -0
  157. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/document_local_ingest_request.py +0 -0
  158. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/document_response.py +0 -0
  159. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/document_type.py +0 -0
  160. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/group_list_response.py +0 -0
  161. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/group_response.py +0 -0
  162. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/health_response.py +0 -0
  163. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/health_response_health.py +0 -0
  164. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/health_service_status.py +0 -0
  165. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_response.py +0 -0
  166. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_progress.py +0 -0
  167. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_progress_cancelled.py +0 -0
  168. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_progress_complete.py +0 -0
  169. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_progress_errors.py +0 -0
  170. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/ingest_status_progress_processing.py +0 -0
  171. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/message_response.py +0 -0
  172. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/process_level.py +0 -0
  173. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/processes_status_response.py +0 -0
  174. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/processing_status.py +0 -0
  175. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/search_response.py +0 -0
  176. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/sort.py +0 -0
  177. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/sort_order.py +0 -0
  178. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/subscription_detail.py +0 -0
  179. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_detail_chunk_strategy.py +0 -0
  180. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_detail_relationships.py +0 -0
  181. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_detail_section_strategy.py +0 -0
  182. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_engine_reasoning_effort.py +0 -0
  183. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_engine_service.py +0 -0
  184. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_prompt.py +0 -0
  185. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_prompt_group.py +0 -0
  186. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_prompt_role.py +0 -0
  187. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_request_chunk_strategy.py +0 -0
  188. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_request_section_strategy.py +0 -0
  189. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_response.py +0 -0
  190. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_step_config.py +0 -0
  191. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflow_step_config_field.py +0 -0
  192. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/types/workflows_response.py +0 -0
  193. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/version.py +0 -0
  194. {groundx-3.2.9 → groundx-3.3.2}/src/groundx/workflows/types/workflows_get_request_id.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: groundx
3
- Version: 3.2.9
3
+ Version: 3.3.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.8,<4.0
@@ -18,6 +18,9 @@ Classifier: Programming Language :: Python :: 3.9
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
21
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
25
  Classifier: Typing :: Typed
23
26
  Provides-Extra: extract
@@ -35,7 +38,7 @@ Requires-Dist: httpx (>=0.21.2)
35
38
  Requires-Dist: minio ; extra == "extract"
36
39
  Requires-Dist: pillow ; extra == "extract"
37
40
  Requires-Dist: pydantic (>=1.9.2)
38
- Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
41
+ Requires-Dist: pydantic-core (>=2.18.2)
39
42
  Requires-Dist: pytest ; extra == "extract"
40
43
  Requires-Dist: redis ; extra == "extract"
41
44
  Requires-Dist: requests (>=2.4.0)
@@ -45,6 +48,7 @@ Requires-Dist: types-boto3 ; extra == "extract"
45
48
  Requires-Dist: types-dateparser ; extra == "extract"
46
49
  Requires-Dist: types-tqdm (>=4.60.0)
47
50
  Requires-Dist: typing_extensions (>=4.0.0)
51
+ Project-URL: Repository, https://github.com/eyelevelai/groundx-python
48
52
  Description-Content-Type: text/markdown
49
53
 
50
54
  # GroundX Python Library
@@ -1,9 +1,10 @@
1
1
  [project]
2
2
  name = "groundx"
3
+ dynamic = ["version"]
3
4
 
4
5
  [tool.poetry]
5
6
  name = "groundx"
6
- version = "3.2.9"
7
+ version = "3.3.2"
7
8
  description = ""
8
9
  readme = "README.md"
9
10
  authors = []
@@ -18,6 +19,9 @@ classifiers = [
18
19
  "Programming Language :: Python :: 3.10",
19
20
  "Programming Language :: Python :: 3.11",
20
21
  "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Programming Language :: Python :: 3.14",
24
+ "Programming Language :: Python :: 3.15",
21
25
  "Operating System :: OS Independent",
22
26
  "Operating System :: POSIX",
23
27
  "Operating System :: MacOS",
@@ -31,7 +35,7 @@ packages = [
31
35
  { include = "groundx", from = "src"}
32
36
  ]
33
37
 
34
- [project.urls]
38
+ [tool.poetry.urls]
35
39
  Repository = 'https://github.com/eyelevelai/groundx-python'
36
40
 
37
41
  [tool.poetry.dependencies]
@@ -50,7 +54,7 @@ httpx = ">=0.21.2"
50
54
  minio = { version = "*", optional = true}
51
55
  pillow = { version = "*", optional = true}
52
56
  pydantic = ">= 1.9.2"
53
- pydantic-core = "^2.18.2"
57
+ pydantic-core = ">=2.18.2"
54
58
  pytest = { version = "*", optional = true}
55
59
  redis = { version = "*", optional = true}
56
60
  requests = ">=2.4.0"
@@ -65,6 +69,7 @@ typing_extensions = ">= 4.0.0"
65
69
  mypy = "==1.13.0"
66
70
  pytest = "^7.4.0"
67
71
  pytest-asyncio = "^0.23.5"
72
+ pytest-xdist = "^3.6.1"
68
73
  python-dateutil = "^2.9.0"
69
74
  types-python-dateutil = "^2.9.0.20240316"
70
75
  ruff = "==0.11.5"
@@ -0,0 +1,277 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import (
10
+ BoundingBoxDetail,
11
+ BucketDetail,
12
+ BucketListResponse,
13
+ BucketResponse,
14
+ BucketUpdateDetail,
15
+ BucketUpdateResponse,
16
+ CustomerDetail,
17
+ CustomerResponse,
18
+ Document,
19
+ DocumentDetail,
20
+ DocumentListResponse,
21
+ DocumentLocalIngestRequest,
22
+ DocumentLookupResponse,
23
+ DocumentResponse,
24
+ DocumentType,
25
+ GroupDetail,
26
+ GroupListResponse,
27
+ GroupResponse,
28
+ HealthResponse,
29
+ HealthResponseHealth,
30
+ HealthService,
31
+ HealthServiceStatus,
32
+ IngestLocalDocument,
33
+ IngestLocalDocumentMetadata,
34
+ IngestRemoteDocument,
35
+ IngestResponse,
36
+ IngestStatus,
37
+ IngestStatusLight,
38
+ IngestStatusProgress,
39
+ IngestStatusProgressCancelled,
40
+ IngestStatusProgressComplete,
41
+ IngestStatusProgressErrors,
42
+ IngestStatusProgressProcessing,
43
+ MessageResponse,
44
+ MeterDetail,
45
+ ProcessLevel,
46
+ ProcessesStatusResponse,
47
+ ProcessingStatus,
48
+ SearchResponse,
49
+ SearchResponseSearch,
50
+ SearchResultItem,
51
+ SearchResultItemPagesItem,
52
+ Sort,
53
+ SortOrder,
54
+ SubscriptionDetail,
55
+ SubscriptionDetailMeters,
56
+ WebsiteSource,
57
+ WorkflowApplyRequest,
58
+ WorkflowDetail,
59
+ WorkflowDetailChunkStrategy,
60
+ WorkflowDetailRelationships,
61
+ WorkflowDetailSectionStrategy,
62
+ WorkflowEngine,
63
+ WorkflowEngineReasoningEffort,
64
+ WorkflowEngineService,
65
+ WorkflowPrompt,
66
+ WorkflowPromptGroup,
67
+ WorkflowPromptRole,
68
+ WorkflowRequest,
69
+ WorkflowRequestChunkStrategy,
70
+ WorkflowRequestSectionStrategy,
71
+ WorkflowResponse,
72
+ WorkflowStep,
73
+ WorkflowStepConfig,
74
+ WorkflowStepConfigField,
75
+ WorkflowSteps,
76
+ WorkflowsResponse,
77
+ )
78
+ from .errors import BadRequestError, UnauthorizedError
79
+ from . import buckets, customer, documents, groups, health, mcp, search, workflows
80
+ from .environment import GroundXEnvironment
81
+ from .ingest import AsyncGroundX, GroundX
82
+ from .search import SearchContentRequestId
83
+ from .version import __version__
84
+ from .workflows import WorkflowsGetRequestId
85
+ _dynamic_imports: typing.Dict[str, str] = {
86
+ "AsyncGroundX": ".ingest",
87
+ "BadRequestError": ".errors",
88
+ "BoundingBoxDetail": ".types",
89
+ "BucketDetail": ".types",
90
+ "BucketListResponse": ".types",
91
+ "BucketResponse": ".types",
92
+ "BucketUpdateDetail": ".types",
93
+ "BucketUpdateResponse": ".types",
94
+ "CustomerDetail": ".types",
95
+ "CustomerResponse": ".types",
96
+ "Document": ".types",
97
+ "DocumentDetail": ".types",
98
+ "DocumentListResponse": ".types",
99
+ "DocumentLocalIngestRequest": ".types",
100
+ "DocumentLookupResponse": ".types",
101
+ "DocumentResponse": ".types",
102
+ "DocumentType": ".types",
103
+ "GroundX": ".ingest",
104
+ "GroundXEnvironment": ".environment",
105
+ "GroupDetail": ".types",
106
+ "GroupListResponse": ".types",
107
+ "GroupResponse": ".types",
108
+ "HealthResponse": ".types",
109
+ "HealthResponseHealth": ".types",
110
+ "HealthService": ".types",
111
+ "HealthServiceStatus": ".types",
112
+ "IngestLocalDocument": ".types",
113
+ "IngestLocalDocumentMetadata": ".types",
114
+ "IngestRemoteDocument": ".types",
115
+ "IngestResponse": ".types",
116
+ "IngestStatus": ".types",
117
+ "IngestStatusLight": ".types",
118
+ "IngestStatusProgress": ".types",
119
+ "IngestStatusProgressCancelled": ".types",
120
+ "IngestStatusProgressComplete": ".types",
121
+ "IngestStatusProgressErrors": ".types",
122
+ "IngestStatusProgressProcessing": ".types",
123
+ "MessageResponse": ".types",
124
+ "MeterDetail": ".types",
125
+ "ProcessLevel": ".types",
126
+ "ProcessesStatusResponse": ".types",
127
+ "ProcessingStatus": ".types",
128
+ "SearchContentRequestId": ".search",
129
+ "SearchResponse": ".types",
130
+ "SearchResponseSearch": ".types",
131
+ "SearchResultItem": ".types",
132
+ "SearchResultItemPagesItem": ".types",
133
+ "Sort": ".types",
134
+ "SortOrder": ".types",
135
+ "SubscriptionDetail": ".types",
136
+ "SubscriptionDetailMeters": ".types",
137
+ "UnauthorizedError": ".errors",
138
+ "WebsiteSource": ".types",
139
+ "WorkflowApplyRequest": ".types",
140
+ "WorkflowDetail": ".types",
141
+ "WorkflowDetailChunkStrategy": ".types",
142
+ "WorkflowDetailRelationships": ".types",
143
+ "WorkflowDetailSectionStrategy": ".types",
144
+ "WorkflowEngine": ".types",
145
+ "WorkflowEngineReasoningEffort": ".types",
146
+ "WorkflowEngineService": ".types",
147
+ "WorkflowPrompt": ".types",
148
+ "WorkflowPromptGroup": ".types",
149
+ "WorkflowPromptRole": ".types",
150
+ "WorkflowRequest": ".types",
151
+ "WorkflowRequestChunkStrategy": ".types",
152
+ "WorkflowRequestSectionStrategy": ".types",
153
+ "WorkflowResponse": ".types",
154
+ "WorkflowStep": ".types",
155
+ "WorkflowStepConfig": ".types",
156
+ "WorkflowStepConfigField": ".types",
157
+ "WorkflowSteps": ".types",
158
+ "WorkflowsGetRequestId": ".workflows",
159
+ "WorkflowsResponse": ".types",
160
+ "__version__": ".version",
161
+ "buckets": ".buckets",
162
+ "customer": ".customer",
163
+ "documents": ".documents",
164
+ "groups": ".groups",
165
+ "health": ".health",
166
+ "mcp": ".mcp",
167
+ "search": ".search",
168
+ "workflows": ".workflows",
169
+ }
170
+
171
+
172
+ def __getattr__(attr_name: str) -> typing.Any:
173
+ module_name = _dynamic_imports.get(attr_name)
174
+ if module_name is None:
175
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
176
+ try:
177
+ module = import_module(module_name, __package__)
178
+ if module_name == f".{attr_name}":
179
+ return module
180
+ else:
181
+ return getattr(module, attr_name)
182
+ except ImportError as e:
183
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
184
+ except AttributeError as e:
185
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
186
+
187
+
188
+ def __dir__():
189
+ lazy_attrs = list(_dynamic_imports.keys())
190
+ return sorted(lazy_attrs)
191
+
192
+
193
+ __all__ = [
194
+ "AsyncGroundX",
195
+ "BadRequestError",
196
+ "BoundingBoxDetail",
197
+ "BucketDetail",
198
+ "BucketListResponse",
199
+ "BucketResponse",
200
+ "BucketUpdateDetail",
201
+ "BucketUpdateResponse",
202
+ "CustomerDetail",
203
+ "CustomerResponse",
204
+ "Document",
205
+ "DocumentDetail",
206
+ "DocumentListResponse",
207
+ "DocumentLocalIngestRequest",
208
+ "DocumentLookupResponse",
209
+ "DocumentResponse",
210
+ "DocumentType",
211
+ "GroundX",
212
+ "GroundXEnvironment",
213
+ "GroupDetail",
214
+ "GroupListResponse",
215
+ "GroupResponse",
216
+ "HealthResponse",
217
+ "HealthResponseHealth",
218
+ "HealthService",
219
+ "HealthServiceStatus",
220
+ "IngestLocalDocument",
221
+ "IngestLocalDocumentMetadata",
222
+ "IngestRemoteDocument",
223
+ "IngestResponse",
224
+ "IngestStatus",
225
+ "IngestStatusLight",
226
+ "IngestStatusProgress",
227
+ "IngestStatusProgressCancelled",
228
+ "IngestStatusProgressComplete",
229
+ "IngestStatusProgressErrors",
230
+ "IngestStatusProgressProcessing",
231
+ "MessageResponse",
232
+ "MeterDetail",
233
+ "ProcessLevel",
234
+ "ProcessesStatusResponse",
235
+ "ProcessingStatus",
236
+ "SearchContentRequestId",
237
+ "SearchResponse",
238
+ "SearchResponseSearch",
239
+ "SearchResultItem",
240
+ "SearchResultItemPagesItem",
241
+ "Sort",
242
+ "SortOrder",
243
+ "SubscriptionDetail",
244
+ "SubscriptionDetailMeters",
245
+ "UnauthorizedError",
246
+ "WebsiteSource",
247
+ "WorkflowApplyRequest",
248
+ "WorkflowDetail",
249
+ "WorkflowDetailChunkStrategy",
250
+ "WorkflowDetailRelationships",
251
+ "WorkflowDetailSectionStrategy",
252
+ "WorkflowEngine",
253
+ "WorkflowEngineReasoningEffort",
254
+ "WorkflowEngineService",
255
+ "WorkflowPrompt",
256
+ "WorkflowPromptGroup",
257
+ "WorkflowPromptRole",
258
+ "WorkflowRequest",
259
+ "WorkflowRequestChunkStrategy",
260
+ "WorkflowRequestSectionStrategy",
261
+ "WorkflowResponse",
262
+ "WorkflowStep",
263
+ "WorkflowStepConfig",
264
+ "WorkflowStepConfigField",
265
+ "WorkflowSteps",
266
+ "WorkflowsGetRequestId",
267
+ "WorkflowsResponse",
268
+ "__version__",
269
+ "buckets",
270
+ "customer",
271
+ "documents",
272
+ "groups",
273
+ "health",
274
+ "mcp",
275
+ "search",
276
+ "workflows",
277
+ ]
@@ -118,9 +118,9 @@ class RawBucketsClient:
118
118
  raise BadRequestError(
119
119
  headers=dict(_response.headers),
120
120
  body=typing.cast(
121
- typing.Optional[typing.Any],
121
+ typing.Any,
122
122
  parse_obj_as(
123
- type_=typing.Optional[typing.Any], # type: ignore
123
+ type_=typing.Any, # type: ignore
124
124
  object_=_response.json(),
125
125
  ),
126
126
  ),
@@ -168,9 +168,9 @@ class RawBucketsClient:
168
168
  raise BadRequestError(
169
169
  headers=dict(_response.headers),
170
170
  body=typing.cast(
171
- typing.Optional[typing.Any],
171
+ typing.Any,
172
172
  parse_obj_as(
173
- type_=typing.Optional[typing.Any], # type: ignore
173
+ type_=typing.Any, # type: ignore
174
174
  object_=_response.json(),
175
175
  ),
176
176
  ),
@@ -179,9 +179,9 @@ class RawBucketsClient:
179
179
  raise UnauthorizedError(
180
180
  headers=dict(_response.headers),
181
181
  body=typing.cast(
182
- typing.Optional[typing.Any],
182
+ typing.Any,
183
183
  parse_obj_as(
184
- type_=typing.Optional[typing.Any], # type: ignore
184
+ type_=typing.Any, # type: ignore
185
185
  object_=_response.json(),
186
186
  ),
187
187
  ),
@@ -239,9 +239,9 @@ class RawBucketsClient:
239
239
  raise BadRequestError(
240
240
  headers=dict(_response.headers),
241
241
  body=typing.cast(
242
- typing.Optional[typing.Any],
242
+ typing.Any,
243
243
  parse_obj_as(
244
- type_=typing.Optional[typing.Any], # type: ignore
244
+ type_=typing.Any, # type: ignore
245
245
  object_=_response.json(),
246
246
  ),
247
247
  ),
@@ -250,9 +250,9 @@ class RawBucketsClient:
250
250
  raise UnauthorizedError(
251
251
  headers=dict(_response.headers),
252
252
  body=typing.cast(
253
- typing.Optional[typing.Any],
253
+ typing.Any,
254
254
  parse_obj_as(
255
- type_=typing.Optional[typing.Any], # type: ignore
255
+ type_=typing.Any, # type: ignore
256
256
  object_=_response.json(),
257
257
  ),
258
258
  ),
@@ -300,9 +300,9 @@ class RawBucketsClient:
300
300
  raise BadRequestError(
301
301
  headers=dict(_response.headers),
302
302
  body=typing.cast(
303
- typing.Optional[typing.Any],
303
+ typing.Any,
304
304
  parse_obj_as(
305
- type_=typing.Optional[typing.Any], # type: ignore
305
+ type_=typing.Any, # type: ignore
306
306
  object_=_response.json(),
307
307
  ),
308
308
  ),
@@ -311,9 +311,9 @@ class RawBucketsClient:
311
311
  raise UnauthorizedError(
312
312
  headers=dict(_response.headers),
313
313
  body=typing.cast(
314
- typing.Optional[typing.Any],
314
+ typing.Any,
315
315
  parse_obj_as(
316
- type_=typing.Optional[typing.Any], # type: ignore
316
+ type_=typing.Any, # type: ignore
317
317
  object_=_response.json(),
318
318
  ),
319
319
  ),
@@ -422,9 +422,9 @@ class AsyncRawBucketsClient:
422
422
  raise BadRequestError(
423
423
  headers=dict(_response.headers),
424
424
  body=typing.cast(
425
- typing.Optional[typing.Any],
425
+ typing.Any,
426
426
  parse_obj_as(
427
- type_=typing.Optional[typing.Any], # type: ignore
427
+ type_=typing.Any, # type: ignore
428
428
  object_=_response.json(),
429
429
  ),
430
430
  ),
@@ -472,9 +472,9 @@ class AsyncRawBucketsClient:
472
472
  raise BadRequestError(
473
473
  headers=dict(_response.headers),
474
474
  body=typing.cast(
475
- typing.Optional[typing.Any],
475
+ typing.Any,
476
476
  parse_obj_as(
477
- type_=typing.Optional[typing.Any], # type: ignore
477
+ type_=typing.Any, # type: ignore
478
478
  object_=_response.json(),
479
479
  ),
480
480
  ),
@@ -483,9 +483,9 @@ class AsyncRawBucketsClient:
483
483
  raise UnauthorizedError(
484
484
  headers=dict(_response.headers),
485
485
  body=typing.cast(
486
- typing.Optional[typing.Any],
486
+ typing.Any,
487
487
  parse_obj_as(
488
- type_=typing.Optional[typing.Any], # type: ignore
488
+ type_=typing.Any, # type: ignore
489
489
  object_=_response.json(),
490
490
  ),
491
491
  ),
@@ -543,9 +543,9 @@ class AsyncRawBucketsClient:
543
543
  raise BadRequestError(
544
544
  headers=dict(_response.headers),
545
545
  body=typing.cast(
546
- typing.Optional[typing.Any],
546
+ typing.Any,
547
547
  parse_obj_as(
548
- type_=typing.Optional[typing.Any], # type: ignore
548
+ type_=typing.Any, # type: ignore
549
549
  object_=_response.json(),
550
550
  ),
551
551
  ),
@@ -554,9 +554,9 @@ class AsyncRawBucketsClient:
554
554
  raise UnauthorizedError(
555
555
  headers=dict(_response.headers),
556
556
  body=typing.cast(
557
- typing.Optional[typing.Any],
557
+ typing.Any,
558
558
  parse_obj_as(
559
- type_=typing.Optional[typing.Any], # type: ignore
559
+ type_=typing.Any, # type: ignore
560
560
  object_=_response.json(),
561
561
  ),
562
562
  ),
@@ -604,9 +604,9 @@ class AsyncRawBucketsClient:
604
604
  raise BadRequestError(
605
605
  headers=dict(_response.headers),
606
606
  body=typing.cast(
607
- typing.Optional[typing.Any],
607
+ typing.Any,
608
608
  parse_obj_as(
609
- type_=typing.Optional[typing.Any], # type: ignore
609
+ type_=typing.Any, # type: ignore
610
610
  object_=_response.json(),
611
611
  ),
612
612
  ),
@@ -615,9 +615,9 @@ class AsyncRawBucketsClient:
615
615
  raise UnauthorizedError(
616
616
  headers=dict(_response.headers),
617
617
  body=typing.cast(
618
- typing.Optional[typing.Any],
618
+ typing.Any,
619
619
  parse_obj_as(
620
- type_=typing.Optional[typing.Any], # type: ignore
620
+ type_=typing.Any, # type: ignore
621
621
  object_=_response.json(),
622
622
  ),
623
623
  ),