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
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/parallel-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: 'ubuntu-latest'
if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -44,7 +44,7 @@ jobs:
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/parallel-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

Expand All @@ -64,7 +64,7 @@ jobs:

- name: Get GitHub OIDC Token
if: |-
github.repository == 'stainless-sdks/parallel-sdk-python' &&
github.repository == 'parallel-web/parallel-sdk-python-staging' &&
!startsWith(github.ref, 'refs/heads/stl/')
id: github-oidc
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
Expand All @@ -73,7 +73,7 @@ jobs:

- name: Upload tarball
if: |-
github.repository == 'stainless-sdks/parallel-sdk-python' &&
github.repository == 'parallel-web/parallel-sdk-python-staging' &&
!startsWith(github.ref, 'refs/heads/stl/')
env:
URL: https://pkg.stainless.com/s
Expand All @@ -84,7 +84,7 @@ jobs:
test:
timeout-minutes: 10
name: test
runs-on: ${{ github.repository == 'stainless-sdks/parallel-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: 'ubuntu-latest'
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.1.0"
".": "1.2.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 30
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/parallel-web/parallel-sdk-3001a018c926803bb713f19d99c3d5d39ed44ce3fe670bebefc326fd252b8821.yml
openapi_spec_hash: 0883a98aa5b566818f5910d01c831c4a
config_hash: 8572a2d7a5ede9ade3be8ad4d8aafd7d
configured_endpoints: 33
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/parallel-web/parallel-sdk-e72f6dcf18ffc713480444feef670bbbe754221e0a68336823642b474c20ec93.yml
openapi_spec_hash: ae8c3c62a78f2413f52c240c2a5d68a8
config_hash: d4f69197dba970d05757624fe3f7b373
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 1.2.0 (2026-08-10)

Full Changelog: [v1.1.0...v1.2.0](https://github.com/parallel-web/parallel-sdk-python/compare/v1.1.0...v1.2.0)

### Features

* **api:** add memory support ([15f1f47](https://github.com/parallel-web/parallel-sdk-python/commit/15f1f47985c735a57e7985a01f1eb5abbd07f1d9))
* **api:** manual updates ([e726e10](https://github.com/parallel-web/parallel-sdk-python/commit/e726e105f6711ad49ce8f756f3d2bc07404c27ca))
* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([a2b4daa](https://github.com/parallel-web/parallel-sdk-python/commit/a2b4daa3caed18e5159da0747f1f3a5ccaa0b645))

## 1.1.0 (2026-06-08)

Full Changelog: [v1.0.1...v1.1.0](https://github.com/parallel-web/parallel-sdk-python/compare/v1.0.1...v1.1.0)
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 = "parallel-web"
version = "1.1.0"
version = "1.2.0"
description = "The official Python library for the Parallel API"
dynamic = ["readme"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion scripts/utils/upload-artifact.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ UPLOAD_RESPONSE=$(curl -v -X PUT \

if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then
echo -e "\033[32mUploaded build to Stainless storage.\033[0m"
echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/parallel-sdk-python/$SHA/$FILENAME'\033[0m"
echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/parallel-sdk-python-staging/$SHA/$FILENAME'\033[0m"
else
echo -e "\033[31mFailed to upload artifact.\033[0m"
exit 1
Expand Down
2 changes: 1 addition & 1 deletion src/parallel/_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__ = "parallel"
__version__ = "1.1.0" # x-release-please-version
__version__ = "1.2.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/parallel/resources/beta/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@
BetaResourceWithStreamingResponse,
AsyncBetaResourceWithStreamingResponse,
)
from .memory import (
MemoryResource,
AsyncMemoryResource,
MemoryResourceWithRawResponse,
AsyncMemoryResourceWithRawResponse,
MemoryResourceWithStreamingResponse,
AsyncMemoryResourceWithStreamingResponse,
)
from .findall import (
FindAllResource,
AsyncFindAllResource,
Expand All @@ -24,6 +32,12 @@
"AsyncFindAllResourceWithRawResponse",
"FindAllResourceWithStreamingResponse",
"AsyncFindAllResourceWithStreamingResponse",
"MemoryResource",
"AsyncMemoryResource",
"MemoryResourceWithRawResponse",
"AsyncMemoryResourceWithRawResponse",
"MemoryResourceWithStreamingResponse",
"AsyncMemoryResourceWithStreamingResponse",
"BetaResource",
"AsyncBetaResource",
"BetaResourceWithRawResponse",
Expand Down
23 changes: 23 additions & 0 deletions src/parallel/resources/beta/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,26 @@ Methods:
- <code title="post /v1beta/findall/ingest">client.beta.findall.<a href="./src/parallel/resources/beta/findall.py">ingest</a>(\*\*<a href="src/parallel/types/beta/findall_ingest_params.py">params</a>) -> <a href="./src/parallel/types/beta/findall_schema.py">FindAllSchema</a></code>
- <code title="get /v1beta/findall/runs/{findall_id}/result">client.beta.findall.<a href="./src/parallel/resources/beta/findall.py">result</a>(findall_id) -> <a href="./src/parallel/types/beta/findall_run_result.py">FindAllRunResult</a></code>
- <code title="get /v1beta/findall/runs/{findall_id}/schema">client.beta.findall.<a href="./src/parallel/resources/beta/findall.py">schema</a>(findall_id) -> <a href="./src/parallel/types/beta/findall_schema.py">FindAllSchema</a></code>

## Memory

Types:

```python
from parallel.types.beta import (
FindAllMemoryResult,
MemoryClearRequest,
MemoryEvictRequest,
MemoryRetrieveRequest,
MemoryRetrieveResponse,
MonitorMemoryEvent,
MonitorMemoryResult,
TaskMemoryResult,
)
```

Methods:

- <code title="post /v1beta/memory/retrieve">client.beta.memory.<a href="./src/parallel/resources/beta/memory.py">retrieve</a>(\*\*<a href="src/parallel/types/beta/memory_retrieve_params.py">params</a>) -> <a href="./src/parallel/types/beta/memory_retrieve_response.py">MemoryRetrieveResponse</a></code>
- <code title="post /v1beta/memory/clear">client.beta.memory.<a href="./src/parallel/resources/beta/memory.py">clear</a>(\*\*<a href="src/parallel/types/beta/memory_clear_params.py">params</a>) -> None</code>
- <code title="post /v1beta/memory/evict">client.beta.memory.<a href="./src/parallel/resources/beta/memory.py">evict</a>(\*\*<a href="src/parallel/types/beta/memory_evict_params.py">params</a>) -> None</code>
50 changes: 50 additions & 0 deletions src/parallel/resources/beta/beta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

from __future__ import annotations

from .memory import (
MemoryResource,
AsyncMemoryResource,
MemoryResourceWithRawResponse,
AsyncMemoryResourceWithRawResponse,
MemoryResourceWithStreamingResponse,
AsyncMemoryResourceWithStreamingResponse,
)
from .findall import (
FindAllResource,
AsyncFindAllResource,
Expand All @@ -24,6 +32,13 @@ def findall(self) -> FindAllResource:
"""
return FindAllResource(self._client)

@cached_property
def memory(self) -> MemoryResource:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return MemoryResource(self._client)

@cached_property
def with_raw_response(self) -> BetaResourceWithRawResponse:
"""
Expand Down Expand Up @@ -52,6 +67,13 @@ def findall(self) -> AsyncFindAllResource:
"""
return AsyncFindAllResource(self._client)

@cached_property
def memory(self) -> AsyncMemoryResource:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return AsyncMemoryResource(self._client)

@cached_property
def with_raw_response(self) -> AsyncBetaResourceWithRawResponse:
"""
Expand Down Expand Up @@ -83,6 +105,13 @@ def findall(self) -> FindAllResourceWithRawResponse:
"""
return FindAllResourceWithRawResponse(self._beta.findall)

@cached_property
def memory(self) -> MemoryResourceWithRawResponse:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return MemoryResourceWithRawResponse(self._beta.memory)


class AsyncBetaResourceWithRawResponse:
def __init__(self, beta: AsyncBetaResource) -> None:
Expand All @@ -95,6 +124,13 @@ def findall(self) -> AsyncFindAllResourceWithRawResponse:
"""
return AsyncFindAllResourceWithRawResponse(self._beta.findall)

@cached_property
def memory(self) -> AsyncMemoryResourceWithRawResponse:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return AsyncMemoryResourceWithRawResponse(self._beta.memory)


class BetaResourceWithStreamingResponse:
def __init__(self, beta: BetaResource) -> None:
Expand All @@ -107,6 +143,13 @@ def findall(self) -> FindAllResourceWithStreamingResponse:
"""
return FindAllResourceWithStreamingResponse(self._beta.findall)

@cached_property
def memory(self) -> MemoryResourceWithStreamingResponse:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return MemoryResourceWithStreamingResponse(self._beta.memory)


class AsyncBetaResourceWithStreamingResponse:
def __init__(self, beta: AsyncBetaResource) -> None:
Expand All @@ -118,3 +161,10 @@ def findall(self) -> AsyncFindAllResourceWithStreamingResponse:
The FindAll API discovers and evaluates entities that match complex criteria from natural language objectives. Submit a high-level goal and the service automatically generates structured match conditions, discovers relevant candidates, and evaluates each against the criteria. Returns comprehensive results with detailed reasoning, citations, and confidence scores for each match decision. Streaming events and webhooks are supported.
"""
return AsyncFindAllResourceWithStreamingResponse(self._beta.findall)

@cached_property
def memory(self) -> AsyncMemoryResourceWithStreamingResponse:
"""
The Memory API retrieves and manages memories created by Tasks, Monitors, and FindAll runs. Memories can be personal or isolated with a `memory_scope_key`.
"""
return AsyncMemoryResourceWithStreamingResponse(self._beta.memory)
16 changes: 14 additions & 2 deletions src/parallel/resources/beta/findall.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def create(
match_limit: int,
objective: str,
exclude_list: Optional[Iterable[findall_create_params.ExcludeList]] | Omit = omit,
memory_scope_key: Optional[str] | Omit = omit,
metadata: Optional[Dict[str, Union[str, float, bool]]] | Omit = omit,
webhook: Optional[WebhookParam] | Omit = omit,
betas: List[ParallelBetaParam] | Omit = omit,
Expand Down Expand Up @@ -111,7 +112,11 @@ def create(

objective: Natural language objective of the FindAll run.

exclude_list: List of entity names/IDs to exclude from results.
exclude_list: List of entity names/IDs to exclude from results. At most 10,000 entries are
allowed.

memory_scope_key: User-provided key identifying the memory scope to use. Omit to use personal
memory, if available.

metadata: Metadata for the FindAll run.

Expand Down Expand Up @@ -148,6 +153,7 @@ def create(
"match_limit": match_limit,
"objective": objective,
"exclude_list": exclude_list,
"memory_scope_key": memory_scope_key,
"metadata": metadata,
"webhook": webhook,
},
Expand Down Expand Up @@ -675,6 +681,7 @@ async def create(
match_limit: int,
objective: str,
exclude_list: Optional[Iterable[findall_create_params.ExcludeList]] | Omit = omit,
memory_scope_key: Optional[str] | Omit = omit,
metadata: Optional[Dict[str, Union[str, float, bool]]] | Omit = omit,
webhook: Optional[WebhookParam] | Omit = omit,
betas: List[ParallelBetaParam] | Omit = omit,
Expand Down Expand Up @@ -711,7 +718,11 @@ async def create(

objective: Natural language objective of the FindAll run.

exclude_list: List of entity names/IDs to exclude from results.
exclude_list: List of entity names/IDs to exclude from results. At most 10,000 entries are
allowed.

memory_scope_key: User-provided key identifying the memory scope to use. Omit to use personal
memory, if available.

metadata: Metadata for the FindAll run.

Expand Down Expand Up @@ -748,6 +759,7 @@ async def create(
"match_limit": match_limit,
"objective": objective,
"exclude_list": exclude_list,
"memory_scope_key": memory_scope_key,
"metadata": metadata,
"webhook": webhook,
},
Expand Down
Loading