groundx 2.2.0__py3-none-any.whl → 2.2.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.
- groundx/core/client_wrapper.py +1 -1
- groundx/core/http_client.py +2 -2
- groundx/core/pydantic_utilities.py +2 -2
- groundx/documents/client.py +164 -0
- groundx/types/processing_status.py +3 -1
- {groundx-2.2.0.dist-info → groundx-2.2.1.dist-info}/METADATA +1 -1
- {groundx-2.2.0.dist-info → groundx-2.2.1.dist-info}/RECORD +9 -9
- {groundx-2.2.0.dist-info → groundx-2.2.1.dist-info}/LICENSE +0 -0
- {groundx-2.2.0.dist-info → groundx-2.2.1.dist-info}/WHEEL +0 -0
groundx/core/client_wrapper.py
CHANGED
groundx/core/http_client.py
CHANGED
@@ -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
|
groundx/documents/client.py
CHANGED
@@ -748,6 +748,84 @@ class DocumentsClient:
|
|
748
748
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
749
749
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
750
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
|
+
|
751
829
|
|
752
830
|
class AsyncDocumentsClient:
|
753
831
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
@@ -1547,3 +1625,89 @@ class AsyncDocumentsClient:
|
|
1547
1625
|
except JSONDecodeError:
|
1548
1626
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
1549
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)
|
@@ -2,4 +2,6 @@
|
|
2
2
|
|
3
3
|
import typing
|
4
4
|
|
5
|
-
ProcessingStatus = typing.Union[
|
5
|
+
ProcessingStatus = typing.Union[
|
6
|
+
typing.Literal["queued", "processing", "error", "complete", "cancelled", "active", "inactive"], typing.Any
|
7
|
+
]
|
@@ -4,12 +4,12 @@ groundx/buckets/client.py,sha256=4jlc9vfIult1mMJ4FZW4_KFJybZPStZt1FUplIgrxbU,239
|
|
4
4
|
groundx/client.py,sha256=dIW9OyrMyfC1N7HSxRrHh0w_8rJ8osNUOPdYD6ueQ6g,6515
|
5
5
|
groundx/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
6
6
|
groundx/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
7
|
-
groundx/core/client_wrapper.py,sha256=
|
7
|
+
groundx/core/client_wrapper.py,sha256=G63B6-bZ4H-eGq_Aixd23XGthfNL7M0DN1eOfFhGBGk,1802
|
8
8
|
groundx/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
9
9
|
groundx/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
10
|
-
groundx/core/http_client.py,sha256=
|
10
|
+
groundx/core/http_client.py,sha256=KL5RGa0y4n8nX0-07WRg4ZQUTq30sc-XJbWcP5vjBDg,19552
|
11
11
|
groundx/core/jsonable_encoder.py,sha256=qaF1gtgH-kQZb4kJskETwcCsOPUof-NnYVdszHkb-dM,3656
|
12
|
-
groundx/core/pydantic_utilities.py,sha256=
|
12
|
+
groundx/core/pydantic_utilities.py,sha256=UibVGGYmBDsV834x8CtckRDrTIL4lYJPMrcq9yvf7RM,11973
|
13
13
|
groundx/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenYM,2144
|
14
14
|
groundx/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
15
15
|
groundx/core/request_options.py,sha256=h0QUNCFVdCW_7GclVySCAY2w4NhtXVBUCmHgmzaxpcg,1681
|
@@ -17,7 +17,7 @@ groundx/core/serialization.py,sha256=D9h_t-RQON3-CHWs1C4ESY9B-Yd5d-l5lnTLb_X896g
|
|
17
17
|
groundx/customer/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
18
18
|
groundx/customer/client.py,sha256=C_JANeDewRD1Kg-q7LPxdiOSWbYSTOiYlBYZLRYPI44,3467
|
19
19
|
groundx/documents/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
20
|
-
groundx/documents/client.py,sha256=
|
20
|
+
groundx/documents/client.py,sha256=mxmRGO8phbIqxxBpkMttOqMHXc9wfwWIGWACGL4XY4c,60393
|
21
21
|
groundx/environment.py,sha256=CInm1_DKtZ1mrxutmKb1qqv82P33r_S87hZD3Hc1VB0,159
|
22
22
|
groundx/errors/__init__.py,sha256=-prNYsFd8xxM4va0vR1raZjcd10tllOJKyEWjX_pwdU,214
|
23
23
|
groundx/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcsZe1HKV9GDWJY,264
|
@@ -69,7 +69,7 @@ groundx/types/process_status_response_ingest_progress_cancelled.py,sha256=PpvHXz
|
|
69
69
|
groundx/types/process_status_response_ingest_progress_complete.py,sha256=6-UuZCHK28No15RPigumAJ4r_gAUjbElH3Brg7ED8pU,722
|
70
70
|
groundx/types/process_status_response_ingest_progress_errors.py,sha256=aSpl99wXwcTFhtkB47BpBZATcqzQS6cXHssKLPdtnzQ,720
|
71
71
|
groundx/types/process_status_response_ingest_progress_processing.py,sha256=rqaTkeki5Vf3SgeeZtuSRtioGqmj99JcbfKoeI-Hgos,724
|
72
|
-
groundx/types/processing_status.py,sha256=
|
72
|
+
groundx/types/processing_status.py,sha256=nUvsnKcDOFcT6NRDCTQ1vpm4KDNiKy8_b7PxaiKxnZM,226
|
73
73
|
groundx/types/search_response.py,sha256=EUwAFEHfzEisHCSTxa5zAy7VWY-bebV5VLx0b7irNlI,633
|
74
74
|
groundx/types/search_response_search.py,sha256=fhEbG9qQZHWlxpI_A9rLOHhm7VbzECrTLhicHkR2Xi0,1685
|
75
75
|
groundx/types/search_result_item.py,sha256=ut1q-aSTnzfRCfEQ8sdrf2A20ix2NF5iisiah5vPaww,3083
|
@@ -79,7 +79,7 @@ groundx/types/subscription_detail.py,sha256=WNfUw2EMVECIvNYcV2s51zZ6T3Utc4zYXw63
|
|
79
79
|
groundx/types/subscription_detail_meters.py,sha256=lBa8-1QlMVHjr5RLGqhiTKnD1KMM0AAHTWvz9TVtG8w,830
|
80
80
|
groundx/types/website_source.py,sha256=3WeRCiilNKKBTfhwgjo3jbcVI3vLTeM-KxI6dVzpg9o,1578
|
81
81
|
groundx/version.py,sha256=1yVogKaq260fQfckM2RYN2144SEw0QROsZW8ICtkG4U,74
|
82
|
-
groundx-2.2.
|
83
|
-
groundx-2.2.
|
84
|
-
groundx-2.2.
|
85
|
-
groundx-2.2.
|
82
|
+
groundx-2.2.1.dist-info/LICENSE,sha256=dFE6nY1bHnSn6NqmdlghlU1gQqLqYNphrceGVehSa7o,1065
|
83
|
+
groundx-2.2.1.dist-info/METADATA,sha256=VzAQTqH0vCRVzsc8nna6Z-r8kAsVIt3X2d9TWDpdGeY,5052
|
84
|
+
groundx-2.2.1.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
85
|
+
groundx-2.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|