Skip to content

Commit 6da0644

Browse files
feat(closes OPEN-9425): document /rows endpoint in API reference and …
1 parent 802ffe1 commit 6da0644

File tree

7 files changed

+399
-8
lines changed

7 files changed

+399
-8
lines changed

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
configured_endpoints: 27
2-
openapi_spec_hash: c70c3eccfe803e99c14e97e650b1e314
3-
config_hash: 1f7626e569e1a74574a58d7883170a0e
1+
configured_endpoints: 28
2+
openapi_spec_hash: 5f7962599290c70cb47c05c3b29fdbd8
3+
config_hash: 38b7fc7dfc9af970e9e1cb7b81ccc56b

api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,12 @@ Methods:
150150
Types:
151151

152152
```python
153-
from openlayer.types.inference_pipelines import RowUpdateResponse
153+
from openlayer.types.inference_pipelines import RowCreateResponse, RowUpdateResponse
154154
```
155155

156156
Methods:
157157

158+
- <code title="post /inference-pipelines/{inferencePipelineId}/rows">client.inference_pipelines.rows.<a href="./src/openlayer/resources/inference_pipelines/rows.py">create</a>(inference_pipeline_id, \*\*<a href="src/openlayer/types/inference_pipelines/row_create_params.py">params</a>) -> <a href="./src/openlayer/types/inference_pipelines/row_create_response.py">RowCreateResponse</a></code>
158159
- <code title="put /inference-pipelines/{inferencePipelineId}/rows">client.inference_pipelines.rows.<a href="./src/openlayer/resources/inference_pipelines/rows.py">update</a>(inference_pipeline_id, \*\*<a href="src/openlayer/types/inference_pipelines/row_update_params.py">params</a>) -> <a href="./src/openlayer/types/inference_pipelines/row_update_response.py">RowUpdateResponse</a></code>
159160

160161
## TestResults

src/openlayer/resources/inference_pipelines/rows.py

Lines changed: 172 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
from __future__ import annotations
44

5-
from typing import Optional
5+
from typing import Iterable, Optional
66

77
import httpx
88

9-
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9+
from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
1010
from ..._utils import maybe_transform, async_maybe_transform
1111
from ..._compat import cached_property
1212
from ..._resource import SyncAPIResource, AsyncAPIResource
@@ -17,7 +17,8 @@
1717
async_to_streamed_response_wrapper,
1818
)
1919
from ..._base_client import make_request_options
20-
from ...types.inference_pipelines import row_update_params
20+
from ...types.inference_pipelines import row_create_params, row_update_params
21+
from ...types.inference_pipelines.row_create_response import RowCreateResponse
2122
from ...types.inference_pipelines.row_update_response import RowUpdateResponse
2223

2324
__all__ = ["RowsResource", "AsyncRowsResource"]
@@ -43,6 +44,84 @@ def with_streaming_response(self) -> RowsResourceWithStreamingResponse:
4344
"""
4445
return RowsResourceWithStreamingResponse(self)
4546

47+
def create(
48+
self,
49+
inference_pipeline_id: str,
50+
*,
51+
asc: bool | Omit = omit,
52+
page: int | Omit = omit,
53+
per_page: int | Omit = omit,
54+
sort_column: str | Omit = omit,
55+
column_filters: Optional[Iterable[row_create_params.ColumnFilter]] | Omit = omit,
56+
exclude_row_id_list: Optional[Iterable[int]] | Omit = omit,
57+
not_search_query_and: Optional[SequenceNotStr[str]] | Omit = omit,
58+
not_search_query_or: Optional[SequenceNotStr[str]] | Omit = omit,
59+
row_id_list: Optional[Iterable[int]] | Omit = omit,
60+
search_query_and: Optional[SequenceNotStr[str]] | Omit = omit,
61+
search_query_or: Optional[SequenceNotStr[str]] | Omit = omit,
62+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
63+
# The extra values given here take precedence over values defined on the client or passed to this method.
64+
extra_headers: Headers | None = None,
65+
extra_query: Query | None = None,
66+
extra_body: Body | None = None,
67+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
68+
) -> RowCreateResponse:
69+
"""
70+
A list of rows for an inference pipeline.
71+
72+
Args:
73+
asc: Whether or not to sort on the sortColumn in ascending order.
74+
75+
page: The page to return in a paginated query.
76+
77+
per_page: Maximum number of items to return per page.
78+
79+
sort_column: Name of the column to sort on
80+
81+
extra_headers: Send extra headers
82+
83+
extra_query: Add additional query parameters to the request
84+
85+
extra_body: Add additional JSON properties to the request
86+
87+
timeout: Override the client-level default timeout for this request, in seconds
88+
"""
89+
if not inference_pipeline_id:
90+
raise ValueError(
91+
f"Expected a non-empty value for `inference_pipeline_id` but received {inference_pipeline_id!r}"
92+
)
93+
return self._post(
94+
f"/inference-pipelines/{inference_pipeline_id}/rows",
95+
body=maybe_transform(
96+
{
97+
"column_filters": column_filters,
98+
"exclude_row_id_list": exclude_row_id_list,
99+
"not_search_query_and": not_search_query_and,
100+
"not_search_query_or": not_search_query_or,
101+
"row_id_list": row_id_list,
102+
"search_query_and": search_query_and,
103+
"search_query_or": search_query_or,
104+
},
105+
row_create_params.RowCreateParams,
106+
),
107+
options=make_request_options(
108+
extra_headers=extra_headers,
109+
extra_query=extra_query,
110+
extra_body=extra_body,
111+
timeout=timeout,
112+
query=maybe_transform(
113+
{
114+
"asc": asc,
115+
"page": page,
116+
"per_page": per_page,
117+
"sort_column": sort_column,
118+
},
119+
row_create_params.RowCreateParams,
120+
),
121+
),
122+
cast_to=RowCreateResponse,
123+
)
124+
46125
def update(
47126
self,
48127
inference_pipeline_id: str,
@@ -115,6 +194,84 @@ def with_streaming_response(self) -> AsyncRowsResourceWithStreamingResponse:
115194
"""
116195
return AsyncRowsResourceWithStreamingResponse(self)
117196

