main
  1# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  2
  3from __future__ import annotations
  4
  5import os
  6from typing import Any, cast
  7
  8import pytest
  9
 10from openai import OpenAI, AsyncOpenAI
 11from tests.utils import assert_matches_type
 12from openai.pagination import SyncCursorPage, AsyncCursorPage
 13from openai.types.evals.runs import OutputItemListResponse, OutputItemRetrieveResponse
 14
 15base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
 16
 17
 18class TestOutputItems:
 19    parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
 20
 21    @parametrize
 22    def test_method_retrieve(self, client: OpenAI) -> None:
 23        output_item = client.evals.runs.output_items.retrieve(
 24            output_item_id="output_item_id",
 25            eval_id="eval_id",
 26            run_id="run_id",
 27        )
 28        assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
 29
 30    @parametrize
 31    def test_raw_response_retrieve(self, client: OpenAI) -> None:
 32        response = client.evals.runs.output_items.with_raw_response.retrieve(
 33            output_item_id="output_item_id",
 34            eval_id="eval_id",
 35            run_id="run_id",
 36        )
 37
 38        assert response.is_closed is True
 39        assert response.http_request.headers.get("X-Stainless-Lang") == "python"
 40        output_item = response.parse()
 41        assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
 42
 43    @parametrize
 44    def test_streaming_response_retrieve(self, client: OpenAI) -> None:
 45        with client.evals.runs.output_items.with_streaming_response.retrieve(
 46            output_item_id="output_item_id",
 47            eval_id="eval_id",
 48            run_id="run_id",
 49        ) as response:
 50            assert not response.is_closed
 51            assert response.http_request.headers.get("X-Stainless-Lang") == "python"
 52
 53            output_item = response.parse()
 54            assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
 55
 56        assert cast(Any, response.is_closed) is True
 57
 58    @parametrize
 59    def test_path_params_retrieve(self, client: OpenAI) -> None:
 60        with pytest.raises(ValueError, match=r"Expected a non-empty value for `eval_id` but received ''"):
 61            client.evals.runs.output_items.with_raw_response.retrieve(
 62                output_item_id="output_item_id",
 63                eval_id="",
 64                run_id="run_id",
 65            )
 66
 67        with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"):
 68            client.evals.runs.output_items.with_raw_response.retrieve(
 69                output_item_id="output_item_id",
 70                eval_id="eval_id",
 71                run_id="",
 72            )
 73
 74        with pytest.raises(ValueError, match=r"Expected a non-empty value for `output_item_id` but received ''"):
 75            client.evals.runs.output_items.with_raw_response.retrieve(
 76                output_item_id="",
 77                eval_id="eval_id",
 78                run_id="run_id",
 79            )
 80
 81    @parametrize
 82    def test_method_list(self, client: OpenAI) -> None:
 83        output_item = client.evals.runs.output_items.list(
 84            run_id="run_id",
 85            eval_id="eval_id",
 86        )
 87        assert_matches_type(SyncCursorPage[OutputItemListResponse], output_item, path=["response"])
 88
 89    @parametrize
 90    def test_method_list_with_all_params(self, client: OpenAI) -> None:
 91        output_item = client.evals.runs.output_items.list(
 92            run_id="run_id",
 93            eval_id="eval_id",
 94            after="after",
 95            limit=0,
 96            order="asc",
 97            status="fail",
 98        )
 99        assert_matches_type(SyncCursorPage[OutputItemListResponse], output_item, path=["response"])
