From e2cc79c7b19cd8da12385d59bd6fcb7e83be6c84 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:01:05 +0000 Subject: [PATCH 1/4] feat(api): api update --- .github/workflows/publish-pypi.yml | 28 --- .github/workflows/release-doctor.yml | 21 -- .release-please-manifest.json | 3 - .stats.yml | 8 +- CONTRIBUTING.md | 4 +- README.md | 25 +-- api.md | 14 -- bin/check-release-environment | 21 -- pyproject.toml | 6 +- release-please-config.json | 66 ------- src/evermemos/_version.py | 2 +- src/evermemos/resources/v1/__init__.py | 14 -- .../v1/global_user_profile/__init__.py | 33 ---- .../v1/global_user_profile/custom.py | 185 ------------------ .../global_user_profile.py | 102 ---------- .../v1/memories/conversation_meta.py | 8 +- .../resources/v1/memories/memories.py | 34 ++-- src/evermemos/resources/v1/stats/request.py | 12 +- src/evermemos/resources/v1/stats/stats.py | 8 +- src/evermemos/resources/v1/v1.py | 40 +--- .../types/v1/global_user_profile/__init__.py | 3 - .../custom_upsert_params.py | 24 --- .../custom_upsert_response.py | 23 --- .../types/v1/memory_create_params.py | 7 + .../types/v1/memory_create_response.py | 34 +--- .../types/v1/memory_delete_params.py | 6 +- src/evermemos/types/v1/memory_get_response.py | 6 +- .../types/v1/stats/request_get_params.py | 2 +- .../v1/global_user_profile/__init__.py | 1 - .../v1/global_user_profile/test_custom.py | 134 ------------- tests/api_resources/v1/test_memories.py | 6 +- 31 files changed, 87 insertions(+), 793 deletions(-) delete mode 100644 .github/workflows/publish-pypi.yml delete mode 100644 .github/workflows/release-doctor.yml delete mode 100644 .release-please-manifest.json delete mode 100644 bin/check-release-environment delete mode 100644 release-please-config.json delete mode 100644 src/evermemos/resources/v1/global_user_profile/__init__.py delete mode 100644 src/evermemos/resources/v1/global_user_profile/custom.py delete mode 100644 src/evermemos/resources/v1/global_user_profile/global_user_profile.py delete mode 100644 src/evermemos/types/v1/global_user_profile/custom_upsert_params.py delete mode 100644 src/evermemos/types/v1/global_user_profile/custom_upsert_response.py delete mode 100644 tests/api_resources/v1/global_user_profile/__init__.py delete mode 100644 tests/api_resources/v1/global_user_profile/test_custom.py diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml deleted file mode 100644 index 6fff56a..0000000 --- a/.github/workflows/publish-pypi.yml +++ /dev/null @@ -1,28 +0,0 @@ -# This workflow is triggered when a GitHub release is created. -# It can also be run manually to re-publish to PyPI in case it failed for some reason. -# You can run this workflow by navigating to https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml -name: Publish PyPI -on: - workflow_dispatch: - - release: - types: [published] - -jobs: - publish: - name: publish - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v6 - - - name: Install uv - uses: astral-sh/setup-uv@v5 - with: - version: '0.9.13' - - - name: Publish to PyPI - run: | - bash ./bin/publish-pypi - env: - PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml deleted file mode 100644 index 73257f5..0000000 --- a/.github/workflows/release-doctor.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Release Doctor -on: - pull_request: - branches: - - main - workflow_dispatch: - -jobs: - release_doctor: - name: release doctor - runs-on: ubuntu-latest - if: github.repository == 'evermemos/evermemos-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') - - steps: - - uses: actions/checkout@v6 - - - name: Check release environment - run: | - bash ./bin/check-release-environment - env: - PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json deleted file mode 100644 index 457d91e..0000000 --- a/.release-please-manifest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - ".": "0.3.7" -} \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index f3dff34..fe48da6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 10 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-8dd89565a380cced738b3a3db7958ea82f5039747c17e3301dbf9e0224c66aec.yml -openapi_spec_hash: dca9f914a8bee936565c21ac98316b2d -config_hash: 9bde077e7fec6b4fc6b5747ccb68227a +configured_endpoints: 9 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml +openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959 +config_hash: 49fa8adc2cd2a34ce9f1c66e45e03a17 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 315c632..e2e1e5a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -62,7 +62,7 @@ If you’d like to use the repository from source, you can either install from g To install via git: ```sh -$ pip install git+ssh://git@github.com/evermemos/evermemos-python.git +$ pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git ``` Alternatively, you can build from source and install the wheel file: @@ -120,7 +120,7 @@ the changes aren't made through the automated pipeline, you may want to make rel ### Publish with a GitHub workflow -You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. +You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/EverMemOS-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. ### Publish manually diff --git a/README.md b/README.md index 702d5d7..e151a42 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,13 @@ The full API of this library can be found in [api.md](api.md). ## Installation ```sh -# install from PyPI -pip install evermemos +# install from this staging repo +pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git ``` +> [!NOTE] +> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install evermemos` + ## Usage The full API of this library can be found in [api.md](api.md). @@ -38,7 +41,7 @@ memory = client.v1.memories.create( message_id="msg_001", sender="user_001", ) -print(memory.message) +print(memory.request_id) ``` While you can provide an `api_key` keyword argument, @@ -67,7 +70,7 @@ async def main() -> None: message_id="msg_001", sender="user_001", ) - print(memory.message) + print(memory.request_id) asyncio.run(main()) @@ -82,8 +85,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv You can enable this by installing `aiohttp`: ```sh -# install from PyPI -pip install evermemos[aiohttp] +# install from this staging repo +pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git' ``` Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`: @@ -106,7 +109,7 @@ async def main() -> None: message_id="msg_001", sender="user_001", ) - print(memory.message) + print(memory.request_id) asyncio.run(main()) @@ -296,12 +299,12 @@ response = client.v1.memories.with_raw_response.create( print(response.headers.get('X-My-Header')) memory = response.parse() # get the object that `v1.memories.create()` would have returned -print(memory.message) +print(memory.request_id) ``` -These methods return an [`APIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) object. +These methods return an [`APIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) object. -The async client returns an [`AsyncAPIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. +The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. #### `.with_streaming_response` @@ -410,7 +413,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience. -We are keen for your feedback; please open an [issue](https://www.github.com/evermemos/evermemos-python/issues) with questions, bugs, or suggestions. +We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/EverMemOS-python/issues) with questions, bugs, or suggestions. ### Determining the installed version diff --git a/api.md b/api.md index 3179fb0..695c0fb 100644 --- a/api.md +++ b/api.md @@ -42,20 +42,6 @@ Methods: - client.v1.memories.conversation_meta.update(\*\*params) -> ConversationMetaUpdateResponse - client.v1.memories.conversation_meta.get() -> ConversationMetaGetResponse -## GlobalUserProfile - -### Custom - -Types: - -```python -from evermemos.types.v1.global_user_profile import CustomUpsertResponse -``` - -Methods: - -- client.v1.global_user_profile.custom.upsert(\*\*params) -> CustomUpsertResponse - ## Stats ### Request diff --git a/bin/check-release-environment b/bin/check-release-environment deleted file mode 100644 index b845b0f..0000000 --- a/bin/check-release-environment +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -errors=() - -if [ -z "${PYPI_TOKEN}" ]; then - errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.") -fi - -lenErrors=${#errors[@]} - -if [[ lenErrors -gt 0 ]]; then - echo -e "Found the following errors in the release environment:\n" - - for error in "${errors[@]}"; do - echo -e "- $error\n" - done - - exit 1 -fi - -echo "The environment is ready to push releases!" diff --git a/pyproject.toml b/pyproject.toml index a908309..75fdd30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,8 +37,8 @@ classifiers = [ ] [project.urls] -Homepage = "https://github.com/evermemos/evermemos-python" -Repository = "https://github.com/evermemos/evermemos-python" +Homepage = "https://github.com/stainless-sdks/EverMemOS-python" +Repository = "https://github.com/stainless-sdks/EverMemOS-python" [project.optional-dependencies] aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"] @@ -112,7 +112,7 @@ path = "README.md" [[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]] # replace relative links with absolute links pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)' -replacement = '[\1](https://github.com/evermemos/evermemos-python/tree/main/\g<2>)' +replacement = '[\1](https://github.com/stainless-sdks/EverMemOS-python/tree/main/\g<2>)' [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/release-please-config.json b/release-please-config.json deleted file mode 100644 index 9e1e0db..0000000 --- a/release-please-config.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "packages": { - ".": {} - }, - "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json", - "include-v-in-tag": true, - "include-component-in-tag": false, - "versioning": "prerelease", - "prerelease": true, - "bump-minor-pre-major": true, - "bump-patch-for-minor-pre-major": false, - "pull-request-header": "Automated Release PR", - "pull-request-title-pattern": "release: ${version}", - "changelog-sections": [ - { - "type": "feat", - "section": "Features" - }, - { - "type": "fix", - "section": "Bug Fixes" - }, - { - "type": "perf", - "section": "Performance Improvements" - }, - { - "type": "revert", - "section": "Reverts" - }, - { - "type": "chore", - "section": "Chores" - }, - { - "type": "docs", - "section": "Documentation" - }, - { - "type": "style", - "section": "Styles" - }, - { - "type": "refactor", - "section": "Refactors" - }, - { - "type": "test", - "section": "Tests", - "hidden": true - }, - { - "type": "build", - "section": "Build System" - }, - { - "type": "ci", - "section": "Continuous Integration", - "hidden": true - } - ], - "release-type": "python", - "extra-files": [ - "src/evermemos/_version.py" - ] -} \ No newline at end of file diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py index 334c40d..3bb3987 100644 --- a/src/evermemos/_version.py +++ b/src/evermemos/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "evermemos" -__version__ = "0.3.7" # x-release-please-version +__version__ = "0.3.7" diff --git a/src/evermemos/resources/v1/__init__.py b/src/evermemos/resources/v1/__init__.py index a63144f..56c92eb 100644 --- a/src/evermemos/resources/v1/__init__.py +++ b/src/evermemos/resources/v1/__init__.py @@ -24,14 +24,6 @@ MemoriesResourceWithStreamingResponse, AsyncMemoriesResourceWithStreamingResponse, ) -from .global_user_profile import ( - GlobalUserProfileResource, - AsyncGlobalUserProfileResource, - GlobalUserProfileResourceWithRawResponse, - AsyncGlobalUserProfileResourceWithRawResponse, - GlobalUserProfileResourceWithStreamingResponse, - AsyncGlobalUserProfileResourceWithStreamingResponse, -) __all__ = [ "MemoriesResource", @@ -40,12 +32,6 @@ "AsyncMemoriesResourceWithRawResponse", "MemoriesResourceWithStreamingResponse", "AsyncMemoriesResourceWithStreamingResponse", - "GlobalUserProfileResource", - "AsyncGlobalUserProfileResource", - "GlobalUserProfileResourceWithRawResponse", - "AsyncGlobalUserProfileResourceWithRawResponse", - "GlobalUserProfileResourceWithStreamingResponse", - "AsyncGlobalUserProfileResourceWithStreamingResponse", "StatsResource", "AsyncStatsResource", "StatsResourceWithRawResponse", diff --git a/src/evermemos/resources/v1/global_user_profile/__init__.py b/src/evermemos/resources/v1/global_user_profile/__init__.py deleted file mode 100644 index bcc5328..0000000 --- a/src/evermemos/resources/v1/global_user_profile/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .custom import ( - CustomResource, - AsyncCustomResource, - CustomResourceWithRawResponse, - AsyncCustomResourceWithRawResponse, - CustomResourceWithStreamingResponse, - AsyncCustomResourceWithStreamingResponse, -) -from .global_user_profile import ( - GlobalUserProfileResource, - AsyncGlobalUserProfileResource, - GlobalUserProfileResourceWithRawResponse, - AsyncGlobalUserProfileResourceWithRawResponse, - GlobalUserProfileResourceWithStreamingResponse, - AsyncGlobalUserProfileResourceWithStreamingResponse, -) - -__all__ = [ - "CustomResource", - "AsyncCustomResource", - "CustomResourceWithRawResponse", - "AsyncCustomResourceWithRawResponse", - "CustomResourceWithStreamingResponse", - "AsyncCustomResourceWithStreamingResponse", - "GlobalUserProfileResource", - "AsyncGlobalUserProfileResource", - "GlobalUserProfileResourceWithRawResponse", - "AsyncGlobalUserProfileResourceWithRawResponse", - "GlobalUserProfileResourceWithStreamingResponse", - "AsyncGlobalUserProfileResourceWithStreamingResponse", -] diff --git a/src/evermemos/resources/v1/global_user_profile/custom.py b/src/evermemos/resources/v1/global_user_profile/custom.py deleted file mode 100644 index fb23b19..0000000 --- a/src/evermemos/resources/v1/global_user_profile/custom.py +++ /dev/null @@ -1,185 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import httpx - -from ...._types import Body, Query, Headers, NotGiven, not_given -from ...._utils import maybe_transform, async_maybe_transform -from ...._compat import cached_property -from ...._resource import SyncAPIResource, AsyncAPIResource -from ...._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ...._base_client import make_request_options -from ....types.v1.global_user_profile import custom_upsert_params -from ....types.v1.global_user_profile.custom_upsert_response import CustomUpsertResponse - -__all__ = ["CustomResource", "AsyncCustomResource"] - - -class CustomResource(SyncAPIResource): - @cached_property - def with_raw_response(self) -> CustomResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers - """ - return CustomResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> CustomResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response - """ - return CustomResourceWithStreamingResponse(self) - - def upsert( - self, - *, - custom_profile_data: custom_upsert_params.CustomProfileData, - user_id: str, - # 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> CustomUpsertResponse: - """ - Upsert custom profile data for a user - - Args: - custom_profile_data: Custom profile data to upsert - - user_id: User ID - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._post( - "/api/v1/global-user-profile/custom", - body=maybe_transform( - { - "custom_profile_data": custom_profile_data, - "user_id": user_id, - }, - custom_upsert_params.CustomUpsertParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=CustomUpsertResponse, - ) - - -class AsyncCustomResource(AsyncAPIResource): - @cached_property - def with_raw_response(self) -> AsyncCustomResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers - """ - return AsyncCustomResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncCustomResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response - """ - return AsyncCustomResourceWithStreamingResponse(self) - - async def upsert( - self, - *, - custom_profile_data: custom_upsert_params.CustomProfileData, - user_id: str, - # 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> CustomUpsertResponse: - """ - Upsert custom profile data for a user - - Args: - custom_profile_data: Custom profile data to upsert - - user_id: User ID - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return await self._post( - "/api/v1/global-user-profile/custom", - body=await async_maybe_transform( - { - "custom_profile_data": custom_profile_data, - "user_id": user_id, - }, - custom_upsert_params.CustomUpsertParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=CustomUpsertResponse, - ) - - -class CustomResourceWithRawResponse: - def __init__(self, custom: CustomResource) -> None: - self._custom = custom - - self.upsert = to_raw_response_wrapper( - custom.upsert, - ) - - -class AsyncCustomResourceWithRawResponse: - def __init__(self, custom: AsyncCustomResource) -> None: - self._custom = custom - - self.upsert = async_to_raw_response_wrapper( - custom.upsert, - ) - - -class CustomResourceWithStreamingResponse: - def __init__(self, custom: CustomResource) -> None: - self._custom = custom - - self.upsert = to_streamed_response_wrapper( - custom.upsert, - ) - - -class AsyncCustomResourceWithStreamingResponse: - def __init__(self, custom: AsyncCustomResource) -> None: - self._custom = custom - - self.upsert = async_to_streamed_response_wrapper( - custom.upsert, - ) diff --git a/src/evermemos/resources/v1/global_user_profile/global_user_profile.py b/src/evermemos/resources/v1/global_user_profile/global_user_profile.py deleted file mode 100644 index 5b63892..0000000 --- a/src/evermemos/resources/v1/global_user_profile/global_user_profile.py +++ /dev/null @@ -1,102 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from .custom import ( - CustomResource, - AsyncCustomResource, - CustomResourceWithRawResponse, - AsyncCustomResourceWithRawResponse, - CustomResourceWithStreamingResponse, - AsyncCustomResourceWithStreamingResponse, -) -from ...._compat import cached_property -from ...._resource import SyncAPIResource, AsyncAPIResource - -__all__ = ["GlobalUserProfileResource", "AsyncGlobalUserProfileResource"] - - -class GlobalUserProfileResource(SyncAPIResource): - @cached_property - def custom(self) -> CustomResource: - return CustomResource(self._client) - - @cached_property - def with_raw_response(self) -> GlobalUserProfileResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers - """ - return GlobalUserProfileResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> GlobalUserProfileResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response - """ - return GlobalUserProfileResourceWithStreamingResponse(self) - - -class AsyncGlobalUserProfileResource(AsyncAPIResource): - @cached_property - def custom(self) -> AsyncCustomResource: - return AsyncCustomResource(self._client) - - @cached_property - def with_raw_response(self) -> AsyncGlobalUserProfileResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers - """ - return AsyncGlobalUserProfileResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncGlobalUserProfileResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response - """ - return AsyncGlobalUserProfileResourceWithStreamingResponse(self) - - -class GlobalUserProfileResourceWithRawResponse: - def __init__(self, global_user_profile: GlobalUserProfileResource) -> None: - self._global_user_profile = global_user_profile - - @cached_property - def custom(self) -> CustomResourceWithRawResponse: - return CustomResourceWithRawResponse(self._global_user_profile.custom) - - -class AsyncGlobalUserProfileResourceWithRawResponse: - def __init__(self, global_user_profile: AsyncGlobalUserProfileResource) -> None: - self._global_user_profile = global_user_profile - - @cached_property - def custom(self) -> AsyncCustomResourceWithRawResponse: - return AsyncCustomResourceWithRawResponse(self._global_user_profile.custom) - - -class GlobalUserProfileResourceWithStreamingResponse: - def __init__(self, global_user_profile: GlobalUserProfileResource) -> None: - self._global_user_profile = global_user_profile - - @cached_property - def custom(self) -> CustomResourceWithStreamingResponse: - return CustomResourceWithStreamingResponse(self._global_user_profile.custom) - - -class AsyncGlobalUserProfileResourceWithStreamingResponse: - def __init__(self, global_user_profile: AsyncGlobalUserProfileResource) -> None: - self._global_user_profile = global_user_profile - - @cached_property - def custom(self) -> AsyncCustomResourceWithStreamingResponse: - return AsyncCustomResourceWithStreamingResponse(self._global_user_profile.custom) diff --git a/src/evermemos/resources/v1/memories/conversation_meta.py b/src/evermemos/resources/v1/memories/conversation_meta.py index eb961e5..5a370c0 100644 --- a/src/evermemos/resources/v1/memories/conversation_meta.py +++ b/src/evermemos/resources/v1/memories/conversation_meta.py @@ -32,7 +32,7 @@ def with_raw_response(self) -> ConversationMetaResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return ConversationMetaResourceWithRawResponse(self) @@ -41,7 +41,7 @@ def with_streaming_response(self) -> ConversationMetaResourceWithStreamingRespon """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return ConversationMetaResourceWithStreamingResponse(self) @@ -214,7 +214,7 @@ def with_raw_response(self) -> AsyncConversationMetaResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return AsyncConversationMetaResourceWithRawResponse(self) @@ -223,7 +223,7 @@ def with_streaming_response(self) -> AsyncConversationMetaResourceWithStreamingR """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return AsyncConversationMetaResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/memories/memories.py b/src/evermemos/resources/v1/memories/memories.py index 85fbb90..0756127 100644 --- a/src/evermemos/resources/v1/memories/memories.py +++ b/src/evermemos/resources/v1/memories/memories.py @@ -46,7 +46,7 @@ def with_raw_response(self) -> MemoriesResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return MemoriesResourceWithRawResponse(self) @@ -55,7 +55,7 @@ def with_streaming_response(self) -> MemoriesResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return MemoriesResourceWithStreamingResponse(self) @@ -66,6 +66,7 @@ def create( create_time: str, message_id: str, sender: str, + flush: bool | Omit = omit, group_id: Optional[str] | Omit = omit, group_name: Optional[str] | Omit = omit, refer_list: Optional[SequenceNotStr[str]] | Omit = omit, @@ -90,6 +91,9 @@ def create( sender: Sender user ID (required). Also used as user_id internally for memory ownership. + flush: Force boundary trigger. When True, immediately triggers memory extraction + instead of waiting for natural boundary detection. + group_id: Group ID. If not provided, will automatically generate based on hash(sender) + '\\__group' suffix, representing single-user mode where each user's messages are extracted into separate memory spaces. @@ -122,6 +126,7 @@ def create( "create_time": create_time, "message_id": message_id, "sender": sender, + "flush": flush, "group_id": group_id, "group_name": group_name, "refer_list": refer_list, @@ -139,8 +144,8 @@ def create( def delete( self, *, - event_id: Optional[str] | Omit = omit, group_id: Optional[str] | Omit = omit, + memory_id: Optional[str] | Omit = omit, user_id: Optional[str] | 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. @@ -153,10 +158,10 @@ def delete( Delete memory records based on combined filter criteria Args: - event_id: Memory event_id (filter condition) - group_id: Group ID (filter condition) + memory_id: Memory id (filter condition) + user_id: User ID (filter condition) extra_headers: Send extra headers @@ -171,8 +176,8 @@ def delete( "/api/v1/memories", body=maybe_transform( { - "event_id": event_id, "group_id": group_id, + "memory_id": memory_id, "user_id": user_id, }, memory_delete_params.MemoryDeleteParams, @@ -285,7 +290,7 @@ def with_raw_response(self) -> AsyncMemoriesResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return AsyncMemoriesResourceWithRawResponse(self) @@ -294,7 +299,7 @@ def with_streaming_response(self) -> AsyncMemoriesResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return AsyncMemoriesResourceWithStreamingResponse(self) @@ -305,6 +310,7 @@ async def create( create_time: str, message_id: str, sender: str, + flush: bool | Omit = omit, group_id: Optional[str] | Omit = omit, group_name: Optional[str] | Omit = omit, refer_list: Optional[SequenceNotStr[str]] | Omit = omit, @@ -329,6 +335,9 @@ async def create( sender: Sender user ID (required). Also used as user_id internally for memory ownership. + flush: Force boundary trigger. When True, immediately triggers memory extraction + instead of waiting for natural boundary detection. + group_id: Group ID. If not provided, will automatically generate based on hash(sender) + '\\__group' suffix, representing single-user mode where each user's messages are extracted into separate memory spaces. @@ -361,6 +370,7 @@ async def create( "create_time": create_time, "message_id": message_id, "sender": sender, + "flush": flush, "group_id": group_id, "group_name": group_name, "refer_list": refer_list, @@ -378,8 +388,8 @@ async def create( async def delete( self, *, - event_id: Optional[str] | Omit = omit, group_id: Optional[str] | Omit = omit, + memory_id: Optional[str] | Omit = omit, user_id: Optional[str] | 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. @@ -392,10 +402,10 @@ async def delete( Delete memory records based on combined filter criteria Args: - event_id: Memory event_id (filter condition) - group_id: Group ID (filter condition) + memory_id: Memory id (filter condition) + user_id: User ID (filter condition) extra_headers: Send extra headers @@ -410,8 +420,8 @@ async def delete( "/api/v1/memories", body=await async_maybe_transform( { - "event_id": event_id, "group_id": group_id, + "memory_id": memory_id, "user_id": user_id, }, memory_delete_params.MemoryDeleteParams, diff --git a/src/evermemos/resources/v1/stats/request.py b/src/evermemos/resources/v1/stats/request.py index 3ae1746..94b6354 100644 --- a/src/evermemos/resources/v1/stats/request.py +++ b/src/evermemos/resources/v1/stats/request.py @@ -30,7 +30,7 @@ def with_raw_response(self) -> RequestResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return RequestResourceWithRawResponse(self) @@ -39,7 +39,7 @@ def with_streaming_response(self) -> RequestResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return RequestResourceWithStreamingResponse(self) @@ -58,7 +58,7 @@ def get( Query the processing status of a specific request Args: - request_id: Request ID (recommended) + request_id: this id is returned by add_memories api extra_headers: Send extra headers @@ -88,7 +88,7 @@ def with_raw_response(self) -> AsyncRequestResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return AsyncRequestResourceWithRawResponse(self) @@ -97,7 +97,7 @@ def with_streaming_response(self) -> AsyncRequestResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return AsyncRequestResourceWithStreamingResponse(self) @@ -116,7 +116,7 @@ async def get( Query the processing status of a specific request Args: - request_id: Request ID (recommended) + request_id: this id is returned by add_memories api extra_headers: Send extra headers diff --git a/src/evermemos/resources/v1/stats/stats.py b/src/evermemos/resources/v1/stats/stats.py index 829bc66..a535c41 100644 --- a/src/evermemos/resources/v1/stats/stats.py +++ b/src/evermemos/resources/v1/stats/stats.py @@ -27,7 +27,7 @@ def with_raw_response(self) -> StatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return StatsResourceWithRawResponse(self) @@ -36,7 +36,7 @@ def with_streaming_response(self) -> StatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return StatsResourceWithStreamingResponse(self) @@ -52,7 +52,7 @@ def with_raw_response(self) -> AsyncStatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return AsyncStatsResourceWithRawResponse(self) @@ -61,7 +61,7 @@ def with_streaming_response(self) -> AsyncStatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return AsyncStatsResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/v1.py b/src/evermemos/resources/v1/v1.py index 929f6b6..29274d6 100644 --- a/src/evermemos/resources/v1/v1.py +++ b/src/evermemos/resources/v1/v1.py @@ -20,14 +20,6 @@ MemoriesResourceWithStreamingResponse, AsyncMemoriesResourceWithStreamingResponse, ) -from .global_user_profile.global_user_profile import ( - GlobalUserProfileResource, - AsyncGlobalUserProfileResource, - GlobalUserProfileResourceWithRawResponse, - AsyncGlobalUserProfileResourceWithRawResponse, - GlobalUserProfileResourceWithStreamingResponse, - AsyncGlobalUserProfileResourceWithStreamingResponse, -) __all__ = ["V1Resource", "AsyncV1Resource"] @@ -37,10 +29,6 @@ class V1Resource(SyncAPIResource): def memories(self) -> MemoriesResource: return MemoriesResource(self._client) - @cached_property - def global_user_profile(self) -> GlobalUserProfileResource: - return GlobalUserProfileResource(self._client) - @cached_property def stats(self) -> StatsResource: return StatsResource(self._client) @@ -51,7 +39,7 @@ def with_raw_response(self) -> V1ResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return V1ResourceWithRawResponse(self) @@ -60,7 +48,7 @@ def with_streaming_response(self) -> V1ResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return V1ResourceWithStreamingResponse(self) @@ -70,10 +58,6 @@ class AsyncV1Resource(AsyncAPIResource): def memories(self) -> AsyncMemoriesResource: return AsyncMemoriesResource(self._client) - @cached_property - def global_user_profile(self) -> AsyncGlobalUserProfileResource: - return AsyncGlobalUserProfileResource(self._client) - @cached_property def stats(self) -> AsyncStatsResource: return AsyncStatsResource(self._client) @@ -84,7 +68,7 @@ def with_raw_response(self) -> AsyncV1ResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers """ return AsyncV1ResourceWithRawResponse(self) @@ -93,7 +77,7 @@ def with_streaming_response(self) -> AsyncV1ResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response + For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response """ return AsyncV1ResourceWithStreamingResponse(self) @@ -106,10 +90,6 @@ def __init__(self, v1: V1Resource) -> None: def memories(self) -> MemoriesResourceWithRawResponse: return MemoriesResourceWithRawResponse(self._v1.memories) - @cached_property - def global_user_profile(self) -> GlobalUserProfileResourceWithRawResponse: - return GlobalUserProfileResourceWithRawResponse(self._v1.global_user_profile) - @cached_property def stats(self) -> StatsResourceWithRawResponse: return StatsResourceWithRawResponse(self._v1.stats) @@ -123,10 +103,6 @@ def __init__(self, v1: AsyncV1Resource) -> None: def memories(self) -> AsyncMemoriesResourceWithRawResponse: return AsyncMemoriesResourceWithRawResponse(self._v1.memories) - @cached_property - def global_user_profile(self) -> AsyncGlobalUserProfileResourceWithRawResponse: - return AsyncGlobalUserProfileResourceWithRawResponse(self._v1.global_user_profile) - @cached_property def stats(self) -> AsyncStatsResourceWithRawResponse: return AsyncStatsResourceWithRawResponse(self._v1.stats) @@ -140,10 +116,6 @@ def __init__(self, v1: V1Resource) -> None: def memories(self) -> MemoriesResourceWithStreamingResponse: return MemoriesResourceWithStreamingResponse(self._v1.memories) - @cached_property - def global_user_profile(self) -> GlobalUserProfileResourceWithStreamingResponse: - return GlobalUserProfileResourceWithStreamingResponse(self._v1.global_user_profile) - @cached_property def stats(self) -> StatsResourceWithStreamingResponse: return StatsResourceWithStreamingResponse(self._v1.stats) @@ -157,10 +129,6 @@ def __init__(self, v1: AsyncV1Resource) -> None: def memories(self) -> AsyncMemoriesResourceWithStreamingResponse: return AsyncMemoriesResourceWithStreamingResponse(self._v1.memories) - @cached_property - def global_user_profile(self) -> AsyncGlobalUserProfileResourceWithStreamingResponse: - return AsyncGlobalUserProfileResourceWithStreamingResponse(self._v1.global_user_profile) - @cached_property def stats(self) -> AsyncStatsResourceWithStreamingResponse: return AsyncStatsResourceWithStreamingResponse(self._v1.stats) diff --git a/src/evermemos/types/v1/global_user_profile/__init__.py b/src/evermemos/types/v1/global_user_profile/__init__.py index 420b2eb..f8ee8b1 100644 --- a/src/evermemos/types/v1/global_user_profile/__init__.py +++ b/src/evermemos/types/v1/global_user_profile/__init__.py @@ -1,6 +1,3 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from __future__ import annotations - -from .custom_upsert_params import CustomUpsertParams as CustomUpsertParams -from .custom_upsert_response import CustomUpsertResponse as CustomUpsertResponse diff --git a/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py b/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py deleted file mode 100644 index 74ab9d3..0000000 --- a/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py +++ /dev/null @@ -1,24 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -from ...._types import SequenceNotStr - -__all__ = ["CustomUpsertParams", "CustomProfileData"] - - -class CustomUpsertParams(TypedDict, total=False): - custom_profile_data: Required[CustomProfileData] - """Custom profile data to upsert""" - - user_id: Required[str] - """User ID""" - - -class CustomProfileData(TypedDict, total=False): - """Custom profile data to upsert""" - - initial_profile: Required[SequenceNotStr[str]] - """List of profile sentences describing the user""" diff --git a/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py b/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py deleted file mode 100644 index 0510879..0000000 --- a/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py +++ /dev/null @@ -1,23 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, Optional - -from ...._models import BaseModel - -__all__ = ["CustomUpsertResponse"] - - -class CustomUpsertResponse(BaseModel): - """Upsert custom profile response - - Response for upsert custom profile API. - """ - - success: bool - """Whether the operation was successful""" - - data: Optional[Dict[str, object]] = None - """Created/updated profile data""" - - message: Optional[str] = None - """Message""" diff --git a/src/evermemos/types/v1/memory_create_params.py b/src/evermemos/types/v1/memory_create_params.py index d8735b6..7f654d0 100644 --- a/src/evermemos/types/v1/memory_create_params.py +++ b/src/evermemos/types/v1/memory_create_params.py @@ -26,6 +26,13 @@ class MemoryCreateParams(TypedDict, total=False): Also used as user_id internally for memory ownership. """ + flush: bool + """Force boundary trigger. + + When True, immediately triggers memory extraction instead of waiting for natural + boundary detection. + """ + group_id: Optional[str] """Group ID. diff --git a/src/evermemos/types/v1/memory_create_response.py b/src/evermemos/types/v1/memory_create_response.py index ef25ed0..1cdce76 100644 --- a/src/evermemos/types/v1/memory_create_response.py +++ b/src/evermemos/types/v1/memory_create_response.py @@ -1,39 +1,13 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional - from ..._models import BaseModel -__all__ = ["MemoryCreateResponse", "Result"] - - -class Result(BaseModel): - """Memory storage result""" - - count: Optional[int] = None - """Number of memories extracted""" - - saved_memories: Optional[List[object]] = None - """List of saved memories (fetch via API for details)""" - - status_info: Optional[str] = None - """ - Processing status: 'extracted' (memories created) or 'accumulated' (waiting for - boundary) - """ +__all__ = ["MemoryCreateResponse"] class MemoryCreateResponse(BaseModel): - """Memory storage response - - Response for POST /api/v1/memories endpoint. - """ - - message: Optional[str] = None - """Response message""" + message: str - result: Optional[Result] = None - """Memory storage result""" + request_id: str - status: Optional[str] = None - """Response status""" + status: str diff --git a/src/evermemos/types/v1/memory_delete_params.py b/src/evermemos/types/v1/memory_delete_params.py index 6fff2d0..9d73bc1 100644 --- a/src/evermemos/types/v1/memory_delete_params.py +++ b/src/evermemos/types/v1/memory_delete_params.py @@ -9,11 +9,11 @@ class MemoryDeleteParams(TypedDict, total=False): - event_id: Optional[str] - """Memory event_id (filter condition)""" - group_id: Optional[str] """Group ID (filter condition)""" + memory_id: Optional[str] + """Memory id (filter condition)""" + user_id: Optional[str] """User ID (filter condition)""" diff --git a/src/evermemos/types/v1/memory_get_response.py b/src/evermemos/types/v1/memory_get_response.py index a3fe20b..ba28bc4 100644 --- a/src/evermemos/types/v1/memory_get_response.py +++ b/src/evermemos/types/v1/memory_get_response.py @@ -145,10 +145,12 @@ class ResultMemoryEpisodicMemoryModel(BaseModel): location: Optional[str] = None - memcell_event_id_list: Optional[List[str]] = None - metadata: Optional[Metadata] = None + parent_id: Optional[str] = None + + parent_type: Optional[str] = None + participants: Optional[List[str]] = None start_time: Optional[datetime] = None diff --git a/src/evermemos/types/v1/stats/request_get_params.py b/src/evermemos/types/v1/stats/request_get_params.py index 2b117d1..9657562 100644 --- a/src/evermemos/types/v1/stats/request_get_params.py +++ b/src/evermemos/types/v1/stats/request_get_params.py @@ -10,4 +10,4 @@ class RequestGetParams(TypedDict, total=False): request_id: Required[Optional[str]] - """Request ID (recommended)""" + """this id is returned by add_memories api""" diff --git a/tests/api_resources/v1/global_user_profile/__init__.py b/tests/api_resources/v1/global_user_profile/__init__.py deleted file mode 100644 index fd8019a..0000000 --- a/tests/api_resources/v1/global_user_profile/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. diff --git a/tests/api_resources/v1/global_user_profile/test_custom.py b/tests/api_resources/v1/global_user_profile/test_custom.py deleted file mode 100644 index 4bc9408..0000000 --- a/tests/api_resources/v1/global_user_profile/test_custom.py +++ /dev/null @@ -1,134 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from evermemos import EverMemOS, AsyncEverMemOS -from tests.utils import assert_matches_type -from evermemos.types.v1.global_user_profile import CustomUpsertResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestCustom: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - def test_method_upsert(self, client: EverMemOS) -> None: - custom = client.v1.global_user_profile.custom.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - def test_raw_response_upsert(self, client: EverMemOS) -> None: - response = client.v1.global_user_profile.custom.with_raw_response.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - custom = response.parse() - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - def test_streaming_response_upsert(self, client: EverMemOS) -> None: - with client.v1.global_user_profile.custom.with_streaming_response.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - custom = response.parse() - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - assert cast(Any, response.is_closed) is True - - -class TestAsyncCustom: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - async def test_method_upsert(self, async_client: AsyncEverMemOS) -> None: - custom = await async_client.v1.global_user_profile.custom.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - async def test_raw_response_upsert(self, async_client: AsyncEverMemOS) -> None: - response = await async_client.v1.global_user_profile.custom.with_raw_response.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - custom = await response.parse() - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - @pytest.mark.skip(reason="Prism tests are disabled") - @parametrize - async def test_streaming_response_upsert(self, async_client: AsyncEverMemOS) -> None: - async with async_client.v1.global_user_profile.custom.with_streaming_response.upsert( - custom_profile_data={ - "initial_profile": [ - "User is a software engineer", - "User is proficient in Python programming", - "User is interested in AI technology", - ] - }, - user_id="user_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - custom = await response.parse() - assert_matches_type(CustomUpsertResponse, custom, path=["response"]) - - assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/v1/test_memories.py b/tests/api_resources/v1/test_memories.py index 9946764..ffde8ee 100644 --- a/tests/api_resources/v1/test_memories.py +++ b/tests/api_resources/v1/test_memories.py @@ -42,6 +42,7 @@ def test_method_create_with_all_params(self, client: EverMemOS) -> None: create_time="2025-01-15T10:00:00+00:00", message_id="msg_001", sender="user_001", + flush=False, group_id="group_123", group_name="Project Discussion Group", refer_list=["msg_000"], @@ -92,8 +93,8 @@ def test_method_delete(self, client: EverMemOS) -> None: @parametrize def test_method_delete_with_all_params(self, client: EverMemOS) -> None: memory = client.v1.memories.delete( - event_id="507f1f77bcf86cd799439011", group_id="group_456", + memory_id="507f1f77bcf86cd799439011", user_id="user_123", ) assert_matches_type(MemoryDeleteResponse, memory, path=["response"]) @@ -270,6 +271,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncEverMemOS) create_time="2025-01-15T10:00:00+00:00", message_id="msg_001", sender="user_001", + flush=False, group_id="group_123", group_name="Project Discussion Group", refer_list=["msg_000"], @@ -320,8 +322,8 @@ async def test_method_delete(self, async_client: AsyncEverMemOS) -> None: @parametrize async def test_method_delete_with_all_params(self, async_client: AsyncEverMemOS) -> None: memory = await async_client.v1.memories.delete( - event_id="507f1f77bcf86cd799439011", group_id="group_456", + memory_id="507f1f77bcf86cd799439011", user_id="user_123", ) assert_matches_type(MemoryDeleteResponse, memory, path=["response"]) From 11a1c09da854becb6567ad5428db716e38e81ee0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:45:55 +0000 Subject: [PATCH 2/4] chore: update SDK settings --- .github/workflows/publish-pypi.yml | 28 ++++++++ .github/workflows/release-doctor.yml | 21 ++++++ .release-please-manifest.json | 3 + .stats.yml | 2 +- CONTRIBUTING.md | 4 +- README.md | 14 ++-- bin/check-release-environment | 21 ++++++ pyproject.toml | 6 +- release-please-config.json | 66 +++++++++++++++++++ src/evermemos/_version.py | 2 +- .../v1/memories/conversation_meta.py | 8 +-- .../resources/v1/memories/memories.py | 8 +-- src/evermemos/resources/v1/stats/request.py | 8 +-- src/evermemos/resources/v1/stats/stats.py | 8 +-- src/evermemos/resources/v1/v1.py | 8 +-- 15 files changed, 173 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/publish-pypi.yml create mode 100644 .github/workflows/release-doctor.yml create mode 100644 .release-please-manifest.json create mode 100644 bin/check-release-environment create mode 100644 release-please-config.json diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml new file mode 100644 index 0000000..6fff56a --- /dev/null +++ b/.github/workflows/publish-pypi.yml @@ -0,0 +1,28 @@ +# This workflow is triggered when a GitHub release is created. +# It can also be run manually to re-publish to PyPI in case it failed for some reason. +# You can run this workflow by navigating to https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml +name: Publish PyPI +on: + workflow_dispatch: + + release: + types: [published] + +jobs: + publish: + name: publish + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: '0.9.13' + + - name: Publish to PyPI + run: | + bash ./bin/publish-pypi + env: + PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml new file mode 100644 index 0000000..73257f5 --- /dev/null +++ b/.github/workflows/release-doctor.yml @@ -0,0 +1,21 @@ +name: Release Doctor +on: + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + release_doctor: + name: release doctor + runs-on: ubuntu-latest + if: github.repository == 'evermemos/evermemos-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') + + steps: + - uses: actions/checkout@v6 + + - name: Check release environment + run: | + bash ./bin/check-release-environment + env: + PYPI_TOKEN: ${{ secrets.EVER_MEM_OS_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..457d91e --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.3.7" +} \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index fe48da6..1dd5ebd 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 9 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959 -config_hash: 49fa8adc2cd2a34ce9f1c66e45e03a17 +config_hash: 81e0b016bf2561036eec95f88cbd6707 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2e1e5a..315c632 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -62,7 +62,7 @@ If you’d like to use the repository from source, you can either install from g To install via git: ```sh -$ pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git +$ pip install git+ssh://git@github.com/evermemos/evermemos-python.git ``` Alternatively, you can build from source and install the wheel file: @@ -120,7 +120,7 @@ the changes aren't made through the automated pipeline, you may want to make rel ### Publish with a GitHub workflow -You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/EverMemOS-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. +You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/evermemos/evermemos-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. ### Publish manually diff --git a/README.md b/README.md index e151a42..a8e8731 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ The full API of this library can be found in [api.md](api.md). ## Installation ```sh -# install from this staging repo -pip install git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git +# install from the production repo +pip install git+ssh://git@github.com/evermemos/evermemos-python.git ``` > [!NOTE] @@ -85,8 +85,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv You can enable this by installing `aiohttp`: ```sh -# install from this staging repo -pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/stainless-sdks/EverMemOS-python.git' +# install from the production repo +pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/evermemos/evermemos-python.git' ``` Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`: @@ -302,9 +302,9 @@ memory = response.parse() # get the object that `v1.memories.create()` would ha print(memory.request_id) ``` -These methods return an [`APIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) object. +These methods return an [`APIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) object. -The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/EverMemOS-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. +The async client returns an [`AsyncAPIResponse`](https://github.com/evermemos/evermemos-python/tree/main/src/evermemos/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. #### `.with_streaming_response` @@ -413,7 +413,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience. -We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/EverMemOS-python/issues) with questions, bugs, or suggestions. +We are keen for your feedback; please open an [issue](https://www.github.com/evermemos/evermemos-python/issues) with questions, bugs, or suggestions. ### Determining the installed version diff --git a/bin/check-release-environment b/bin/check-release-environment new file mode 100644 index 0000000..b845b0f --- /dev/null +++ b/bin/check-release-environment @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +errors=() + +if [ -z "${PYPI_TOKEN}" ]; then + errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.") +fi + +lenErrors=${#errors[@]} + +if [[ lenErrors -gt 0 ]]; then + echo -e "Found the following errors in the release environment:\n" + + for error in "${errors[@]}"; do + echo -e "- $error\n" + done + + exit 1 +fi + +echo "The environment is ready to push releases!" diff --git a/pyproject.toml b/pyproject.toml index 75fdd30..a908309 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,8 +37,8 @@ classifiers = [ ] [project.urls] -Homepage = "https://github.com/stainless-sdks/EverMemOS-python" -Repository = "https://github.com/stainless-sdks/EverMemOS-python" +Homepage = "https://github.com/evermemos/evermemos-python" +Repository = "https://github.com/evermemos/evermemos-python" [project.optional-dependencies] aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"] @@ -112,7 +112,7 @@ path = "README.md" [[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]] # replace relative links with absolute links pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)' -replacement = '[\1](https://github.com/stainless-sdks/EverMemOS-python/tree/main/\g<2>)' +replacement = '[\1](https://github.com/evermemos/evermemos-python/tree/main/\g<2>)' [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..9e1e0db --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,66 @@ +{ + "packages": { + ".": {} + }, + "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json", + "include-v-in-tag": true, + "include-component-in-tag": false, + "versioning": "prerelease", + "prerelease": true, + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "pull-request-header": "Automated Release PR", + "pull-request-title-pattern": "release: ${version}", + "changelog-sections": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "perf", + "section": "Performance Improvements" + }, + { + "type": "revert", + "section": "Reverts" + }, + { + "type": "chore", + "section": "Chores" + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "style", + "section": "Styles" + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "build", + "section": "Build System" + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + } + ], + "release-type": "python", + "extra-files": [ + "src/evermemos/_version.py" + ] +} \ No newline at end of file diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py index 3bb3987..334c40d 100644 --- a/src/evermemos/_version.py +++ b/src/evermemos/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "evermemos" -__version__ = "0.3.7" +__version__ = "0.3.7" # x-release-please-version diff --git a/src/evermemos/resources/v1/memories/conversation_meta.py b/src/evermemos/resources/v1/memories/conversation_meta.py index 5a370c0..eb961e5 100644 --- a/src/evermemos/resources/v1/memories/conversation_meta.py +++ b/src/evermemos/resources/v1/memories/conversation_meta.py @@ -32,7 +32,7 @@ def with_raw_response(self) -> ConversationMetaResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return ConversationMetaResourceWithRawResponse(self) @@ -41,7 +41,7 @@ def with_streaming_response(self) -> ConversationMetaResourceWithStreamingRespon """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return ConversationMetaResourceWithStreamingResponse(self) @@ -214,7 +214,7 @@ def with_raw_response(self) -> AsyncConversationMetaResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return AsyncConversationMetaResourceWithRawResponse(self) @@ -223,7 +223,7 @@ def with_streaming_response(self) -> AsyncConversationMetaResourceWithStreamingR """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return AsyncConversationMetaResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/memories/memories.py b/src/evermemos/resources/v1/memories/memories.py index 0756127..aabd1ee 100644 --- a/src/evermemos/resources/v1/memories/memories.py +++ b/src/evermemos/resources/v1/memories/memories.py @@ -46,7 +46,7 @@ def with_raw_response(self) -> MemoriesResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return MemoriesResourceWithRawResponse(self) @@ -55,7 +55,7 @@ def with_streaming_response(self) -> MemoriesResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return MemoriesResourceWithStreamingResponse(self) @@ -290,7 +290,7 @@ def with_raw_response(self) -> AsyncMemoriesResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return AsyncMemoriesResourceWithRawResponse(self) @@ -299,7 +299,7 @@ def with_streaming_response(self) -> AsyncMemoriesResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return AsyncMemoriesResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/stats/request.py b/src/evermemos/resources/v1/stats/request.py index 94b6354..865130b 100644 --- a/src/evermemos/resources/v1/stats/request.py +++ b/src/evermemos/resources/v1/stats/request.py @@ -30,7 +30,7 @@ def with_raw_response(self) -> RequestResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return RequestResourceWithRawResponse(self) @@ -39,7 +39,7 @@ def with_streaming_response(self) -> RequestResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return RequestResourceWithStreamingResponse(self) @@ -88,7 +88,7 @@ def with_raw_response(self) -> AsyncRequestResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return AsyncRequestResourceWithRawResponse(self) @@ -97,7 +97,7 @@ def with_streaming_response(self) -> AsyncRequestResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return AsyncRequestResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/stats/stats.py b/src/evermemos/resources/v1/stats/stats.py index a535c41..829bc66 100644 --- a/src/evermemos/resources/v1/stats/stats.py +++ b/src/evermemos/resources/v1/stats/stats.py @@ -27,7 +27,7 @@ def with_raw_response(self) -> StatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return StatsResourceWithRawResponse(self) @@ -36,7 +36,7 @@ def with_streaming_response(self) -> StatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return StatsResourceWithStreamingResponse(self) @@ -52,7 +52,7 @@ def with_raw_response(self) -> AsyncStatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return AsyncStatsResourceWithRawResponse(self) @@ -61,7 +61,7 @@ def with_streaming_response(self) -> AsyncStatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return AsyncStatsResourceWithStreamingResponse(self) diff --git a/src/evermemos/resources/v1/v1.py b/src/evermemos/resources/v1/v1.py index 29274d6..8289662 100644 --- a/src/evermemos/resources/v1/v1.py +++ b/src/evermemos/resources/v1/v1.py @@ -39,7 +39,7 @@ def with_raw_response(self) -> V1ResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return V1ResourceWithRawResponse(self) @@ -48,7 +48,7 @@ def with_streaming_response(self) -> V1ResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return V1ResourceWithStreamingResponse(self) @@ -68,7 +68,7 @@ def with_raw_response(self) -> AsyncV1ResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers """ return AsyncV1ResourceWithRawResponse(self) @@ -77,7 +77,7 @@ def with_streaming_response(self) -> AsyncV1ResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/EverMemOS-python#with_streaming_response + For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response """ return AsyncV1ResourceWithStreamingResponse(self) From c6d796d7bbbec539954c1802094932a919d0b8e5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:46:12 +0000 Subject: [PATCH 3/4] chore: update SDK settings --- .stats.yml | 2 +- README.md | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.stats.yml b/.stats.yml index 1dd5ebd..a85760e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 9 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evermind%2FEverMemOS-70486f52a522b1271f833cc3263dfe012c0ae7c0f1d520a18d45037cc9633511.yml openapi_spec_hash: 3b4ed62d5425b7d7c4313c731b9f4959 -config_hash: 81e0b016bf2561036eec95f88cbd6707 +config_hash: 9bde077e7fec6b4fc6b5747ccb68227a diff --git a/README.md b/README.md index a8e8731..fe37220 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,10 @@ The full API of this library can be found in [api.md](api.md). ## Installation ```sh -# install from the production repo -pip install git+ssh://git@github.com/evermemos/evermemos-python.git +# install from PyPI +pip install evermemos ``` -> [!NOTE] -> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install evermemos` - ## Usage The full API of this library can be found in [api.md](api.md). @@ -85,8 +82,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv You can enable this by installing `aiohttp`: ```sh -# install from the production repo -pip install 'evermemos[aiohttp] @ git+ssh://git@github.com/evermemos/evermemos-python.git' +# install from PyPI +pip install evermemos[aiohttp] ``` Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`: From c39e77a1975dd68526a95f1b85b2b13ae1eafab7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:54:20 +0000 Subject: [PATCH 4/4] release: 0.3.8 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ pyproject.toml | 2 +- src/evermemos/_version.py | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 457d91e..ce81e00 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.3.7" + ".": "0.3.8" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bafbb1..9c2521d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.3.8 (2026-01-28) + +Full Changelog: [v0.3.7...v0.3.8](https://github.com/evermemos/evermemos-python/compare/v0.3.7...v0.3.8) + +### Features + +* **api:** api update ([e2cc79c](https://github.com/evermemos/evermemos-python/commit/e2cc79c7b19cd8da12385d59bd6fcb7e83be6c84)) + + +### Chores + +* update SDK settings ([c6d796d](https://github.com/evermemos/evermemos-python/commit/c6d796d7bbbec539954c1802094932a919d0b8e5)) +* update SDK settings ([11a1c09](https://github.com/evermemos/evermemos-python/commit/11a1c09da854becb6567ad5428db716e38e81ee0)) + ## 0.3.7 (2026-01-27) Full Changelog: [v0.3.6...v0.3.7](https://github.com/evermemos/evermemos-python/compare/v0.3.6...v0.3.7) diff --git a/pyproject.toml b/pyproject.toml index a908309..8060d2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "evermemos" -version = "0.3.7" +version = "0.3.8" description = "The official Python library for the EverMemOS API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/evermemos/_version.py b/src/evermemos/_version.py index 334c40d..fdbad9f 100644 --- a/src/evermemos/_version.py +++ b/src/evermemos/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "evermemos" -__version__ = "0.3.7" # x-release-please-version +__version__ = "0.3.8" # x-release-please-version