diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d6f5f39..b0c3aa5 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.24.0" + ".": "3.25.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 11d6a70..4cd63af 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 26 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-d09553cd7c3571924420c3707e2ebb8d7c18716acfb624c1811cbbf7ef47086b.yml -openapi_spec_hash: 1efad5fa0bdbf39330ab58d6346be9b3 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-eb2aa0ee3a6380fe8dead168c3fec696acdf79d0fa5821b796f0335566c78f22.yml +openapi_spec_hash: 4b09ba67c690fd139df5b939fc899d49 config_hash: f3eb5ca71172780678106f6d46f15dda diff --git a/CHANGELOG.md b/CHANGELOG.md index f6f97c3..3a35e72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 3.25.0 (2026-02-18) + +Full Changelog: [v3.24.0...v3.25.0](https://github.com/supermemoryai/python-sdk/compare/v3.24.0...v3.25.0) + +### Features + +* **api:** api update ([93a76e1](https://github.com/supermemoryai/python-sdk/commit/93a76e11b33bb52c265541c583e47bbea26462d1)) + + +### Chores + +* format all `api.md` files ([d879ea5](https://github.com/supermemoryai/python-sdk/commit/d879ea5d7e4ebe83220572692ddad28a4fc94b30)) +* **internal:** bump dependencies ([f992701](https://github.com/supermemoryai/python-sdk/commit/f992701f8e78502f43616240eb04c10f6c679862)) +* **internal:** fix lint error on Python 3.14 ([035b6d6](https://github.com/supermemoryai/python-sdk/commit/035b6d665e03ea518f2d40bd967bc63472087705)) + ## 3.24.0 (2026-02-09) Full Changelog: [v3.23.0...v3.24.0](https://github.com/supermemoryai/python-sdk/compare/v3.23.0...v3.24.0) diff --git a/pyproject.toml b/pyproject.toml index 1742dd8..014607d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "supermemory" -version = "3.24.0" +version = "3.25.0" description = "The official Python library for the supermemory API" dynamic = ["readme"] license = "Apache-2.0" @@ -69,7 +69,7 @@ format = { chain = [ # run formatting again to fix any inconsistencies when imports are stripped "format:ruff", ]} -"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md" +"format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'" "format:ruff" = "ruff format" "lint" = { chain = [ diff --git a/requirements-dev.lock b/requirements-dev.lock index 8d84f0a..2777273 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -12,14 +12,14 @@ -e file:. aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.13.2 +aiohttp==3.13.3 # via httpx-aiohttp # via supermemory aiosignal==1.4.0 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.12.0 +anyio==4.12.1 # via httpx # via supermemory argcomplete==3.6.3 @@ -31,7 +31,7 @@ attrs==25.4.0 # via nox backports-asyncio-runner==1.2.0 # via pytest-asyncio -certifi==2025.11.12 +certifi==2026.1.4 # via httpcore # via httpx colorlog==6.10.1 @@ -61,7 +61,7 @@ httpx==0.28.1 # via httpx-aiohttp # via respx # via supermemory -httpx-aiohttp==0.1.9 +httpx-aiohttp==0.1.12 # via supermemory humanize==4.13.0 # via nox @@ -69,7 +69,7 @@ idna==3.11 # via anyio # via httpx # via yarl -importlib-metadata==8.7.0 +importlib-metadata==8.7.1 iniconfig==2.1.0 # via pytest markdown-it-py==3.0.0 @@ -82,14 +82,14 @@ multidict==6.7.0 mypy==1.17.0 mypy-extensions==1.1.0 # via mypy -nodeenv==1.9.1 +nodeenv==1.10.0 # via pyright nox==2025.11.12 packaging==25.0 # via dependency-groups # via nox # via pytest -pathspec==0.12.1 +pathspec==1.0.3 # via mypy platformdirs==4.4.0 # via virtualenv @@ -115,13 +115,13 @@ python-dateutil==2.9.0.post0 # via time-machine respx==0.22.0 rich==14.2.0 -ruff==0.14.7 +ruff==0.14.13 six==1.17.0 # via python-dateutil sniffio==1.3.1 # via supermemory time-machine==2.19.0 -tomli==2.3.0 +tomli==2.4.0 # via dependency-groups # via mypy # via nox @@ -141,7 +141,7 @@ typing-extensions==4.15.0 # via virtualenv typing-inspection==0.4.2 # via pydantic -virtualenv==20.35.4 +virtualenv==20.36.1 # via nox yarl==1.22.0 # via aiohttp diff --git a/requirements.lock b/requirements.lock index ba5d150..689a853 100644 --- a/requirements.lock +++ b/requirements.lock @@ -12,21 +12,21 @@ -e file:. aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.13.2 +aiohttp==3.13.3 # via httpx-aiohttp # via supermemory aiosignal==1.4.0 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.12.0 +anyio==4.12.1 # via httpx # via supermemory async-timeout==5.0.1 # via aiohttp attrs==25.4.0 # via aiohttp -certifi==2025.11.12 +certifi==2026.1.4 # via httpcore # via httpx distro==1.9.0 @@ -43,7 +43,7 @@ httpcore==1.0.9 httpx==0.28.1 # via httpx-aiohttp # via supermemory -httpx-aiohttp==0.1.9 +httpx-aiohttp==0.1.12 # via supermemory idna==3.11 # via anyio diff --git a/src/supermemory/_utils/_compat.py b/src/supermemory/_utils/_compat.py index dd70323..2c70b29 100644 --- a/src/supermemory/_utils/_compat.py +++ b/src/supermemory/_utils/_compat.py @@ -26,7 +26,7 @@ def is_union(tp: Optional[Type[Any]]) -> bool: else: import types - return tp is Union or tp is types.UnionType + return tp is Union or tp is types.UnionType # type: ignore[comparison-overlap] def is_typeddict(tp: Type[Any]) -> bool: diff --git a/src/supermemory/_version.py b/src/supermemory/_version.py index 8d94f32..902065f 100644 --- a/src/supermemory/_version.py +++ b/src/supermemory/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "supermemory" -__version__ = "3.24.0" # x-release-please-version +__version__ = "3.25.0" # x-release-please-version diff --git a/src/supermemory/resources/search.py b/src/supermemory/resources/search.py index 9d33b3e..8891be4 100644 --- a/src/supermemory/resources/search.py +++ b/src/supermemory/resources/search.py @@ -251,7 +251,7 @@ def memories( limit: int | Omit = omit, rerank: bool | Omit = omit, rewrite_query: bool | Omit = omit, - search_mode: Literal["memories", "hybrid"] | Omit = omit, + search_mode: Literal["memories", "hybrid", "documents"] | Omit = omit, threshold: float | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -280,8 +280,8 @@ def memories( the latency by about 400ms search_mode: Search mode. 'memories' searches only memory entries (default). 'hybrid' - searches memories first, then falls back to document chunks if no memories are - found. + searches both memories and document chunks. 'documents' searches only document + chunks. threshold: Threshold / sensitivity for memories selection. 0 is least sensitive (returns most memories, more results), 1 is most sensitive (returns lesser memories, @@ -544,7 +544,7 @@ async def memories( limit: int | Omit = omit, rerank: bool | Omit = omit, rewrite_query: bool | Omit = omit, - search_mode: Literal["memories", "hybrid"] | Omit = omit, + search_mode: Literal["memories", "hybrid", "documents"] | Omit = omit, threshold: float | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -573,8 +573,8 @@ async def memories( the latency by about 400ms search_mode: Search mode. 'memories' searches only memory entries (default). 'hybrid' - searches memories first, then falls back to document chunks if no memories are - found. + searches both memories and document chunks. 'documents' searches only document + chunks. threshold: Threshold / sensitivity for memories selection. 0 is least sensitive (returns most memories, more results), 1 is most sensitive (returns lesser memories, diff --git a/src/supermemory/types/search_memories_params.py b/src/supermemory/types/search_memories_params.py index a78a9a8..8440b1f 100644 --- a/src/supermemory/types/search_memories_params.py +++ b/src/supermemory/types/search_memories_params.py @@ -359,11 +359,11 @@ class SearchMemoriesParams(TypedDict, total=False): This increases the latency by about 400ms """ - search_mode: Annotated[Literal["memories", "hybrid"], PropertyInfo(alias="searchMode")] + search_mode: Annotated[Literal["memories", "hybrid", "documents"], PropertyInfo(alias="searchMode")] """Search mode. - 'memories' searches only memory entries (default). 'hybrid' searches memories - first, then falls back to document chunks if no memories are found. + 'memories' searches only memory entries (default). 'hybrid' searches both + memories and document chunks. 'documents' searches only document chunks. """ threshold: float diff --git a/src/supermemory/types/search_memories_response.py b/src/supermemory/types/search_memories_response.py index 6b59f7c..f992e51 100644 --- a/src/supermemory/types/search_memories_response.py +++ b/src/supermemory/types/search_memories_response.py @@ -139,9 +139,10 @@ class SearchMemoriesResponse(BaseModel): results: List[Result] """Array of matching memory entries and chunks with similarity scores. - Contains memory results when searchMode='memories', or both memory and chunk - results when searchMode='hybrid'. Memory results have 'memory' field, chunk - results have 'chunk' field. + Contains memory results when searchMode='memories', both memory and chunk + results when searchMode='hybrid', or only chunk results when + searchMode='documents'. Memory results have 'memory' field, chunk results have + 'chunk' field. """ timing: float