diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 96dfab3..0c2ecec 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.19.1" + ".": "0.20.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index e83ea83..117951e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 5 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/perplexity-ai%2Fperplexity-5d4ba4296d72d87995a2189a991e710a77b4b73cc275ad03d8a0eec245cf55db.yml -openapi_spec_hash: 5d29546ef1490dda18cda8ca97cd665e +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/perplexity-ai%2Fperplexity-561a19ba076e791a88215cc6d79b769a5c6e617b9afcc4098d70e7c82cc7d2e1.yml +openapi_spec_hash: 5de27332f3b6a76f8d56ee7f9f65817c config_hash: 5b10428c82f4119aa4837f03046d0e5c diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ade5e5..c5c3cfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 0.20.0 (2025-11-04) + +Full Changelog: [v0.19.1...v0.20.0](https://github.com/perplexityai/perplexity-py/compare/v0.19.1...v0.20.0) + +### Features + +* **api:** add country param ([16c185c](https://github.com/perplexityai/perplexity-py/commit/16c185cc1b1e977991c3b8f152c8b5d8ac8d913b)) + + +### Chores + +* **internal:** grammar fix (it's -> its) ([89af593](https://github.com/perplexityai/perplexity-py/commit/89af593a699c843d97043c40aaa7b28a89d265f6)) + ## 0.19.1 (2025-10-31) Full Changelog: [v0.19.0...v0.19.1](https://github.com/perplexityai/perplexity-py/compare/v0.19.0...v0.19.1) diff --git a/pyproject.toml b/pyproject.toml index fd32303..a611310 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "perplexityai" -version = "0.19.1" +version = "0.20.0" description = "The official Python library for the perplexity API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/perplexity/_utils/_utils.py b/src/perplexity/_utils/_utils.py index 50d5926..eec7f4a 100644 --- a/src/perplexity/_utils/_utils.py +++ b/src/perplexity/_utils/_utils.py @@ -133,7 +133,7 @@ def is_given(obj: _T | NotGiven | Omit) -> TypeGuard[_T]: # Type safe methods for narrowing types with TypeVars. # The default narrowing for isinstance(obj, dict) is dict[unknown, unknown], # however this cause Pyright to rightfully report errors. As we know we don't -# care about the contained types we can safely use `object` in it's place. +# care about the contained types we can safely use `object` in its place. # # There are two separate functions defined, `is_*` and `is_*_t` for different use cases. # `is_*` is for when you're dealing with an unknown input diff --git a/src/perplexity/_version.py b/src/perplexity/_version.py index 47f78e8..f484beb 100644 --- a/src/perplexity/_version.py +++ b/src/perplexity/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "perplexity" -__version__ = "0.19.1" # x-release-please-version +__version__ = "0.20.0" # x-release-please-version diff --git a/src/perplexity/resources/chat/completions.py b/src/perplexity/resources/chat/completions.py index 4de02f9..9b48224 100644 --- a/src/perplexity/resources/chat/completions.py +++ b/src/perplexity/resources/chat/completions.py @@ -90,6 +90,7 @@ def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -173,6 +174,7 @@ def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -255,6 +257,7 @@ def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -336,6 +339,7 @@ def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -404,6 +408,7 @@ def create( "search_before_date_filter": search_before_date_filter, "search_domain_filter": search_domain_filter, "search_internal_properties": search_internal_properties, + "search_language_filter": search_language_filter, "search_mode": search_mode, "search_recency_filter": search_recency_filter, "search_tenant": search_tenant, @@ -499,6 +504,7 @@ async def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -582,6 +588,7 @@ async def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -664,6 +671,7 @@ async def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -745,6 +753,7 @@ async def create( search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_internal_properties: Optional[Dict[str, object]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, search_tenant: Optional[str] | Omit = omit, @@ -813,6 +822,7 @@ async def create( "search_before_date_filter": search_before_date_filter, "search_domain_filter": search_domain_filter, "search_internal_properties": search_internal_properties, + "search_language_filter": search_language_filter, "search_mode": search_mode, "search_recency_filter": search_recency_filter, "search_tenant": search_tenant, diff --git a/src/perplexity/resources/search.py b/src/perplexity/resources/search.py index cf7250f..7e3159e 100644 --- a/src/perplexity/resources/search.py +++ b/src/perplexity/resources/search.py @@ -48,6 +48,7 @@ def create( self, *, query: Union[str, SequenceNotStr[str]], + country: Optional[str] | Omit = omit, display_server_time: bool | Omit = omit, max_results: int | Omit = omit, max_tokens: int | Omit = omit, @@ -55,6 +56,7 @@ def create( search_after_date_filter: Optional[str] | Omit = omit, search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -81,6 +83,7 @@ def create( body=maybe_transform( { "query": query, + "country": country, "display_server_time": display_server_time, "max_results": max_results, "max_tokens": max_tokens, @@ -88,6 +91,7 @@ def create( "search_after_date_filter": search_after_date_filter, "search_before_date_filter": search_before_date_filter, "search_domain_filter": search_domain_filter, + "search_language_filter": search_language_filter, "search_mode": search_mode, "search_recency_filter": search_recency_filter, }, @@ -124,6 +128,7 @@ async def create( self, *, query: Union[str, SequenceNotStr[str]], + country: Optional[str] | Omit = omit, display_server_time: bool | Omit = omit, max_results: int | Omit = omit, max_tokens: int | Omit = omit, @@ -131,6 +136,7 @@ async def create( search_after_date_filter: Optional[str] | Omit = omit, search_before_date_filter: Optional[str] | Omit = omit, search_domain_filter: Optional[SequenceNotStr[str]] | Omit = omit, + search_language_filter: Optional[SequenceNotStr[str]] | Omit = omit, search_mode: Optional[Literal["web", "academic", "sec"]] | Omit = omit, search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -157,6 +163,7 @@ async def create( body=await async_maybe_transform( { "query": query, + "country": country, "display_server_time": display_server_time, "max_results": max_results, "max_tokens": max_tokens, @@ -164,6 +171,7 @@ async def create( "search_after_date_filter": search_after_date_filter, "search_before_date_filter": search_before_date_filter, "search_domain_filter": search_domain_filter, + "search_language_filter": search_language_filter, "search_mode": search_mode, "search_recency_filter": search_recency_filter, }, diff --git a/src/perplexity/types/async_/chat/completion_create_params.py b/src/perplexity/types/async_/chat/completion_create_params.py index f8ab1e3..400af39 100644 --- a/src/perplexity/types/async_/chat/completion_create_params.py +++ b/src/perplexity/types/async_/chat/completion_create_params.py @@ -203,6 +203,8 @@ class Request(TypedDict, total=False): search_internal_properties: Optional[Dict[str, object]] + search_language_filter: Optional[SequenceNotStr[str]] + search_mode: Optional[Literal["web", "academic", "sec"]] search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] diff --git a/src/perplexity/types/chat/completion_create_params.py b/src/perplexity/types/chat/completion_create_params.py index d88da4f..65f1663 100644 --- a/src/perplexity/types/chat/completion_create_params.py +++ b/src/perplexity/types/chat/completion_create_params.py @@ -107,6 +107,8 @@ class CompletionCreateParamsBase(TypedDict, total=False): search_internal_properties: Optional[Dict[str, object]] + search_language_filter: Optional[SequenceNotStr[str]] + search_mode: Optional[Literal["web", "academic", "sec"]] search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] diff --git a/src/perplexity/types/search_create_params.py b/src/perplexity/types/search_create_params.py index e620b0e..6e23360 100644 --- a/src/perplexity/types/search_create_params.py +++ b/src/perplexity/types/search_create_params.py @@ -13,6 +13,8 @@ class SearchCreateParams(TypedDict, total=False): query: Required[Union[str, SequenceNotStr[str]]] + country: Optional[str] + display_server_time: bool max_results: int @@ -27,6 +29,8 @@ class SearchCreateParams(TypedDict, total=False): search_domain_filter: Optional[SequenceNotStr[str]] + search_language_filter: Optional[SequenceNotStr[str]] + search_mode: Optional[Literal["web", "academic", "sec"]] search_recency_filter: Optional[Literal["hour", "day", "week", "month", "year"]] diff --git a/tests/api_resources/async_/chat/test_completions.py b/tests/api_resources/async_/chat/test_completions.py index 4a5b5cc..ba12ce6 100644 --- a/tests/api_resources/async_/chat/test_completions.py +++ b/tests/api_resources/async_/chat/test_completions.py @@ -143,6 +143,7 @@ def test_method_create_with_all_params(self, client: Perplexity) -> None: "search_before_date_filter": "search_before_date_filter", "search_domain_filter": ["string"], "search_internal_properties": {"foo": "bar"}, + "search_language_filter": ["string"], "search_mode": "web", "search_recency_filter": "hour", "search_tenant": "search_tenant", @@ -446,6 +447,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncPerplexity "search_before_date_filter": "search_before_date_filter", "search_domain_filter": ["string"], "search_internal_properties": {"foo": "bar"}, + "search_language_filter": ["string"], "search_mode": "web", "search_recency_filter": "hour", "search_tenant": "search_tenant", diff --git a/tests/api_resources/chat/test_completions.py b/tests/api_resources/chat/test_completions.py index da87aa5..ef17449 100644 --- a/tests/api_resources/chat/test_completions.py +++ b/tests/api_resources/chat/test_completions.py @@ -136,6 +136,7 @@ def test_method_create_with_all_params_overload_1(self, client: Perplexity) -> N search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], search_internal_properties={"foo": "bar"}, + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", search_tenant="search_tenant", @@ -341,6 +342,7 @@ def test_method_create_with_all_params_overload_2(self, client: Perplexity) -> N search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], search_internal_properties={"foo": "bar"}, + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", search_tenant="search_tenant", @@ -550,6 +552,7 @@ async def test_method_create_with_all_params_overload_1(self, async_client: Asyn search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], search_internal_properties={"foo": "bar"}, + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", search_tenant="search_tenant", @@ -755,6 +758,7 @@ async def test_method_create_with_all_params_overload_2(self, async_client: Asyn search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], search_internal_properties={"foo": "bar"}, + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", search_tenant="search_tenant", diff --git a/tests/api_resources/test_search.py b/tests/api_resources/test_search.py index 85a4a8b..231b163 100644 --- a/tests/api_resources/test_search.py +++ b/tests/api_resources/test_search.py @@ -30,6 +30,7 @@ def test_method_create(self, client: Perplexity) -> None: def test_method_create_with_all_params(self, client: Perplexity) -> None: search = client.search.create( query="string", + country="country", display_server_time=True, max_results=0, max_tokens=0, @@ -37,6 +38,7 @@ def test_method_create_with_all_params(self, client: Perplexity) -> None: search_after_date_filter="search_after_date_filter", search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", ) @@ -87,6 +89,7 @@ async def test_method_create(self, async_client: AsyncPerplexity) -> None: async def test_method_create_with_all_params(self, async_client: AsyncPerplexity) -> None: search = await async_client.search.create( query="string", + country="country", display_server_time=True, max_results=0, max_tokens=0, @@ -94,6 +97,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncPerplexity search_after_date_filter="search_after_date_filter", search_before_date_filter="search_before_date_filter", search_domain_filter=["string"], + search_language_filter=["string"], search_mode="web", search_recency_filter="hour", )