100
101    @parametrize
102    def test_raw_response_list(self, client: OpenAI) -> None:
103        response = client.evals.runs.output_items.with_raw_response.list(
104            run_id="run_id",
105            eval_id="eval_id",
106        )
107
108        assert response.is_closed is True
109        assert response.http_request.headers.get("X-Stainless-Lang") == "python"
110        output_item = response.parse()
111        assert_matches_type(SyncCursorPage[OutputItemListResponse], output_item, path=["response"])
112
113    @parametrize
114    def test_streaming_response_list(self, client: OpenAI) -> None:
115        with client.evals.runs.output_items.with_streaming_response.list(
116            run_id="run_id",
117            eval_id="eval_id",
118        ) as response:
119            assert not response.is_closed
120            assert response.http_request.headers.get("X-Stainless-Lang") == "python"
121
122            output_item = response.parse()
123            assert_matches_type(SyncCursorPage[OutputItemListResponse], output_item, path=["response"])
124
125        assert cast(Any, response.is_closed) is True
126
127    @parametrize
128    def test_path_params_list(self, client: OpenAI) -> None:
129        with pytest.raises(ValueError, match=r"Expected a non-empty value for `eval_id` but received ''"):
130            client.evals.runs.output_items.with_raw_response.list(
131                run_id="run_id",
132                eval_id="",
133            )
134
135        with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"):
136            client.evals.runs.output_items.with_raw_response.list(
137                run_id="",
138                eval_id="eval_id",
139            )
140
141
142class TestAsyncOutputItems:
143    parametrize = pytest.mark.parametrize(
144        "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
145    )
146
147    @parametrize
148    async def test_method_retrieve(self, async_client: AsyncOpenAI) -> None:
149        output_item = await async_client.evals.runs.output_items.retrieve(
150            output_item_id="output_item_id",
151            eval_id="eval_id",
152            run_id="run_id",
153        )
154        assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
155
156    @parametrize
157    async def test_raw_response_retrieve(self, async_client: AsyncOpenAI) -> None:
158        response = await async_client.evals.runs.output_items.with_raw_response.retrieve(
159            output_item_id="output_item_id",
160            eval_id="eval_id",
161            run_id="run_id",
162        )
163
164        assert response.is_closed is True
165        assert response.http_request.headers.get("X-Stainless-Lang") == "python"
166        output_item = response.parse()
167        assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
168
169    @parametrize
170    async def test_streaming_response_retrieve(self, async_client: AsyncOpenAI) -> None:
171        async with async_client.evals.runs.output_items.with_streaming_response.retrieve(
172            output_item_id="output_item_id",
173            eval_id="eval_id",
174            run_id="run_id",
175        ) as response:
176            assert not response.is_closed
177            assert response.http_request.headers.get("X-Stainless-Lang") == "python"
178
179            output_item = await response.parse()
180            assert_matches_type(OutputItemRetrieveResponse, output_item, path=["response"])
181
182        assert cast(Any, response.is_closed) is True
183
184    @parametrize
185    async def test_path_params_retrieve(self, async_client: AsyncOpenAI) -> None:
186        with pytest.raises(ValueError, match=r"Expected a non-empty value for `eval_id` but received ''"):
187            await async_client.evals.runs.output_items.with_raw_response.retrieve(
188                output_item_id="output_item_id",
189                eval_id="",
190                run_id="run_id",
191            )
192
193        with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"):
194            await async_client.evals.runs.output_items.with_raw_response.retrieve(
195                output_item_id="output_item_id",
196                eval_id="eval_id",
197                run_id="",
198            )
199
200        with pytest.raises(ValueError, match=r"Expected a non-empty value for `output_item_id` but received ''"):
201            await async_client.evals.runs.output_items.with_raw_response.retrieve(
202                output_item_id="",
203                eval_id="eval_id",
204                run_id="run_id",
205            )
206
207    @parametrize
208    async def test_method_list(self, async_client: AsyncOpenAI) -> None:
209        output_item = await async_client.evals.runs.output_items.list(
210            run_id="run_id",
211            eval_id="eval_id",
212        )
213        assert_matches_type(AsyncCursorPage[OutputItemListResponse], output_item, path=["response"])
214
215    @parametrize
216    async def test_method_list_with_all_params(self, async_client: AsyncOpenAI) -> None:
217        output_item = await async_client.evals.runs.output_items.list(
218            run_id="run_id",
219            eval_id="eval_id",
220            after="after",
221            limit=0,
222            order="asc",
223            status="fail",
224        )
225        assert_matches_type(AsyncCursorPage[OutputItemListResponse], output_item, path=["response"])
226
227    @parametrize
228    async def test_raw_response_list(self, async_client: AsyncOpenAI) -> None:
229        response = await async_client.evals.runs.output_items.with_raw_response.list(
230            run_id="run_id",
231            eval_id="eval_id",
232        )
233
234        assert response.is_closed is True
235        assert response.http_request.headers.get("X-Stainless-Lang") == "python"
236        output_item = response.parse()
237        assert_matches_type(AsyncCursorPage[OutputItemListResponse], output_item, path=["response"])
238
239    @parametrize
240    async def test_streaming_response_list(self, async_client: AsyncOpenAI) -> None:
241        async with async_client.evals.runs.output_items.with_streaming_response.list(
242            run_id="run_id",
243            eval_id="eval_id",
244        ) as response:
245            assert not response.is_closed
246            assert response.http_request.headers.get("X-Stainless-Lang") == "python"
247
248            output_item = await response.parse()
249            assert_matches_type(AsyncCursorPage[OutputItemListResponse], output_item, path=["response"])
250
251        assert cast(Any, response.is_closed) is True
252
253    @parametrize
254    async def test_path_params_list(self, async_client: AsyncOpenAI) -> None:
255        with pytest.raises(ValueError, match=r"Expected a non-empty value for `eval_id` but received ''"):
256            await async_client.evals.runs.output_items.with_raw_response.list(
257                run_id="run_id",
258                eval_id="",
259            )
260
261        with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"):
262            await async_client.evals.runs.output_items.with_raw_response.list(
263                run_id="",
264                eval_id="eval_id",
265            )