Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.19.1"
".": "0.20.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion src/perplexity/_utils/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/perplexity/_version.py
Original file line number Diff line number Diff line change
@@ -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
10 changes: 10 additions & 0 deletions src/perplexity/resources/chat/completions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
8 changes: 8 additions & 0 deletions src/perplexity/resources/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ 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,
max_tokens_per_page: int | Omit = omit,
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.
Expand All @@ -81,13 +83,15 @@ def create(
body=maybe_transform(
{
"query": query,
"country": country,
"display_server_time": display_server_time,
"max_results": max_results,
"max_tokens": max_tokens,
"max_tokens_per_page": max_tokens_per_page,
"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,
},
Expand Down Expand Up @@ -124,13 +128,15 @@ 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,
max_tokens_per_page: int | Omit = omit,
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.
Expand All @@ -157,13 +163,15 @@ 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,
"max_tokens_per_page": max_tokens_per_page,
"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,
},
Expand Down
2 changes: 2 additions & 0 deletions src/perplexity/types/async_/chat/completion_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]]
Expand Down
2 changes: 2 additions & 0 deletions src/perplexity/types/chat/completion_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]]
Expand Down
4 changes: 4 additions & 0 deletions src/perplexity/types/search_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"]]
2 changes: 2 additions & 0 deletions tests/api_resources/async_/chat/test_completions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions tests/api_resources/chat/test_completions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions tests/api_resources/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,15 @@ 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,
max_tokens_per_page=0,
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",
)
Expand Down Expand Up @@ -87,13 +89,15 @@ 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,
max_tokens_per_page=0,
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",
)
Expand Down