groundx 2.1.0__tar.gz → 2.2.1__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.
- {groundx-2.1.0 → groundx-2.2.1}/LICENSE +1 -1
- {groundx-2.1.0 → groundx-2.2.1}/PKG-INFO +2 -2
- {groundx-2.1.0 → groundx-2.2.1}/README.md +1 -1
- {groundx-2.1.0 → groundx-2.2.1}/pyproject.toml +4 -1
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/client_wrapper.py +1 -1
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/http_client.py +2 -2
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/pydantic_utilities.py +2 -2
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/documents/client.py +168 -0
- groundx-2.2.1/src/groundx/types/document_type.py +27 -0
- groundx-2.2.1/src/groundx/types/processing_status.py +7 -0
- groundx-2.1.0/src/groundx/types/document_type.py +0 -7
- groundx-2.1.0/src/groundx/types/processing_status.py +0 -5
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/buckets/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/buckets/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/api_error.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/datetime_utils.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/file.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/jsonable_encoder.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/query_encoder.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/remove_none_from_dict.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/request_options.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/core/serialization.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/customer/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/customer/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/documents/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/environment.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/errors/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/errors/bad_request_error.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/errors/unauthorized_error.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/groups/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/groups/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/health/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/health/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/ingest.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/py.typed +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/search/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/search/client.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/search/types/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/search/types/search_content_request_id.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/__init__.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bounding_box_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bucket_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bucket_list_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bucket_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bucket_update_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/bucket_update_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/customer_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/customer_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document_list_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document_local_ingest_request.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document_lookup_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/document_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/group_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/group_list_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/group_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/health_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/health_response_health.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/health_service.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/health_service_status.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/ingest_local_document.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/ingest_local_document_metadata.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/ingest_remote_document.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/ingest_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/ingest_response_ingest.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/message_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/meter_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress_cancelled.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress_complete.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress_errors.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress_processing.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/search_response.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/search_response_search.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/search_result_item.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/sort.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/sort_order.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/subscription_detail.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/subscription_detail_meters.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/website_source.py +0 -0
- {groundx-2.1.0 → groundx-2.2.1}/src/groundx/version.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: groundx
|
3
|
-
Version: 2.1
|
3
|
+
Version: 2.2.1
|
4
4
|
Summary:
|
5
5
|
License: MIT
|
6
6
|
Requires-Python: >=3.8,<4.0
|
@@ -37,7 +37,7 @@ The GroundX Python library provides convenient access to the GroundX API from Py
|
|
37
37
|
|
38
38
|
## Documentation
|
39
39
|
|
40
|
-
API reference documentation is available [here](https://docs.
|
40
|
+
API reference documentation is available [here](https://docs.eyelevel.ai/reference).
|
41
41
|
|
42
42
|
## Installation
|
43
43
|
|
@@ -7,7 +7,7 @@ The GroundX Python library provides convenient access to the GroundX API from Py
|
|
7
7
|
|
8
8
|
## Documentation
|
9
9
|
|
10
|
-
API reference documentation is available [here](https://docs.
|
10
|
+
API reference documentation is available [here](https://docs.eyelevel.ai/reference).
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -85,8 +85,8 @@ def _retry_timeout(response: httpx.Response, retries: int) -> float:
|
|
85
85
|
|
86
86
|
|
87
87
|
def _should_retry(response: httpx.Response) -> bool:
|
88
|
-
|
89
|
-
return response.status_code >= 500 or response.status_code in
|
88
|
+
retryable_400s = [429, 408, 409]
|
89
|
+
return response.status_code >= 500 or response.status_code in retryable_400s
|
90
90
|
|
91
91
|
|
92
92
|
def remove_omit_from_dict(
|
@@ -79,7 +79,7 @@ def to_jsonable_with_fallback(
|
|
79
79
|
class UniversalBaseModel(pydantic.BaseModel):
|
80
80
|
if IS_PYDANTIC_V2:
|
81
81
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
82
|
-
# Allow fields
|
82
|
+
# Allow fields beginning with `model_` to be used in the model
|
83
83
|
protected_namespaces=(),
|
84
84
|
) # type: ignore # Pydantic v2
|
85
85
|
|
@@ -128,7 +128,7 @@ class UniversalBaseModel(pydantic.BaseModel):
|
|
128
128
|
Override the default dict method to `exclude_unset` by default. This function patches
|
129
129
|
`exclude_unset` to work include fields within non-None default values.
|
130
130
|
"""
|
131
|
-
# Note: the logic here is
|
131
|
+
# Note: the logic here is multiplexed given the levers exposed in Pydantic V1 vs V2
|
132
132
|
# Pydantic V1's .dict can be extremely slow, so we do not want to call it twice.
|
133
133
|
#
|
134
134
|
# We'd ideally do the same for Pydantic V2, but it shells out to a library to serialize models
|
@@ -204,6 +204,8 @@ class DocumentsClient:
|
|
204
204
|
) -> IngestResponse:
|
205
205
|
"""
|
206
206
|
Upload the content of a publicly accessible website for ingestion into a GroundX bucket. This is done by following links within a specified URL, recursively, up to a specified depth or number of pages.
|
207
|
+
Note1: This endpoint is currently not supported for on-prem deployments.
|
208
|
+
Note2: The `source_url` must include the protocol, http:// or https://.
|
207
209
|
|
208
210
|
Parameters
|
209
211
|
----------
|
@@ -746,6 +748,84 @@ class DocumentsClient:
|
|
746
748
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
747
749
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
748
750
|
|
751
|
+
def document_get_processing_status(
|
752
|
+
self,
|
753
|
+
*,
|
754
|
+
n: typing.Optional[int] = None,
|
755
|
+
status: typing.Optional[ProcessingStatus] = None,
|
756
|
+
request_options: typing.Optional[RequestOptions] = None,
|
757
|
+
) -> DocumentResponse:
|
758
|
+
"""
|
759
|
+
Get the current status of ingest processes, sorted from most recent to least.
|
760
|
+
|
761
|
+
Parameters
|
762
|
+
----------
|
763
|
+
n : typing.Optional[int]
|
764
|
+
The maximum number of returned processes. Accepts 1-100 with a default of 20.
|
765
|
+
|
766
|
+
status : typing.Optional[ProcessingStatus]
|
767
|
+
A status filter on the processing status. If this value is set, then only processes with this status will be returned in the results.
|
768
|
+
|
769
|
+
request_options : typing.Optional[RequestOptions]
|
770
|
+
Request-specific configuration.
|
771
|
+
|
772
|
+
Returns
|
773
|
+
-------
|
774
|
+
DocumentResponse
|
775
|
+
Look up success
|
776
|
+
|
777
|
+
Examples
|
778
|
+
--------
|
779
|
+
from groundx import GroundX
|
780
|
+
|
781
|
+
client = GroundX(
|
782
|
+
api_key="YOUR_API_KEY",
|
783
|
+
)
|
784
|
+
client.documents.document_get_processing_status()
|
785
|
+
"""
|
786
|
+
_response = self._client_wrapper.httpx_client.request(
|
787
|
+
"v1/ingest",
|
788
|
+
method="GET",
|
789
|
+
params={
|
790
|
+
"n": n,
|
791
|
+
"status": status,
|
792
|
+
},
|
793
|
+
request_options=request_options,
|
794
|
+
)
|
795
|
+
try:
|
796
|
+
if 200 <= _response.status_code < 300:
|
797
|
+
return typing.cast(
|
798
|
+
DocumentResponse,
|
799
|
+
parse_obj_as(
|
800
|
+
type_=DocumentResponse, # type: ignore
|
801
|
+
object_=_response.json(),
|
802
|
+
),
|
803
|
+
)
|
804
|
+
if _response.status_code == 400:
|
805
|
+
raise BadRequestError(
|
806
|
+
typing.cast(
|
807
|
+
typing.Optional[typing.Any],
|
808
|
+
parse_obj_as(
|
809
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
810
|
+
object_=_response.json(),
|
811
|
+
),
|
812
|
+
)
|
813
|
+
)
|
814
|
+
if _response.status_code == 401:
|
815
|
+
raise UnauthorizedError(
|
816
|
+
typing.cast(
|
817
|
+
typing.Optional[typing.Any],
|
818
|
+
parse_obj_as(
|
819
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
820
|
+
object_=_response.json(),
|
821
|
+
),
|
822
|
+
)
|
823
|
+
)
|
824
|
+
_response_json = _response.json()
|
825
|
+
except JSONDecodeError:
|
826
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
827
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
828
|
+
|
749
829
|
|
750
830
|
class AsyncDocumentsClient:
|
751
831
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
@@ -944,6 +1024,8 @@ class AsyncDocumentsClient:
|
|
944
1024
|
) -> IngestResponse:
|
945
1025
|
"""
|
946
1026
|
Upload the content of a publicly accessible website for ingestion into a GroundX bucket. This is done by following links within a specified URL, recursively, up to a specified depth or number of pages.
|
1027
|
+
Note1: This endpoint is currently not supported for on-prem deployments.
|
1028
|
+
Note2: The `source_url` must include the protocol, http:// or https://.
|
947
1029
|
|
948
1030
|
Parameters
|
949
1031
|
----------
|
@@ -1543,3 +1625,89 @@ class AsyncDocumentsClient:
|
|
1543
1625
|
except JSONDecodeError:
|
1544
1626
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
1545
1627
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
1628
|
+
|
1629
|
+
async def document_get_processing_status(
|
1630
|
+
self,
|
1631
|
+
*,
|
1632
|
+
n: typing.Optional[int] = None,
|
1633
|
+
status: typing.Optional[ProcessingStatus] = None,
|
1634
|
+
request_options: typing.Optional[RequestOptions] = None,
|
1635
|
+
) -> DocumentResponse:
|
1636
|
+
"""
|
1637
|
+
Get the current status of ingest processes, sorted from most recent to least.
|
1638
|
+
|
1639
|
+
Parameters
|
1640
|
+
----------
|
1641
|
+
n : typing.Optional[int]
|
1642
|
+
The maximum number of returned processes. Accepts 1-100 with a default of 20.
|
1643
|
+
|
1644
|
+
status : typing.Optional[ProcessingStatus]
|
1645
|
+
A status filter on the processing status. If this value is set, then only processes with this status will be returned in the results.
|
1646
|
+
|
1647
|
+
request_options : typing.Optional[RequestOptions]
|
1648
|
+
Request-specific configuration.
|
1649
|
+
|
1650
|
+
Returns
|
1651
|
+
-------
|
1652
|
+
DocumentResponse
|
1653
|
+
Look up success
|
1654
|
+
|
1655
|
+
Examples
|
1656
|
+
--------
|
1657
|
+
import asyncio
|
1658
|
+
|
1659
|
+
from groundx import AsyncGroundX
|
1660
|
+
|
1661
|
+
client = AsyncGroundX(
|
1662
|
+
api_key="YOUR_API_KEY",
|
1663
|
+
)
|
1664
|
+
|
1665
|
+
|
1666
|
+
async def main() -> None:
|
1667
|
+
await client.documents.document_get_processing_status()
|
1668
|
+
|
1669
|
+
|
1670
|
+
asyncio.run(main())
|
1671
|
+
"""
|
1672
|
+
_response = await self._client_wrapper.httpx_client.request(
|
1673
|
+
"v1/ingest",
|
1674
|
+
method="GET",
|
1675
|
+
params={
|
1676
|
+
"n": n,
|
1677
|
+
"status": status,
|
1678
|
+
},
|
1679
|
+
request_options=request_options,
|
1680
|
+
)
|
1681
|
+
try:
|
1682
|
+
if 200 <= _response.status_code < 300:
|
1683
|
+
return typing.cast(
|
1684
|
+
DocumentResponse,
|
1685
|
+
parse_obj_as(
|
1686
|
+
type_=DocumentResponse, # type: ignore
|
1687
|
+
object_=_response.json(),
|
1688
|
+
),
|
1689
|
+
)
|
1690
|
+
if _response.status_code == 400:
|
1691
|
+
raise BadRequestError(
|
1692
|
+
typing.cast(
|
1693
|
+
typing.Optional[typing.Any],
|
1694
|
+
parse_obj_as(
|
1695
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
1696
|
+
object_=_response.json(),
|
1697
|
+
),
|
1698
|
+
)
|
1699
|
+
)
|
1700
|
+
if _response.status_code == 401:
|
1701
|
+
raise UnauthorizedError(
|
1702
|
+
typing.cast(
|
1703
|
+
typing.Optional[typing.Any],
|
1704
|
+
parse_obj_as(
|
1705
|
+
type_=typing.Optional[typing.Any], # type: ignore
|
1706
|
+
object_=_response.json(),
|
1707
|
+
),
|
1708
|
+
)
|
1709
|
+
)
|
1710
|
+
_response_json = _response.json()
|
1711
|
+
except JSONDecodeError:
|
1712
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
1713
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
|
5
|
+
DocumentType = typing.Union[
|
6
|
+
typing.Literal[
|
7
|
+
"bmp",
|
8
|
+
"csv",
|
9
|
+
"docx",
|
10
|
+
"gif",
|
11
|
+
"heif",
|
12
|
+
"hwp",
|
13
|
+
"ico",
|
14
|
+
"jpg",
|
15
|
+
"json",
|
16
|
+
"pdf",
|
17
|
+
"png",
|
18
|
+
"pptx",
|
19
|
+
"svg",
|
20
|
+
"tiff",
|
21
|
+
"tsv",
|
22
|
+
"txt",
|
23
|
+
"xlsx",
|
24
|
+
"webp",
|
25
|
+
],
|
26
|
+
typing.Any,
|
27
|
+
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{groundx-2.1.0 → groundx-2.2.1}/src/groundx/types/process_status_response_ingest_progress_errors.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|