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 @@
{
".": "3.32.0"
".": "3.33.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: 26
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-e519a815da9102647222f1f73920926f2d8b63d16995d3687213b604963f5ec5.yml
openapi_spec_hash: 4de453d3c2fca716f7f645d4c2c8f921
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-63361336422f9e8ab2d67ca0f0068c7ac5f162dae5ec6de35b362cc11f07a3cb.yml
openapi_spec_hash: 862585828a78f8f58ab03c27d6ac8db0
config_hash: f3eb5ca71172780678106f6d46f15dda
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 3.33.0 (2026-04-08)

Full Changelog: [v3.32.0...v3.33.0](https://github.com/supermemoryai/python-sdk/compare/v3.32.0...v3.33.0)

### Features

* **api:** api update ([40f3e83](https://github.com/supermemoryai/python-sdk/commit/40f3e834d84a2e780a23642fd34d2e7d0f52f41b))
* **api:** api update ([147ad12](https://github.com/supermemoryai/python-sdk/commit/147ad124ce89899e469450865e299e75666af0a8))
* **api:** api update ([0eaf416](https://github.com/supermemoryai/python-sdk/commit/0eaf416665d0dfb92e0119c54c11f170e0a1fe32))
* **api:** api update ([5e2fc3b](https://github.com/supermemoryai/python-sdk/commit/5e2fc3b3b0aabe7f506284ae5922ab0c86b2eafb))


### Bug Fixes

* **client:** preserve hardcoded query params when merging with user params ([0e7665d](https://github.com/supermemoryai/python-sdk/commit/0e7665d7f19a5828a45566e4e39ad6664c4c2d26))

## 3.32.0 (2026-03-27)

Full Changelog: [v3.31.0...v3.32.0](https://github.com/supermemoryai/python-sdk/compare/v3.31.0...v3.32.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 = "supermemory"
version = "3.32.0"
version = "3.33.0"
description = "The official Python library for the supermemory API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
4 changes: 4 additions & 0 deletions src/supermemory/_base_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,10 @@ def _build_request(
files = cast(HttpxRequestFiles, ForceMultipartDict())

prepared_url = self._prepare_url(options.url)
# preserve hard-coded query params from the url
if params and prepared_url.query:
params = {**dict(prepared_url.params.items()), **params}
prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
if "_" in prepared_url.host:
# work around https://github.com/encode/httpx/discussions/2880
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
Expand Down
18 changes: 18 additions & 0 deletions src/supermemory/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ def __init__(

@cached_property
def memories(self) -> MemoriesResource:
"""List, get, update, and delete content and memories"""
from .resources.memories import MemoriesResource

return MemoriesResource(self)
Expand All @@ -145,12 +146,14 @@ def search(self) -> SearchResource:

@cached_property
def settings(self) -> SettingsResource:
"""Organization settings"""
from .resources.settings import SettingsResource

return SettingsResource(self)

@cached_property
def connections(self) -> ConnectionsResource:
"""External service integrations"""
from .resources.connections import ConnectionsResource

return ConnectionsResource(self)
Expand Down Expand Up @@ -440,6 +443,7 @@ def __init__(

@cached_property
def memories(self) -> AsyncMemoriesResource:
"""List, get, update, and delete content and memories"""
from .resources.memories import AsyncMemoriesResource

return AsyncMemoriesResource(self)
Expand All @@ -458,12 +462,14 @@ def search(self) -> AsyncSearchResource:

@cached_property
def settings(self) -> AsyncSettingsResource:
"""Organization settings"""
from .resources.settings import AsyncSettingsResource

return AsyncSettingsResource(self)

@cached_property
def connections(self) -> AsyncConnectionsResource:
"""External service integrations"""
from .resources.connections import AsyncConnectionsResource

return AsyncConnectionsResource(self)
Expand Down Expand Up @@ -711,6 +717,7 @@ def __init__(self, client: Supermemory) -> None:

@cached_property
def memories(self) -> memories.MemoriesResourceWithRawResponse:
"""List, get, update, and delete content and memories"""
from .resources.memories import MemoriesResourceWithRawResponse

return MemoriesResourceWithRawResponse(self._client.memories)
Expand All @@ -729,12 +736,14 @@ def search(self) -> search.SearchResourceWithRawResponse:

@cached_property
def settings(self) -> settings.SettingsResourceWithRawResponse:
"""Organization settings"""
from .resources.settings import SettingsResourceWithRawResponse

return SettingsResourceWithRawResponse(self._client.settings)

@cached_property
def connections(self) -> connections.ConnectionsResourceWithRawResponse:
"""External service integrations"""
from .resources.connections import ConnectionsResourceWithRawResponse

return ConnectionsResourceWithRawResponse(self._client.connections)
Expand All @@ -755,6 +764,7 @@ def __init__(self, client: AsyncSupermemory) -> None:

@cached_property
def memories(self) -> memories.AsyncMemoriesResourceWithRawResponse:
"""List, get, update, and delete content and memories"""
from .resources.memories import AsyncMemoriesResourceWithRawResponse

return AsyncMemoriesResourceWithRawResponse(self._client.memories)
Expand All @@ -773,12 +783,14 @@ def search(self) -> search.AsyncSearchResourceWithRawResponse:

@cached_property
def settings(self) -> settings.AsyncSettingsResourceWithRawResponse:
"""Organization settings"""
from .resources.settings import AsyncSettingsResourceWithRawResponse

return AsyncSettingsResourceWithRawResponse(self._client.settings)

@cached_property
def connections(self) -> connections.AsyncConnectionsResourceWithRawResponse:
"""External service integrations"""
from .resources.connections import AsyncConnectionsResourceWithRawResponse

return AsyncConnectionsResourceWithRawResponse(self._client.connections)
Expand All @@ -799,6 +811,7 @@ def __init__(self, client: Supermemory) -> None:

@cached_property
def memories(self) -> memories.MemoriesResourceWithStreamingResponse:
"""List, get, update, and delete content and memories"""
from .resources.memories import MemoriesResourceWithStreamingResponse

return MemoriesResourceWithStreamingResponse(self._client.memories)
Expand All @@ -817,12 +830,14 @@ def search(self) -> search.SearchResourceWithStreamingResponse:

@cached_property
def settings(self) -> settings.SettingsResourceWithStreamingResponse:
"""Organization settings"""
from .resources.settings import SettingsResourceWithStreamingResponse

return SettingsResourceWithStreamingResponse(self._client.settings)

@cached_property
def connections(self) -> connections.ConnectionsResourceWithStreamingResponse:
"""External service integrations"""
from .resources.connections import ConnectionsResourceWithStreamingResponse

return ConnectionsResourceWithStreamingResponse(self._client.connections)
Expand All @@ -843,6 +858,7 @@ def __init__(self, client: AsyncSupermemory) -> None:

@cached_property
def memories(self) -> memories.AsyncMemoriesResourceWithStreamingResponse:
"""List, get, update, and delete content and memories"""
from .resources.memories import AsyncMemoriesResourceWithStreamingResponse

return AsyncMemoriesResourceWithStreamingResponse(self._client.memories)
Expand All @@ -861,12 +877,14 @@ def search(self) -> search.AsyncSearchResourceWithStreamingResponse:

@cached_property
def settings(self) -> settings.AsyncSettingsResourceWithStreamingResponse:
"""Organization settings"""
from .resources.settings import AsyncSettingsResourceWithStreamingResponse

return AsyncSettingsResourceWithStreamingResponse(self._client.settings)

@cached_property
def connections(self) -> connections.AsyncConnectionsResourceWithStreamingResponse:
"""External service integrations"""
from .resources.connections import AsyncConnectionsResourceWithStreamingResponse

return AsyncConnectionsResourceWithStreamingResponse(self._client.connections)
Expand Down
2 changes: 1 addition & 1 deletion src/supermemory/_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__ = "supermemory"
__version__ = "3.32.0" # x-release-please-version
__version__ = "3.33.0" # x-release-please-version
4 changes: 4 additions & 0 deletions src/supermemory/resources/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@


class ConnectionsResource(SyncAPIResource):
"""External service integrations"""

@cached_property
def with_raw_response(self) -> ConnectionsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -457,6 +459,8 @@ def resources(


class AsyncConnectionsResource(AsyncAPIResource):
"""External service integrations"""

@cached_property
def with_raw_response(self) -> AsyncConnectionsResourceWithRawResponse:
"""
Expand Down
8 changes: 8 additions & 0 deletions src/supermemory/resources/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ def upload_file(
self,
*,
file: FileTypes,
container_tag: str | Omit = omit,
container_tags: str | Omit = omit,
file_type: str | Omit = omit,
metadata: str | Omit = omit,
Expand All @@ -471,6 +472,8 @@ def upload_file(
Args:
file: File to upload and process

container_tag: Optional container tag (e.g., 'user_123'). Use this for a single tag.

container_tags: Optional container tags. Can be either a JSON string of an array (e.g.,
'["user_123", "project_123"]') or a single string (e.g., 'user_123'). Single
strings will be automatically converted to an array.
Expand Down Expand Up @@ -502,6 +505,7 @@ def upload_file(
body = deepcopy_minimal(
{
"file": file,
"container_tag": container_tag,
"container_tags": container_tags,
"file_type": file_type,
"metadata": metadata,
Expand Down Expand Up @@ -940,6 +944,7 @@ async def upload_file(
self,
*,
file: FileTypes,
container_tag: str | Omit = omit,
container_tags: str | Omit = omit,
file_type: str | Omit = omit,
metadata: str | Omit = omit,
Expand All @@ -958,6 +963,8 @@ async def upload_file(
Args:
file: File to upload and process

container_tag: Optional container tag (e.g., 'user_123'). Use this for a single tag.

container_tags: Optional container tags. Can be either a JSON string of an array (e.g.,
'["user_123", "project_123"]') or a single string (e.g., 'user_123'). Single
strings will be automatically converted to an array.
Expand Down Expand Up @@ -989,6 +996,7 @@ async def upload_file(
body = deepcopy_minimal(
{
"file": file,
"container_tag": container_tag,
"container_tags": container_tags,
"file_type": file_type,
"metadata": metadata,
Expand Down
4 changes: 4 additions & 0 deletions src/supermemory/resources/memories.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@


class MemoriesResource(SyncAPIResource):
"""List, get, update, and delete content and memories"""

@cached_property
def with_raw_response(self) -> MemoriesResourceWithRawResponse:
"""
Expand Down Expand Up @@ -174,6 +176,8 @@ def update_memory(


class AsyncMemoriesResource(AsyncAPIResource):
"""List, get, update, and delete content and memories"""

@cached_property
def with_raw_response(self) -> AsyncMemoriesResourceWithRawResponse:
"""
Expand Down
Loading