197+
async def create(
198+
self,
199+
inference_pipeline_id: str,
200+
*,
201+
asc: bool | Omit = omit,
202+
page: int | Omit = omit,
203+
per_page: int | Omit = omit,
204+
sort_column: str | Omit = omit,
205+
column_filters: Optional[Iterable[row_create_params.ColumnFilter]] | Omit = omit,
206+
exclude_row_id_list: Optional[Iterable[int]] | Omit = omit,
207+
not_search_query_and: Optional[SequenceNotStr[str]] | Omit = omit,
208+
not_search_query_or: Optional[SequenceNotStr[str]] | Omit = omit,
209+
row_id_list: Optional[Iterable[int]] | Omit = omit,
210+
search_query_and: Optional[SequenceNotStr[str]] | Omit = omit,
211+
search_query_or: Optional[SequenceNotStr[str]] | Omit = omit,
212+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
213+
# The extra values given here take precedence over values defined on the client or passed to this method.
214+
extra_headers: Headers | None = None,
215+
extra_query: Query | None = None,
216+
extra_body: Body | None = None,
217+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
218+
) -> RowCreateResponse:
219+
"""
220+
A list of rows for an inference pipeline.
221+
222+
Args:
223+
asc: Whether or not to sort on the sortColumn in ascending order.
224+
225+
page: The page to return in a paginated query.
226+
227+
per_page: Maximum number of items to return per page.
228+
229+
sort_column: Name of the column to sort on
230+
231+
extra_headers: Send extra headers
232+
233+
extra_query: Add additional query parameters to the request
234+
235+
extra_body: Add additional JSON properties to the request
236+
237+
timeout: Override the client-level default timeout for this request, in seconds
238+
"""
239+
if not inference_pipeline_id:
240+
raise ValueError(
241+
f"Expected a non-empty value for `inference_pipeline_id` but received {inference_pipeline_id!r}"
242+
)
243+
return await self._post(
244+
f"/inference-pipelines/{inference_pipeline_id}/rows",
245+
body=await async_maybe_transform(
246+
{
247+
"column_filters": column_filters,
248+
"exclude_row_id_list": exclude_row_id_list,
249+
"not_search_query_and": not_search_query_and,
250+
"not_search_query_or": not_search_query_or,
251+
"row_id_list": row_id_list,
252+
"search_query_and": search_query_and,
253+
"search_query_or": search_query_or,
254+
},
255+
row_create_params.RowCreateParams,
256+
),
257+
options=make_request_options(
258+
extra_headers=extra_headers,
259+
extra_query=extra_query,
260+
extra_body=extra_body,
261+
timeout=timeout,
262+
query=await async_maybe_transform(
263+
{
264+
"asc": asc,
265+
"page": page,
266+
"per_page": per_page,
267+
"sort_column": sort_column,
268+
},
269+
row_create_params.RowCreateParams,
270+
),
271+
),
272+
cast_to=RowCreateResponse,
273+
)
274+
118275
async def update(
119276
self,
120277
inference_pipeline_id: str,
@@ -171,6 +328,9 @@ class RowsResourceWithRawResponse:
171328
def __init__(self, rows: RowsResource) -> None:
172329
self._rows = rows
173330

331+
self.create = to_raw_response_wrapper(
332+
rows.create,
333+
)
174334
self.update = to_raw_response_wrapper(
175335
rows.update,
176336
)
@@ -180,6 +340,9 @@ class AsyncRowsResourceWithRawResponse:
180340
def __init__(self, rows: AsyncRowsResource) -> None:
181341
self._rows = rows
182342

343+
self.create = async_to_raw_response_wrapper(
344+
rows.create,
345+
)
183346
self.update = async_to_raw_response_wrapper(
184347
rows.update,
185348
)
@@ -189,6 +352,9 @@ class RowsResourceWithStreamingResponse:
189352
def __init__(self, rows: RowsResource) -> None:
190353
self._rows = rows
191354

355+
self.create = to_streamed_response_wrapper(
356+
rows.create,
357+
)
192358
self.update = to_streamed_response_wrapper(
193359
rows.update,
194360
)
@@ -198,6 +364,9 @@ class AsyncRowsResourceWithStreamingResponse:
198364
def __init__(self, rows: AsyncRowsResource) -> None:
199365
self._rows = rows
200366

367+
self.create = async_to_streamed_response_wrapper(
368+
rows.create,
369+
)
201370
self.update = async_to_streamed_response_wrapper(
202371
rows.update,
203372
)

src/openlayer/types/inference_pipelines/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
from __future__ import annotations
44

5+
from .row_create_params import RowCreateParams as RowCreateParams
56
from .row_update_params import RowUpdateParams as RowUpdateParams
67
from .data_stream_params import DataStreamParams as DataStreamParams
8+
from .row_create_response import RowCreateResponse as RowCreateResponse
79
from .row_update_response import RowUpdateResponse as RowUpdateResponse
810
from .data_stream_response import DataStreamResponse as DataStreamResponse
911
from .test_result_list_params import TestResultListParams as TestResultListParams
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing import Union, Iterable, Optional
6+
from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
7+
8+
from ..._types import SequenceNotStr
9+
from ..._utils import PropertyInfo
10+
11+
__all__ = [
12+
"RowCreateParams",
13+
"ColumnFilter",
14+
"ColumnFilterSetColumnFilter",
15+
"ColumnFilterNumericColumnFilter",
16+
"ColumnFilterStringColumnFilter",
17+
]
18+
19+
20+
class RowCreateParams(TypedDict, total=False):
21+
asc: bool
22+
"""Whether or not to sort on the sortColumn in ascending order."""
23+
24+
page: int
25+
"""The page to return in a paginated query."""
26+
27+
per_page: Annotated[int, PropertyInfo(alias="perPage")]
28+
"""Maximum number of items to return per page."""
29+
30+
sort_column: Annotated[str, PropertyInfo(alias="sortColumn")]
31+
"""Name of the column to sort on"""
32+
33+
column_filters: Annotated[Optional[Iterable[ColumnFilter]], PropertyInfo(alias="columnFilters")]
34+
35+
exclude_row_id_list: Annotated[Optional[Iterable[int]], PropertyInfo(alias="excludeRowIdList")]
36+
37+
not_search_query_and: Annotated[Optional[SequenceNotStr[str]], PropertyInfo(alias="notSearchQueryAnd")]
38+
39+
not_search_query_or: Annotated[Optional[SequenceNotStr[str]], PropertyInfo(alias="notSearchQueryOr")]
40+
41+
row_id_list: Annotated[Optional[Iterable[int]], PropertyInfo(alias="rowIdList")]
42+
43+
search_query_and: Annotated[Optional[SequenceNotStr[str]], PropertyInfo(alias="searchQueryAnd")]
44+
45+
search_query_or: Annotated[Optional[SequenceNotStr[str]], PropertyInfo(alias="searchQueryOr")]
46+
47+
48+
class ColumnFilterSetColumnFilter(TypedDict, total=False):
49+
measurement: Required[str]
50+
"""The name of the column."""
51+
52+
operator: Required[Literal["contains_none", "contains_any", "contains_all", "one_of", "none_of"]]
53+
54+
value: Required[SequenceNotStr[Union[str, float]]]
55+
56+
57+
class ColumnFilterNumericColumnFilter(TypedDict, total=False):
58+
measurement: Required[str]
59+
"""The name of the column."""
60+
61+
operator: Required[Literal[">", ">=", "is", "<", "<=", "!="]]
62+
63+
value: Required[Optional[float]]
64+
65+
66+
class ColumnFilterStringColumnFilter(TypedDict, total=False):
67+
measurement: Required[str]
68+
"""The name of the column."""
69+
70+
operator: Required[Literal["is", "!="]]
71+
72+
value: Required[Union[str, bool]]
73+
74+
75+
ColumnFilter: TypeAlias = Union[
76+
ColumnFilterSetColumnFilter, ColumnFilterNumericColumnFilter, ColumnFilterStringColumnFilter
77+
]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import List
4+
5+
from ..._models import BaseModel
6+
7+
__all__ = ["RowCreateResponse", "Item"]
8+
9+
10+
class Item(BaseModel):
11+
openlayer_row_id: int
12+
13+
14+
class RowCreateResponse(BaseModel):
15+
items: List[Item]

0 commit comments

Comments
 (0)