From 1dae6e56a918d3ac6cbc38accd3058c169199515 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 18:37:11 +0000 Subject: [PATCH 1/3] fix(types): allow pyright to infer TypedDict types within SequenceNotStr --- src/perplexity/_types.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/perplexity/_types.py b/src/perplexity/_types.py index c55fb01..2907540 100644 --- a/src/perplexity/_types.py +++ b/src/perplexity/_types.py @@ -243,6 +243,9 @@ class HttpxSendArgs(TypedDict, total=False): if TYPE_CHECKING: # This works because str.__contains__ does not accept object (either in typeshed or at runtime) # https://github.com/hauntsaninja/useful_types/blob/5e9710f3875107d068e7679fd7fec9cfab0eff3b/useful_types/__init__.py#L285 + # + # Note: index() and count() methods are intentionally omitted to allow pyright to properly + # infer TypedDict types when dict literals are used in lists assigned to SequenceNotStr. class SequenceNotStr(Protocol[_T_co]): @overload def __getitem__(self, index: SupportsIndex, /) -> _T_co: ... @@ -251,8 +254,6 @@ def __getitem__(self, index: slice, /) -> Sequence[_T_co]: ... def __contains__(self, value: object, /) -> bool: ... def __len__(self) -> int: ... def __iter__(self) -> Iterator[_T_co]: ... - def index(self, value: Any, start: int = 0, stop: int = ..., /) -> int: ... - def count(self, value: Any, /) -> int: ... def __reversed__(self) -> Iterator[_T_co]: ... else: # just point this to a normal `Sequence` at runtime to avoid having to special case From be56ae34c5342b345e53b706c006f6a873e1db74 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 19:27:26 +0000 Subject: [PATCH 2/3] chore: add missing docstrings --- src/perplexity/types/shared/chat_message_input.py | 8 ++++++++ src/perplexity/types/shared/chat_message_output.py | 8 ++++++++ src/perplexity/types/shared_params/chat_message_input.py | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/src/perplexity/types/shared/chat_message_input.py b/src/perplexity/types/shared/chat_message_input.py index 6fa7c37..36ca9c3 100644 --- a/src/perplexity/types/shared/chat_message_input.py +++ b/src/perplexity/types/shared/chat_message_input.py @@ -111,22 +111,30 @@ class ContentStructuredContentChatMessageContentVideoChunk(BaseModel): class ReasoningStepExecutePython(BaseModel): + """Code generation step details wrapper class""" + code: str result: str class ReasoningStepFetchURLContent(BaseModel): + """Fetch url content step details wrapper class""" + contents: List[APIPublicSearchResult] class ReasoningStepWebSearch(BaseModel): + """Web search step details wrapper class""" + search_keywords: List[str] search_results: List[APIPublicSearchResult] class ReasoningStep(BaseModel): + """Reasoning step wrapper class""" + thought: str execute_python: Optional[ReasoningStepExecutePython] = None diff --git a/src/perplexity/types/shared/chat_message_output.py b/src/perplexity/types/shared/chat_message_output.py index c646c8f..84052c6 100644 --- a/src/perplexity/types/shared/chat_message_output.py +++ b/src/perplexity/types/shared/chat_message_output.py @@ -111,22 +111,30 @@ class ContentStructuredContentChatMessageContentVideoChunk(BaseModel): class ReasoningStepExecutePython(BaseModel): + """Code generation step details wrapper class""" + code: str result: str class ReasoningStepFetchURLContent(BaseModel): + """Fetch url content step details wrapper class""" + contents: List[APIPublicSearchResult] class ReasoningStepWebSearch(BaseModel): + """Web search step details wrapper class""" + search_keywords: List[str] search_results: List[APIPublicSearchResult] class ReasoningStep(BaseModel): + """Reasoning step wrapper class""" + thought: str execute_python: Optional[ReasoningStepExecutePython] = None diff --git a/src/perplexity/types/shared_params/chat_message_input.py b/src/perplexity/types/shared_params/chat_message_input.py index cfd114e..5ea15b6 100644 --- a/src/perplexity/types/shared_params/chat_message_input.py +++ b/src/perplexity/types/shared_params/chat_message_input.py @@ -113,22 +113,30 @@ class ContentStructuredContentChatMessageContentVideoChunk(TypedDict, total=Fals class ReasoningStepExecutePython(TypedDict, total=False): + """Code generation step details wrapper class""" + code: Required[str] result: Required[str] class ReasoningStepFetchURLContent(TypedDict, total=False): + """Fetch url content step details wrapper class""" + contents: Required[Iterable[APIPublicSearchResult]] class ReasoningStepWebSearch(TypedDict, total=False): + """Web search step details wrapper class""" + search_keywords: Required[SequenceNotStr[str]] search_results: Required[Iterable[APIPublicSearchResult]] class ReasoningStep(TypedDict, total=False): + """Reasoning step wrapper class""" + thought: Required[str] execute_python: Optional[ReasoningStepExecutePython] From 0be5d15be5c59215dc00c38d01871c915c1a6c4b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 19:27:42 +0000 Subject: [PATCH 3/3] release: 0.22.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- src/perplexity/_version.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cb9d254..3f63a67 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.22.0" + ".": "0.22.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1df3d7d..b2cc530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 0.22.1 (2025-12-08) + +Full Changelog: [v0.22.0...v0.22.1](https://github.com/perplexityai/perplexity-py/compare/v0.22.0...v0.22.1) + +### Bug Fixes + +* **types:** allow pyright to infer TypedDict types within SequenceNotStr ([1dae6e5](https://github.com/perplexityai/perplexity-py/commit/1dae6e56a918d3ac6cbc38accd3058c169199515)) + + +### Chores + +* add missing docstrings ([be56ae3](https://github.com/perplexityai/perplexity-py/commit/be56ae34c5342b345e53b706c006f6a873e1db74)) + ## 0.22.0 (2025-12-05) Full Changelog: [v0.21.0...v0.22.0](https://github.com/perplexityai/perplexity-py/compare/v0.21.0...v0.22.0) diff --git a/pyproject.toml b/pyproject.toml index bef3a3d..8a6f075 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "perplexityai" -version = "0.22.0" +version = "0.22.1" description = "The official Python library for the perplexity API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/perplexity/_version.py b/src/perplexity/_version.py index f9098f7..16c4414 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.22.0" # x-release-please-version +__version__ = "0.22.1" # x-release-please-version