diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2aca35a..d04f223 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.5.0" + ".": "0.5.1" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index ea4794f..778c22b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 24 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/parallel-web%2Fparallel-sdk-57e1c56be0942c131ab5f24d8620de166d0721ef7f3423532abc7027e5a989e7.yml -openapi_spec_hash: e61f831e30d19590eb3138a1b1709d1d -config_hash: 80e7ee7ad8e3424616aca7189ffd5ae7 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/parallel-web%2Fparallel-sdk-66ee13c3475d2c76f0956f258f0469903155b83ef02e839641be94cdc2014cf3.yml +openapi_spec_hash: 88af7b88725bead1f8ccdcaeb436fadb +config_hash: e17d82e9cb35004e5f9a9d3c4cf51aeb diff --git a/CHANGELOG.md b/CHANGELOG.md index 4848d83..7c1dd5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.5.1 (2026-04-22) + +Full Changelog: [v0.5.0...v0.5.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.5.0...v0.5.1) + +### Features + +* **api:** manual updates ([86c7d33](https://github.com/parallel-web/parallel-sdk-python/commit/86c7d334df7c2018d0277fe3efa93fb7029f6a41)) +* **api:** Mark search and extract as deprecated ([cfdea3b](https://github.com/parallel-web/parallel-sdk-python/commit/cfdea3b19622911e65c9359f0acdbd4b201d2d08)) +* **api:** OpenAPI changes ([cfc5fb3](https://github.com/parallel-web/parallel-sdk-python/commit/cfc5fb373a46c73c2f79057b593712d7b847ee33)) + ## 0.5.0 (2026-04-21) Full Changelog: [v0.4.2...v0.5.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.2...v0.5.0) diff --git a/pyproject.toml b/pyproject.toml index b55996c..621c3da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "parallel-web" -version = "0.5.0" +version = "0.5.1" description = "The official Python library for the Parallel API" dynamic = ["readme"] license = "MIT" diff --git a/src/parallel/_client.py b/src/parallel/_client.py index 74f06c7..3ce3e24 100644 --- a/src/parallel/_client.py +++ b/src/parallel/_client.py @@ -247,8 +247,10 @@ def extract( """ Extracts relevant content from specific web URLs. - The legacy Extract API reference is available - [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract). + The legacy Extract API reference (`/v1beta/extract` endpoint) is available + [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and + migration guide is + [here](https://docs.parallel.ai/extract/extract-migration-guide). Args: urls: URLs to extract content from. Up to 20 URLs. @@ -322,8 +324,10 @@ def search( """ Searches the web. - The legacy Search API reference is available - [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search). + The legacy Search API reference (`/v1beta/search` endpoint) is available + [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and + migration guide is + [here](https://docs.parallel.ai/search/search-migration-guide). Args: search_queries: Concise keyword search queries, 3-6 words each. At least one query is required, @@ -594,8 +598,10 @@ async def extract( """ Extracts relevant content from specific web URLs. - The legacy Extract API reference is available - [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract). + The legacy Extract API reference (`/v1beta/extract` endpoint) is available + [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and + migration guide is + [here](https://docs.parallel.ai/extract/extract-migration-guide). Args: urls: URLs to extract content from. Up to 20 URLs. @@ -669,8 +675,10 @@ async def search( """ Searches the web. - The legacy Search API reference is available - [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search). + The legacy Search API reference (`/v1beta/search` endpoint) is available + [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and + migration guide is + [here](https://docs.parallel.ai/search/search-migration-guide). Args: search_queries: Concise keyword search queries, 3-6 words each. At least one query is required, diff --git a/src/parallel/_version.py b/src/parallel/_version.py index e3da38f..ee42083 100644 --- a/src/parallel/_version.py +++ b/src/parallel/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "parallel" -__version__ = "0.5.0" # x-release-please-version +__version__ = "0.5.1" # x-release-please-version diff --git a/src/parallel/resources/beta/beta.py b/src/parallel/resources/beta/beta.py index fa59196..ef62ac6 100644 --- a/src/parallel/resources/beta/beta.py +++ b/src/parallel/resources/beta/beta.py @@ -2,6 +2,7 @@ from __future__ import annotations +import typing_extensions from typing import List, Optional from itertools import chain from typing_extensions import Literal @@ -113,10 +114,14 @@ def with_streaming_response(self) -> BetaResourceWithStreamingResponse: """ return BetaResourceWithStreamingResponse(self) + @typing_extensions.deprecated( + "Use client.extract instead. For more info, see https://docs.parallel.ai/extract/extract-migration-guide" + ) def extract( self, *, urls: SequenceNotStr[str], + client_model: Optional[str] | Omit = omit, excerpts: beta_extract_params.Excerpts | Omit = omit, fetch_policy: Optional[FetchPolicyParam] | Omit = omit, full_content: beta_extract_params.FullContent | Omit = omit, @@ -138,6 +143,9 @@ def extract( `search-extract-2025-10-10`. Args: + client_model: The model generating this request and consuming the results. Enables + optimizations and tailors default settings for the model's capabilities. + excerpts: Include excerpts from each URL relevant to the search objective and queries. Note that if neither objective nor search_queries is provided, excerpts are redundant with full content. @@ -181,6 +189,7 @@ def extract( body=maybe_transform( { "urls": urls, + "client_model": client_model, "excerpts": excerpts, "fetch_policy": fetch_policy, "full_content": full_content, @@ -196,9 +205,13 @@ def extract( cast_to=ExtractResponse, ) + @typing_extensions.deprecated( + "Use client.search instead. For more info, see https://docs.parallel.ai/search/search-migration-guide" + ) def search( self, *, + client_model: Optional[str] | Omit = omit, excerpts: ExcerptSettingsParam | Omit = omit, fetch_policy: Optional[FetchPolicyParam] | Omit = omit, location: Optional[str] | Omit = omit, @@ -222,6 +235,9 @@ def search( Searches the web. Args: + client_model: The model generating this request and consuming the results. Enables + optimizations and tailors default settings for the model's capabilities. + excerpts: Optional settings to configure excerpt generation. fetch_policy: Policy for live fetching web results. @@ -284,6 +300,7 @@ def search( "/v1beta/search", body=maybe_transform( { + "client_model": client_model, "excerpts": excerpts, "fetch_policy": fetch_policy, "location": location, @@ -364,10 +381,14 @@ def with_streaming_response(self) -> AsyncBetaResourceWithStreamingResponse: """ return AsyncBetaResourceWithStreamingResponse(self) + @typing_extensions.deprecated( + "Use client.extract instead. For more info, see https://docs.parallel.ai/extract/extract-migration-guide" + ) async def extract( self, *, urls: SequenceNotStr[str], + client_model: Optional[str] | Omit = omit, excerpts: beta_extract_params.Excerpts | Omit = omit, fetch_policy: Optional[FetchPolicyParam] | Omit = omit, full_content: beta_extract_params.FullContent | Omit = omit, @@ -389,6 +410,9 @@ async def extract( `search-extract-2025-10-10`. Args: + client_model: The model generating this request and consuming the results. Enables + optimizations and tailors default settings for the model's capabilities. + excerpts: Include excerpts from each URL relevant to the search objective and queries. Note that if neither objective nor search_queries is provided, excerpts are redundant with full content. @@ -432,6 +456,7 @@ async def extract( body=await async_maybe_transform( { "urls": urls, + "client_model": client_model, "excerpts": excerpts, "fetch_policy": fetch_policy, "full_content": full_content, @@ -447,9 +472,13 @@ async def extract( cast_to=ExtractResponse, ) + @typing_extensions.deprecated( + "Use client.search instead. For more info, see https://docs.parallel.ai/search/search-migration-guide" + ) async def search( self, *, + client_model: Optional[str] | Omit = omit, excerpts: ExcerptSettingsParam | Omit = omit, fetch_policy: Optional[FetchPolicyParam] | Omit = omit, location: Optional[str] | Omit = omit, @@ -473,6 +502,9 @@ async def search( Searches the web. Args: + client_model: The model generating this request and consuming the results. Enables + optimizations and tailors default settings for the model's capabilities. + excerpts: Optional settings to configure excerpt generation. fetch_policy: Policy for live fetching web results. @@ -535,6 +567,7 @@ async def search( "/v1beta/search", body=await async_maybe_transform( { + "client_model": client_model, "excerpts": excerpts, "fetch_policy": fetch_policy, "location": location, @@ -560,11 +593,15 @@ class BetaResourceWithRawResponse: def __init__(self, beta: BetaResource) -> None: self._beta = beta - self.extract = to_raw_response_wrapper( - beta.extract, + self.extract = ( # pyright: ignore[reportDeprecated] + to_raw_response_wrapper( + beta.extract, # pyright: ignore[reportDeprecated], + ) ) - self.search = to_raw_response_wrapper( - beta.search, + self.search = ( # pyright: ignore[reportDeprecated] + to_raw_response_wrapper( + beta.search, # pyright: ignore[reportDeprecated], + ) ) @cached_property @@ -611,11 +648,15 @@ class AsyncBetaResourceWithRawResponse: def __init__(self, beta: AsyncBetaResource) -> None: self._beta = beta - self.extract = async_to_raw_response_wrapper( - beta.extract, + self.extract = ( # pyright: ignore[reportDeprecated] + async_to_raw_response_wrapper( + beta.extract, # pyright: ignore[reportDeprecated], + ) ) - self.search = async_to_raw_response_wrapper( - beta.search, + self.search = ( # pyright: ignore[reportDeprecated] + async_to_raw_response_wrapper( + beta.search, # pyright: ignore[reportDeprecated], + ) ) @cached_property @@ -662,11 +703,15 @@ class BetaResourceWithStreamingResponse: def __init__(self, beta: BetaResource) -> None: self._beta = beta - self.extract = to_streamed_response_wrapper( - beta.extract, + self.extract = ( # pyright: ignore[reportDeprecated] + to_streamed_response_wrapper( + beta.extract, # pyright: ignore[reportDeprecated], + ) ) - self.search = to_streamed_response_wrapper( - beta.search, + self.search = ( # pyright: ignore[reportDeprecated] + to_streamed_response_wrapper( + beta.search, # pyright: ignore[reportDeprecated], + ) ) @cached_property @@ -713,11 +758,15 @@ class AsyncBetaResourceWithStreamingResponse: def __init__(self, beta: AsyncBetaResource) -> None: self._beta = beta - self.extract = async_to_streamed_response_wrapper( - beta.extract, + self.extract = ( # pyright: ignore[reportDeprecated] + async_to_streamed_response_wrapper( + beta.extract, # pyright: ignore[reportDeprecated], + ) ) - self.search = async_to_streamed_response_wrapper( - beta.search, + self.search = ( # pyright: ignore[reportDeprecated] + async_to_streamed_response_wrapper( + beta.search, # pyright: ignore[reportDeprecated], + ) ) @cached_property diff --git a/src/parallel/types/beta/beta_extract_params.py b/src/parallel/types/beta/beta_extract_params.py index 578ed7c..d78d06c 100644 --- a/src/parallel/types/beta/beta_extract_params.py +++ b/src/parallel/types/beta/beta_extract_params.py @@ -17,6 +17,12 @@ class BetaExtractParams(TypedDict, total=False): urls: Required[SequenceNotStr[str]] + client_model: Optional[str] + """The model generating this request and consuming the results. + + Enables optimizations and tailors default settings for the model's capabilities. + """ + excerpts: Excerpts """Include excerpts from each URL relevant to the search objective and queries. diff --git a/src/parallel/types/beta/beta_search_params.py b/src/parallel/types/beta/beta_search_params.py index 1b82406..461c90b 100644 --- a/src/parallel/types/beta/beta_search_params.py +++ b/src/parallel/types/beta/beta_search_params.py @@ -16,6 +16,12 @@ class BetaSearchParams(TypedDict, total=False): + client_model: Optional[str] + """The model generating this request and consuming the results. + + Enables optimizations and tailors default settings for the model's capabilities. + """ + excerpts: ExcerptSettingsParam """Optional settings to configure excerpt generation.""" diff --git a/tests/api_resources/test_beta.py b/tests/api_resources/test_beta.py index 417825f..1bffb1b 100644 --- a/tests/api_resources/test_beta.py +++ b/tests/api_resources/test_beta.py @@ -12,6 +12,8 @@ from parallel._utils import parse_date from parallel.types.beta import SearchResult, ExtractResponse +# pyright: reportDeprecated=false + base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -20,34 +22,40 @@ class TestBeta: @parametrize def test_method_extract(self, client: Parallel) -> None: - beta = client.beta.extract( - urls=["string"], - ) + with pytest.warns(DeprecationWarning): + beta = client.beta.extract( + urls=["string"], + ) + assert_matches_type(ExtractResponse, beta, path=["response"]) @parametrize def test_method_extract_with_all_params(self, client: Parallel) -> None: - beta = client.beta.extract( - urls=["string"], - excerpts=True, - fetch_policy={ - "disable_cache_fallback": True, - "max_age_seconds": 86400, - "timeout_seconds": 60, - }, - full_content=True, - objective="objective", - search_queries=["string"], - session_id="session_id", - betas=["mcp-server-2025-07-17"], - ) + with pytest.warns(DeprecationWarning): + beta = client.beta.extract( + urls=["string"], + client_model="claude-opus-4-7", + excerpts=True, + fetch_policy={ + "disable_cache_fallback": True, + "max_age_seconds": 86400, + "timeout_seconds": 60, + }, + full_content=True, + objective="objective", + search_queries=["string"], + session_id="session_id", + betas=["mcp-server-2025-07-17"], + ) + assert_matches_type(ExtractResponse, beta, path=["response"]) @parametrize def test_raw_response_extract(self, client: Parallel) -> None: - response = client.beta.with_raw_response.extract( - urls=["string"], - ) + with pytest.warns(DeprecationWarning): + response = client.beta.with_raw_response.extract( + urls=["string"], + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -56,54 +64,61 @@ def test_raw_response_extract(self, client: Parallel) -> None: @parametrize def test_streaming_response_extract(self, client: Parallel) -> None: - with client.beta.with_streaming_response.extract( - urls=["string"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.beta.with_streaming_response.extract( + urls=["string"], + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - beta = response.parse() - assert_matches_type(ExtractResponse, beta, path=["response"]) + beta = response.parse() + assert_matches_type(ExtractResponse, beta, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize def test_method_search(self, client: Parallel) -> None: - beta = client.beta.search() + with pytest.warns(DeprecationWarning): + beta = client.beta.search() + assert_matches_type(SearchResult, beta, path=["response"]) @parametrize def test_method_search_with_all_params(self, client: Parallel) -> None: - beta = client.beta.search( - excerpts={ - "max_chars_per_result": 0, - "max_chars_total": 0, - }, - fetch_policy={ - "disable_cache_fallback": True, - "max_age_seconds": 86400, - "timeout_seconds": 60, - }, - location="us", - max_chars_per_result=0, - max_results=0, - mode="one-shot", - objective="objective", - processor="base", - search_queries=["string"], - session_id="session_id", - source_policy={ - "after_date": parse_date("2024-01-01"), - "exclude_domains": ["reddit.com", "x.com", ".ai"], - "include_domains": ["wikipedia.org", "usa.gov", ".edu"], - }, - betas=["mcp-server-2025-07-17"], - ) + with pytest.warns(DeprecationWarning): + beta = client.beta.search( + client_model="claude-opus-4-7", + excerpts={ + "max_chars_per_result": 0, + "max_chars_total": 0, + }, + fetch_policy={ + "disable_cache_fallback": True, + "max_age_seconds": 86400, + "timeout_seconds": 60, + }, + location="us", + max_chars_per_result=0, + max_results=0, + mode="one-shot", + objective="objective", + processor="base", + search_queries=["string"], + session_id="session_id", + source_policy={ + "after_date": parse_date("2024-01-01"), + "exclude_domains": ["reddit.com", "x.com", ".ai"], + "include_domains": ["wikipedia.org", "usa.gov", ".edu"], + }, + betas=["mcp-server-2025-07-17"], + ) + assert_matches_type(SearchResult, beta, path=["response"]) @parametrize def test_raw_response_search(self, client: Parallel) -> None: - response = client.beta.with_raw_response.search() + with pytest.warns(DeprecationWarning): + response = client.beta.with_raw_response.search() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -112,12 +127,13 @@ def test_raw_response_search(self, client: Parallel) -> None: @parametrize def test_streaming_response_search(self, client: Parallel) -> None: - with client.beta.with_streaming_response.search() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + with client.beta.with_streaming_response.search() as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - beta = response.parse() - assert_matches_type(SearchResult, beta, path=["response"]) + beta = response.parse() + assert_matches_type(SearchResult, beta, path=["response"]) assert cast(Any, response.is_closed) is True @@ -129,34 +145,40 @@ class TestAsyncBeta: @parametrize async def test_method_extract(self, async_client: AsyncParallel) -> None: - beta = await async_client.beta.extract( - urls=["string"], - ) + with pytest.warns(DeprecationWarning): + beta = await async_client.beta.extract( + urls=["string"], + ) + assert_matches_type(ExtractResponse, beta, path=["response"]) @parametrize async def test_method_extract_with_all_params(self, async_client: AsyncParallel) -> None: - beta = await async_client.beta.extract( - urls=["string"], - excerpts=True, - fetch_policy={ - "disable_cache_fallback": True, - "max_age_seconds": 86400, - "timeout_seconds": 60, - }, - full_content=True, - objective="objective", - search_queries=["string"], - session_id="session_id", - betas=["mcp-server-2025-07-17"], - ) + with pytest.warns(DeprecationWarning): + beta = await async_client.beta.extract( + urls=["string"], + client_model="claude-opus-4-7", + excerpts=True, + fetch_policy={ + "disable_cache_fallback": True, + "max_age_seconds": 86400, + "timeout_seconds": 60, + }, + full_content=True, + objective="objective", + search_queries=["string"], + session_id="session_id", + betas=["mcp-server-2025-07-17"], + ) + assert_matches_type(ExtractResponse, beta, path=["response"]) @parametrize async def test_raw_response_extract(self, async_client: AsyncParallel) -> None: - response = await async_client.beta.with_raw_response.extract( - urls=["string"], - ) + with pytest.warns(DeprecationWarning): + response = await async_client.beta.with_raw_response.extract( + urls=["string"], + ) assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -165,54 +187,61 @@ async def test_raw_response_extract(self, async_client: AsyncParallel) -> None: @parametrize async def test_streaming_response_extract(self, async_client: AsyncParallel) -> None: - async with async_client.beta.with_streaming_response.extract( - urls=["string"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + async with async_client.beta.with_streaming_response.extract( + urls=["string"], + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - beta = await response.parse() - assert_matches_type(ExtractResponse, beta, path=["response"]) + beta = await response.parse() + assert_matches_type(ExtractResponse, beta, path=["response"]) assert cast(Any, response.is_closed) is True @parametrize async def test_method_search(self, async_client: AsyncParallel) -> None: - beta = await async_client.beta.search() + with pytest.warns(DeprecationWarning): + beta = await async_client.beta.search() + assert_matches_type(SearchResult, beta, path=["response"]) @parametrize async def test_method_search_with_all_params(self, async_client: AsyncParallel) -> None: - beta = await async_client.beta.search( - excerpts={ - "max_chars_per_result": 0, - "max_chars_total": 0, - }, - fetch_policy={ - "disable_cache_fallback": True, - "max_age_seconds": 86400, - "timeout_seconds": 60, - }, - location="us", - max_chars_per_result=0, - max_results=0, - mode="one-shot", - objective="objective", - processor="base", - search_queries=["string"], - session_id="session_id", - source_policy={ - "after_date": parse_date("2024-01-01"), - "exclude_domains": ["reddit.com", "x.com", ".ai"], - "include_domains": ["wikipedia.org", "usa.gov", ".edu"], - }, - betas=["mcp-server-2025-07-17"], - ) + with pytest.warns(DeprecationWarning): + beta = await async_client.beta.search( + client_model="claude-opus-4-7", + excerpts={ + "max_chars_per_result": 0, + "max_chars_total": 0, + }, + fetch_policy={ + "disable_cache_fallback": True, + "max_age_seconds": 86400, + "timeout_seconds": 60, + }, + location="us", + max_chars_per_result=0, + max_results=0, + mode="one-shot", + objective="objective", + processor="base", + search_queries=["string"], + session_id="session_id", + source_policy={ + "after_date": parse_date("2024-01-01"), + "exclude_domains": ["reddit.com", "x.com", ".ai"], + "include_domains": ["wikipedia.org", "usa.gov", ".edu"], + }, + betas=["mcp-server-2025-07-17"], + ) + assert_matches_type(SearchResult, beta, path=["response"]) @parametrize async def test_raw_response_search(self, async_client: AsyncParallel) -> None: - response = await async_client.beta.with_raw_response.search() + with pytest.warns(DeprecationWarning): + response = await async_client.beta.with_raw_response.search() assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -221,11 +250,12 @@ async def test_raw_response_search(self, async_client: AsyncParallel) -> None: @parametrize async def test_streaming_response_search(self, async_client: AsyncParallel) -> None: - async with async_client.beta.with_streaming_response.search() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" + with pytest.warns(DeprecationWarning): + async with async_client.beta.with_streaming_response.search() as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" - beta = await response.parse() - assert_matches_type(SearchResult, beta, path=["response"]) + beta = await response.parse() + assert_matches_type(SearchResult, beta, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py index e2baaba..66f1f44 100644 --- a/tests/api_resources/test_client.py +++ b/tests/api_resources/test_client.py @@ -41,7 +41,7 @@ def test_method_extract_with_all_params(self, client: Parallel) -> None: }, "full_content": {"max_chars_per_result": 0}, }, - client_model="claude-sonnet-4-6-20260401", + client_model="claude-opus-4-7", max_chars_total=0, objective="objective", search_queries=["string"], @@ -99,7 +99,7 @@ def test_method_search_with_all_params(self, client: Parallel) -> None: "include_domains": ["wikipedia.org", "usa.gov", ".edu"], }, }, - client_model="claude-sonnet-4-6-20260401", + client_model="claude-opus-4-7", max_chars_total=0, mode="basic", objective="objective", @@ -157,7 +157,7 @@ async def test_method_extract_with_all_params(self, async_client: AsyncParallel) }, "full_content": {"max_chars_per_result": 0}, }, - client_model="claude-sonnet-4-6-20260401", + client_model="claude-opus-4-7", max_chars_total=0, objective="objective", search_queries=["string"], @@ -215,7 +215,7 @@ async def test_method_search_with_all_params(self, async_client: AsyncParallel) "include_domains": ["wikipedia.org", "usa.gov", ".edu"], }, }, - client_model="claude-sonnet-4-6-20260401", + client_model="claude-opus-4-7", max_chars_total=0, mode="basic", objective="objective",