diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5b9eb92..5007ea2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.48.0" + ".": "3.49.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 07becdc..a203b6d 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/supermemory-new-62ed5d466e259c8e4311abe68915161cd0a01d1cc6d9079945eb8a0ebf73f690.yml -openapi_spec_hash: 9622631943e5355eb6923e0c2e12f772 +configured_endpoints: 16 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc/supermemory-new-7185975161e0406ec7c438985acd80273dfd95ade0983d2029bed87c46182d62.yml +openapi_spec_hash: ced6ea198b00867f09ef26384d3eaa6a config_hash: cde97ef3188581c5f4924c633ec33ddb diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce7b0d..22db4a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.49.0 (2026-06-22) + +Full Changelog: [v3.48.0...v3.49.0](https://github.com/supermemoryai/python-sdk/compare/v3.48.0...v3.49.0) + +### Features + +* **api:** api update ([8e8bab1](https://github.com/supermemoryai/python-sdk/commit/8e8bab1d33f48015bf7acf1412653c0237440ebd)) + ## 3.48.0 (2026-06-20) Full Changelog: [v3.47.0...v3.48.0](https://github.com/supermemoryai/python-sdk/compare/v3.47.0...v3.48.0) diff --git a/api.md b/api.md index 2b72f5d..838d92d 100644 --- a/api.md +++ b/api.md @@ -79,35 +79,3 @@ Methods: - client.settings.update(\*\*params) -> SettingUpdateResponse - client.settings.get() -> SettingGetResponse - -# Connections - -Types: - -```python -from supermemory.types import ( - ConnectionCreateResponse, - ConnectionListResponse, - ConnectionConfigureResponse, - ConnectionDeleteByIDResponse, - ConnectionDeleteByProviderResponse, - ConnectionGetByIDResponse, - ConnectionGetByTagResponse, - ConnectionImportResponse, - ConnectionListDocumentsResponse, - ConnectionResourcesResponse, -) -``` - -Methods: - -- client.connections.create(provider, \*\*params) -> ConnectionCreateResponse -- client.connections.list(\*\*params) -> ConnectionListResponse -- client.connections.configure(connection_id, \*\*params) -> ConnectionConfigureResponse -- client.connections.delete_by_id(connection_id, \*\*params) -> ConnectionDeleteByIDResponse -- client.connections.delete_by_provider(provider, \*\*params) -> ConnectionDeleteByProviderResponse -- client.connections.get_by_id(connection_id) -> ConnectionGetByIDResponse -- client.connections.get_by_tag(provider, \*\*params) -> ConnectionGetByTagResponse -- client.connections.import\_(provider, \*\*params) -> str -- client.connections.list_documents(provider, \*\*params) -> ConnectionListDocumentsResponse -- client.connections.resources(connection_id, \*\*params) -> ConnectionResourcesResponse diff --git a/pyproject.toml b/pyproject.toml index 31c609c..8d4d3a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "supermemory" -version = "3.48.0" +version = "3.49.0" description = "The official Python library for the supermemory API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/supermemory/_client.py b/src/supermemory/_client.py index b6f5e0a..916594a 100644 --- a/src/supermemory/_client.py +++ b/src/supermemory/_client.py @@ -52,12 +52,11 @@ from .types.profile_response import ProfileResponse if TYPE_CHECKING: - from .resources import search, memories, settings, documents, connections + from .resources import search, memories, settings, documents from .resources.search import SearchResource, AsyncSearchResource from .resources.memories import MemoriesResource, AsyncMemoriesResource from .resources.settings import SettingsResource, AsyncSettingsResource from .resources.documents import DocumentsResource, AsyncDocumentsResource - from .resources.connections import ConnectionsResource, AsyncConnectionsResource __all__ = [ "Timeout", @@ -161,13 +160,6 @@ def settings(self) -> SettingsResource: return SettingsResource(self) - @cached_property - def connections(self) -> ConnectionsResource: - """External service integrations""" - from .resources.connections import ConnectionsResource - - return ConnectionsResource(self) - @cached_property def with_raw_response(self) -> SupermemoryWithRawResponse: return SupermemoryWithRawResponse(self) @@ -518,13 +510,6 @@ def settings(self) -> AsyncSettingsResource: return AsyncSettingsResource(self) - @cached_property - def connections(self) -> AsyncConnectionsResource: - """External service integrations""" - from .resources.connections import AsyncConnectionsResource - - return AsyncConnectionsResource(self) - @cached_property def with_raw_response(self) -> AsyncSupermemoryWithRawResponse: return AsyncSupermemoryWithRawResponse(self) @@ -824,13 +809,6 @@ def settings(self) -> settings.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) - class AsyncSupermemoryWithRawResponse: _client: AsyncSupermemory @@ -871,13 +849,6 @@ def settings(self) -> settings.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) - class SupermemoryWithStreamedResponse: _client: Supermemory @@ -918,13 +889,6 @@ def settings(self) -> settings.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) - class AsyncSupermemoryWithStreamedResponse: _client: AsyncSupermemory @@ -965,13 +929,6 @@ def settings(self) -> settings.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) - Client = Supermemory diff --git a/src/supermemory/_version.py b/src/supermemory/_version.py index 4635866..8fa1ebb 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.48.0" # x-release-please-version +__version__ = "3.49.0" # x-release-please-version diff --git a/src/supermemory/resources/__init__.py b/src/supermemory/resources/__init__.py index ca24f73..9225a82 100644 --- a/src/supermemory/resources/__init__.py +++ b/src/supermemory/resources/__init__.py @@ -32,14 +32,6 @@ DocumentsResourceWithStreamingResponse, AsyncDocumentsResourceWithStreamingResponse, ) -from .connections import ( - ConnectionsResource, - AsyncConnectionsResource, - ConnectionsResourceWithRawResponse, - AsyncConnectionsResourceWithRawResponse, - ConnectionsResourceWithStreamingResponse, - AsyncConnectionsResourceWithStreamingResponse, -) __all__ = [ "MemoriesResource", @@ -66,10 +58,4 @@ "AsyncSettingsResourceWithRawResponse", "SettingsResourceWithStreamingResponse", "AsyncSettingsResourceWithStreamingResponse", - "ConnectionsResource", - "AsyncConnectionsResource", - "ConnectionsResourceWithRawResponse", - "AsyncConnectionsResourceWithRawResponse", - "ConnectionsResourceWithStreamingResponse", - "AsyncConnectionsResourceWithStreamingResponse", ] diff --git a/src/supermemory/resources/connections.py b/src/supermemory/resources/connections.py deleted file mode 100644 index c3910fb..0000000 --- a/src/supermemory/resources/connections.py +++ /dev/null @@ -1,1028 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Dict, Union, Iterable, Optional -from typing_extensions import Literal - -import httpx - -from ..types import ( - connection_list_params, - connection_create_params, - connection_import_params, - connection_configure_params, - connection_resources_params, - connection_get_by_tag_params, - connection_delete_by_id_params, - connection_list_documents_params, - connection_delete_by_provider_params, -) -from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given -from .._utils import path_template, 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.connection_list_response import ConnectionListResponse -from ..types.connection_create_response import ConnectionCreateResponse -from ..types.connection_configure_response import ConnectionConfigureResponse -from ..types.connection_get_by_id_response import ConnectionGetByIDResponse -from ..types.connection_resources_response import ConnectionResourcesResponse -from ..types.connection_get_by_tag_response import ConnectionGetByTagResponse -from ..types.connection_delete_by_id_response import ConnectionDeleteByIDResponse -from ..types.connection_list_documents_response import ConnectionListDocumentsResponse -from ..types.connection_delete_by_provider_response import ConnectionDeleteByProviderResponse - -__all__ = ["ConnectionsResource", "AsyncConnectionsResource"] - - -class ConnectionsResource(SyncAPIResource): - """External service integrations""" - - @cached_property - def with_raw_response(self) -> ConnectionsResourceWithRawResponse: - """ - 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/supermemoryai/python-sdk#accessing-raw-response-data-eg-headers - """ - return ConnectionsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> ConnectionsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/supermemoryai/python-sdk#with_streaming_response - """ - return ConnectionsResourceWithStreamingResponse(self) - - def create( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tag: str | Omit = omit, - container_tags: SequenceNotStr[str] | Omit = omit, - document_limit: int | Omit = omit, - metadata: Optional[Dict[str, Union[str, float, bool]]] | Omit = omit, - redirect_url: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionCreateResponse: - """ - Initialize connection and get authorization URL - - Args: - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return self._post( - path_template("/v3/connections/{provider}", provider=provider), - body=maybe_transform( - { - "container_tag": container_tag, - "container_tags": container_tags, - "document_limit": document_limit, - "metadata": metadata, - "redirect_url": redirect_url, - }, - connection_create_params.ConnectionCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionCreateResponse, - ) - - def list( - self, - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionListResponse: - """ - List all connections - - Args: - container_tags: Optional comma-separated list of container tags to filter documents by - - 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( - "/v3/connections/list", - body=maybe_transform({"container_tags": container_tags}, connection_list_params.ConnectionListParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionListResponse, - ) - - def configure( - self, - connection_id: str, - *, - resources: Iterable[Dict[str, object]], - # 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, - ) -> ConnectionConfigureResponse: - """ - Configure resources for a connection (supported providers: GitHub for now) - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return self._post( - path_template("/v3/connections/{connection_id}/configure", connection_id=connection_id), - body=maybe_transform({"resources": resources}, connection_configure_params.ConnectionConfigureParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionConfigureResponse, - ) - - def delete_by_id( - self, - connection_id: str, - *, - delete_documents: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionDeleteByIDResponse: - """ - Delete a specific connection by ID - - Args: - delete_documents: Whether to also delete documents imported by this connection. Defaults to true. - - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return self._delete( - path_template("/v3/connections/{connection_id}", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - {"delete_documents": delete_documents}, connection_delete_by_id_params.ConnectionDeleteByIDParams - ), - ), - cast_to=ConnectionDeleteByIDResponse, - ) - - def delete_by_provider( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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, - ) -> ConnectionDeleteByProviderResponse: - """ - Delete connection for a specific provider and container tags - - Args: - container_tags: Optional comma-separated list of container tags to filter connections by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return self._delete( - path_template("/v3/connections/{provider}", provider=provider), - body=maybe_transform( - {"container_tags": container_tags}, - connection_delete_by_provider_params.ConnectionDeleteByProviderParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionDeleteByProviderResponse, - ) - - def get_by_id( - self, - connection_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, - ) -> ConnectionGetByIDResponse: - """ - Get connection details with id - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return self._get( - path_template("/v3/connections/{connection_id}", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionGetByIDResponse, - ) - - def get_by_tag( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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, - ) -> ConnectionGetByTagResponse: - """ - Get connection details with provider and container tags - - Args: - container_tags: Comma-separated list of container tags to filter connection by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return self._post( - path_template("/v3/connections/{provider}/connection", provider=provider), - body=maybe_transform( - {"container_tags": container_tags}, connection_get_by_tag_params.ConnectionGetByTagParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionGetByTagResponse, - ) - - def import_( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> str: - """ - Initiate a manual sync of connections - - Args: - container_tags: Optional comma-separated list of container tags to filter connections by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - extra_headers = {"Accept": "text/plain", **(extra_headers or {})} - return self._post( - path_template("/v3/connections/{provider}/import", provider=provider), - body=maybe_transform({"container_tags": container_tags}, connection_import_params.ConnectionImportParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=str, - ) - - def list_documents( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionListDocumentsResponse: - """ - List documents indexed for a provider and container tags - - Args: - container_tags: Optional comma-separated list of container tags to filter documents by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return self._post( - path_template("/v3/connections/{provider}/documents", provider=provider), - body=maybe_transform( - {"container_tags": container_tags}, connection_list_documents_params.ConnectionListDocumentsParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionListDocumentsResponse, - ) - - def resources( - self, - connection_id: str, - *, - page: float | Omit = omit, - parent_id: str | Omit = omit, - per_page: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionResourcesResponse: - """ - Fetch resources for a connection (supported providers: GitHub for now) - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return self._get( - path_template("/v3/connections/{connection_id}/resources", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "page": page, - "parent_id": parent_id, - "per_page": per_page, - }, - connection_resources_params.ConnectionResourcesParams, - ), - ), - cast_to=ConnectionResourcesResponse, - ) - - -class AsyncConnectionsResource(AsyncAPIResource): - """External service integrations""" - - @cached_property - def with_raw_response(self) -> AsyncConnectionsResourceWithRawResponse: - """ - 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/supermemoryai/python-sdk#accessing-raw-response-data-eg-headers - """ - return AsyncConnectionsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncConnectionsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/supermemoryai/python-sdk#with_streaming_response - """ - return AsyncConnectionsResourceWithStreamingResponse(self) - - async def create( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tag: str | Omit = omit, - container_tags: SequenceNotStr[str] | Omit = omit, - document_limit: int | Omit = omit, - metadata: Optional[Dict[str, Union[str, float, bool]]] | Omit = omit, - redirect_url: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionCreateResponse: - """ - Initialize connection and get authorization URL - - Args: - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return await self._post( - path_template("/v3/connections/{provider}", provider=provider), - body=await async_maybe_transform( - { - "container_tag": container_tag, - "container_tags": container_tags, - "document_limit": document_limit, - "metadata": metadata, - "redirect_url": redirect_url, - }, - connection_create_params.ConnectionCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionCreateResponse, - ) - - async def list( - self, - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionListResponse: - """ - List all connections - - Args: - container_tags: Optional comma-separated list of container tags to filter documents by - - 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( - "/v3/connections/list", - body=await async_maybe_transform( - {"container_tags": container_tags}, connection_list_params.ConnectionListParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionListResponse, - ) - - async def configure( - self, - connection_id: str, - *, - resources: Iterable[Dict[str, object]], - # 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, - ) -> ConnectionConfigureResponse: - """ - Configure resources for a connection (supported providers: GitHub for now) - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return await self._post( - path_template("/v3/connections/{connection_id}/configure", connection_id=connection_id), - body=await async_maybe_transform( - {"resources": resources}, connection_configure_params.ConnectionConfigureParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionConfigureResponse, - ) - - async def delete_by_id( - self, - connection_id: str, - *, - delete_documents: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionDeleteByIDResponse: - """ - Delete a specific connection by ID - - Args: - delete_documents: Whether to also delete documents imported by this connection. Defaults to true. - - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return await self._delete( - path_template("/v3/connections/{connection_id}", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - {"delete_documents": delete_documents}, connection_delete_by_id_params.ConnectionDeleteByIDParams - ), - ), - cast_to=ConnectionDeleteByIDResponse, - ) - - async def delete_by_provider( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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, - ) -> ConnectionDeleteByProviderResponse: - """ - Delete connection for a specific provider and container tags - - Args: - container_tags: Optional comma-separated list of container tags to filter connections by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return await self._delete( - path_template("/v3/connections/{provider}", provider=provider), - body=await async_maybe_transform( - {"container_tags": container_tags}, - connection_delete_by_provider_params.ConnectionDeleteByProviderParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionDeleteByProviderResponse, - ) - - async def get_by_id( - self, - connection_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, - ) -> ConnectionGetByIDResponse: - """ - Get connection details with id - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return await self._get( - path_template("/v3/connections/{connection_id}", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionGetByIDResponse, - ) - - async def get_by_tag( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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, - ) -> ConnectionGetByTagResponse: - """ - Get connection details with provider and container tags - - Args: - container_tags: Comma-separated list of container tags to filter connection by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return await self._post( - path_template("/v3/connections/{provider}/connection", provider=provider), - body=await async_maybe_transform( - {"container_tags": container_tags}, connection_get_by_tag_params.ConnectionGetByTagParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionGetByTagResponse, - ) - - async def import_( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> str: - """ - Initiate a manual sync of connections - - Args: - container_tags: Optional comma-separated list of container tags to filter connections by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - extra_headers = {"Accept": "text/plain", **(extra_headers or {})} - return await self._post( - path_template("/v3/connections/{provider}/import", provider=provider), - body=await async_maybe_transform( - {"container_tags": container_tags}, connection_import_params.ConnectionImportParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=str, - ) - - async def list_documents( - self, - provider: Literal["notion", "google-drive", "onedrive", "gmail", "github", "web-crawler", "s3", "granola"], - *, - container_tags: SequenceNotStr[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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionListDocumentsResponse: - """ - List documents indexed for a provider and container tags - - Args: - container_tags: Optional comma-separated list of container tags to filter documents by - - 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 - """ - if not provider: - raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}") - return await self._post( - path_template("/v3/connections/{provider}/documents", provider=provider), - body=await async_maybe_transform( - {"container_tags": container_tags}, connection_list_documents_params.ConnectionListDocumentsParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ConnectionListDocumentsResponse, - ) - - async def resources( - self, - connection_id: str, - *, - page: float | Omit = omit, - parent_id: str | Omit = omit, - per_page: 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ConnectionResourcesResponse: - """ - Fetch resources for a connection (supported providers: GitHub for now) - - Args: - 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 - """ - if not connection_id: - raise ValueError(f"Expected a non-empty value for `connection_id` but received {connection_id!r}") - return await self._get( - path_template("/v3/connections/{connection_id}/resources", connection_id=connection_id), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "page": page, - "parent_id": parent_id, - "per_page": per_page, - }, - connection_resources_params.ConnectionResourcesParams, - ), - ), - cast_to=ConnectionResourcesResponse, - ) - - -class ConnectionsResourceWithRawResponse: - def __init__(self, connections: ConnectionsResource) -> None: - self._connections = connections - - self.create = to_raw_response_wrapper( - connections.create, - ) - self.list = to_raw_response_wrapper( - connections.list, - ) - self.configure = to_raw_response_wrapper( - connections.configure, - ) - self.delete_by_id = to_raw_response_wrapper( - connections.delete_by_id, - ) - self.delete_by_provider = to_raw_response_wrapper( - connections.delete_by_provider, - ) - self.get_by_id = to_raw_response_wrapper( - connections.get_by_id, - ) - self.get_by_tag = to_raw_response_wrapper( - connections.get_by_tag, - ) - self.import_ = to_raw_response_wrapper( - connections.import_, - ) - self.list_documents = to_raw_response_wrapper( - connections.list_documents, - ) - self.resources = to_raw_response_wrapper( - connections.resources, - ) - - -class AsyncConnectionsResourceWithRawResponse: - def __init__(self, connections: AsyncConnectionsResource) -> None: - self._connections = connections - - self.create = async_to_raw_response_wrapper( - connections.create, - ) - self.list = async_to_raw_response_wrapper( - connections.list, - ) - self.configure = async_to_raw_response_wrapper( - connections.configure, - ) - self.delete_by_id = async_to_raw_response_wrapper( - connections.delete_by_id, - ) - self.delete_by_provider = async_to_raw_response_wrapper( - connections.delete_by_provider, - ) - self.get_by_id = async_to_raw_response_wrapper( - connections.get_by_id, - ) - self.get_by_tag = async_to_raw_response_wrapper( - connections.get_by_tag, - ) - self.import_ = async_to_raw_response_wrapper( - connections.import_, - ) - self.list_documents = async_to_raw_response_wrapper( - connections.list_documents, - ) - self.resources = async_to_raw_response_wrapper( - connections.resources, - ) - - -class ConnectionsResourceWithStreamingResponse: - def __init__(self, connections: ConnectionsResource) -> None: - self._connections = connections - - self.create = to_streamed_response_wrapper( - connections.create, - ) - self.list = to_streamed_response_wrapper( - connections.list, - ) - self.configure = to_streamed_response_wrapper( - connections.configure, - ) - self.delete_by_id = to_streamed_response_wrapper( - connections.delete_by_id, - ) - self.delete_by_provider = to_streamed_response_wrapper( - connections.delete_by_provider, - ) - self.get_by_id = to_streamed_response_wrapper( - connections.get_by_id, - ) - self.get_by_tag = to_streamed_response_wrapper( - connections.get_by_tag, - ) - self.import_ = to_streamed_response_wrapper( - connections.import_, - ) - self.list_documents = to_streamed_response_wrapper( - connections.list_documents, - ) - self.resources = to_streamed_response_wrapper( - connections.resources, - ) - - -class AsyncConnectionsResourceWithStreamingResponse: - def __init__(self, connections: AsyncConnectionsResource) -> None: - self._connections = connections - - self.create = async_to_streamed_response_wrapper( - connections.create, - ) - self.list = async_to_streamed_response_wrapper( - connections.list, - ) - self.configure = async_to_streamed_response_wrapper( - connections.configure, - ) - self.delete_by_id = async_to_streamed_response_wrapper( - connections.delete_by_id, - ) - self.delete_by_provider = async_to_streamed_response_wrapper( - connections.delete_by_provider, - ) - self.get_by_id = async_to_streamed_response_wrapper( - connections.get_by_id, - ) - self.get_by_tag = async_to_streamed_response_wrapper( - connections.get_by_tag, - ) - self.import_ = async_to_streamed_response_wrapper( - connections.import_, - ) - self.list_documents = async_to_streamed_response_wrapper( - connections.list_documents, - ) - self.resources = async_to_streamed_response_wrapper( - connections.resources, - ) diff --git a/src/supermemory/types/__init__.py b/src/supermemory/types/__init__.py index 695b777..5184116 100644 --- a/src/supermemory/types/__init__.py +++ b/src/supermemory/types/__init__.py @@ -14,7 +14,6 @@ from .document_get_response import DocumentGetResponse as DocumentGetResponse from .search_execute_params import SearchExecuteParams as SearchExecuteParams from .setting_update_params import SettingUpdateParams as SettingUpdateParams -from .connection_list_params import ConnectionListParams as ConnectionListParams from .document_list_response import DocumentListResponse as DocumentListResponse from .document_update_params import DocumentUpdateParams as DocumentUpdateParams from .memory_forget_response import MemoryForgetResponse as MemoryForgetResponse @@ -22,35 +21,15 @@ from .search_documents_params import SearchDocumentsParams as SearchDocumentsParams from .search_execute_response import SearchExecuteResponse as SearchExecuteResponse from .setting_update_response import SettingUpdateResponse as SettingUpdateResponse -from .connection_create_params import ConnectionCreateParams as ConnectionCreateParams -from .connection_import_params import ConnectionImportParams as ConnectionImportParams -from .connection_list_response import ConnectionListResponse as ConnectionListResponse from .document_update_response import DocumentUpdateResponse as DocumentUpdateResponse from .search_memories_response import SearchMemoriesResponse as SearchMemoriesResponse from .document_batch_add_params import DocumentBatchAddParams as DocumentBatchAddParams from .search_documents_response import SearchDocumentsResponse as SearchDocumentsResponse -from .connection_create_response import ConnectionCreateResponse as ConnectionCreateResponse -from .connection_import_response import ConnectionImportResponse as ConnectionImportResponse -from .connection_configure_params import ConnectionConfigureParams as ConnectionConfigureParams -from .connection_resources_params import ConnectionResourcesParams as ConnectionResourcesParams from .document_batch_add_response import DocumentBatchAddResponse as DocumentBatchAddResponse from .document_delete_bulk_params import DocumentDeleteBulkParams as DocumentDeleteBulkParams from .document_upload_file_params import DocumentUploadFileParams as DocumentUploadFileParams from .memory_update_memory_params import MemoryUpdateMemoryParams as MemoryUpdateMemoryParams -from .connection_get_by_tag_params import ConnectionGetByTagParams as ConnectionGetByTagParams -from .connection_configure_response import ConnectionConfigureResponse as ConnectionConfigureResponse -from .connection_get_by_id_response import ConnectionGetByIDResponse as ConnectionGetByIDResponse -from .connection_resources_response import ConnectionResourcesResponse as ConnectionResourcesResponse from .document_delete_bulk_response import DocumentDeleteBulkResponse as DocumentDeleteBulkResponse from .document_upload_file_response import DocumentUploadFileResponse as DocumentUploadFileResponse from .memory_update_memory_response import MemoryUpdateMemoryResponse as MemoryUpdateMemoryResponse -from .connection_delete_by_id_params import ConnectionDeleteByIDParams as ConnectionDeleteByIDParams -from .connection_get_by_tag_response import ConnectionGetByTagResponse as ConnectionGetByTagResponse -from .connection_delete_by_id_response import ConnectionDeleteByIDResponse as ConnectionDeleteByIDResponse -from .connection_list_documents_params import ConnectionListDocumentsParams as ConnectionListDocumentsParams from .document_list_processing_response import DocumentListProcessingResponse as DocumentListProcessingResponse -from .connection_list_documents_response import ConnectionListDocumentsResponse as ConnectionListDocumentsResponse -from .connection_delete_by_provider_params import ConnectionDeleteByProviderParams as ConnectionDeleteByProviderParams -from .connection_delete_by_provider_response import ( - ConnectionDeleteByProviderResponse as ConnectionDeleteByProviderResponse, -) diff --git a/src/supermemory/types/connection_configure_params.py b/src/supermemory/types/connection_configure_params.py deleted file mode 100644 index 224ed1d..0000000 --- a/src/supermemory/types/connection_configure_params.py +++ /dev/null @@ -1,12 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Dict, Iterable -from typing_extensions import Required, TypedDict - -__all__ = ["ConnectionConfigureParams"] - - -class ConnectionConfigureParams(TypedDict, total=False): - resources: Required[Iterable[Dict[str, object]]] diff --git a/src/supermemory/types/connection_configure_response.py b/src/supermemory/types/connection_configure_response.py deleted file mode 100644 index 065c4a8..0000000 --- a/src/supermemory/types/connection_configure_response.py +++ /dev/null @@ -1,17 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionConfigureResponse"] - - -class ConnectionConfigureResponse(BaseModel): - message: str - - success: bool - - webhooks_registered: Optional[float] = FieldInfo(alias="webhooksRegistered", default=None) diff --git a/src/supermemory/types/connection_create_params.py b/src/supermemory/types/connection_create_params.py deleted file mode 100644 index fcd9923..0000000 --- a/src/supermemory/types/connection_create_params.py +++ /dev/null @@ -1,23 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Dict, Union, Optional -from typing_extensions import Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionCreateParams"] - - -class ConnectionCreateParams(TypedDict, total=False): - container_tag: Annotated[str, PropertyInfo(alias="containerTag")] - - container_tags: Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")] - - document_limit: Annotated[int, PropertyInfo(alias="documentLimit")] - - metadata: Optional[Dict[str, Union[str, float, bool]]] - - redirect_url: Annotated[str, PropertyInfo(alias="redirectUrl")] diff --git a/src/supermemory/types/connection_create_response.py b/src/supermemory/types/connection_create_response.py deleted file mode 100644 index f0bf02e..0000000 --- a/src/supermemory/types/connection_create_response.py +++ /dev/null @@ -1,19 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionCreateResponse"] - - -class ConnectionCreateResponse(BaseModel): - id: str - - auth_link: str = FieldInfo(alias="authLink") - - expires_in: str = FieldInfo(alias="expiresIn") - - redirects_to: Optional[str] = FieldInfo(alias="redirectsTo", default=None) diff --git a/src/supermemory/types/connection_delete_by_id_params.py b/src/supermemory/types/connection_delete_by_id_params.py deleted file mode 100644 index 2f08f96..0000000 --- a/src/supermemory/types/connection_delete_by_id_params.py +++ /dev/null @@ -1,14 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Annotated, TypedDict - -from .._utils import PropertyInfo - -__all__ = ["ConnectionDeleteByIDParams"] - - -class ConnectionDeleteByIDParams(TypedDict, total=False): - delete_documents: Annotated[str, PropertyInfo(alias="deleteDocuments")] - """Whether to also delete documents imported by this connection. Defaults to true.""" diff --git a/src/supermemory/types/connection_delete_by_id_response.py b/src/supermemory/types/connection_delete_by_id_response.py deleted file mode 100644 index 4da42f4..0000000 --- a/src/supermemory/types/connection_delete_by_id_response.py +++ /dev/null @@ -1,11 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .._models import BaseModel - -__all__ = ["ConnectionDeleteByIDResponse"] - - -class ConnectionDeleteByIDResponse(BaseModel): - id: str - - provider: str diff --git a/src/supermemory/types/connection_delete_by_provider_params.py b/src/supermemory/types/connection_delete_by_provider_params.py deleted file mode 100644 index 09e136d..0000000 --- a/src/supermemory/types/connection_delete_by_provider_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionDeleteByProviderParams"] - - -class ConnectionDeleteByProviderParams(TypedDict, total=False): - container_tags: Required[Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")]] - """Optional comma-separated list of container tags to filter connections by""" diff --git a/src/supermemory/types/connection_delete_by_provider_response.py b/src/supermemory/types/connection_delete_by_provider_response.py deleted file mode 100644 index e698e7e..0000000 --- a/src/supermemory/types/connection_delete_by_provider_response.py +++ /dev/null @@ -1,11 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from .._models import BaseModel - -__all__ = ["ConnectionDeleteByProviderResponse"] - - -class ConnectionDeleteByProviderResponse(BaseModel): - id: str - - provider: str diff --git a/src/supermemory/types/connection_get_by_id_response.py b/src/supermemory/types/connection_get_by_id_response.py deleted file mode 100644 index 9c04243..0000000 --- a/src/supermemory/types/connection_get_by_id_response.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionGetByIDResponse"] - - -class ConnectionGetByIDResponse(BaseModel): - id: str - - created_at: str = FieldInfo(alias="createdAt") - - provider: str - - container_tags: Optional[List[str]] = FieldInfo(alias="containerTags", default=None) - - document_limit: Optional[float] = FieldInfo(alias="documentLimit", default=None) - - email: Optional[str] = None - - expires_at: Optional[str] = FieldInfo(alias="expiresAt", default=None) - - metadata: Optional[Dict[str, object]] = None diff --git a/src/supermemory/types/connection_get_by_tag_params.py b/src/supermemory/types/connection_get_by_tag_params.py deleted file mode 100644 index 13a9082..0000000 --- a/src/supermemory/types/connection_get_by_tag_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionGetByTagParams"] - - -class ConnectionGetByTagParams(TypedDict, total=False): - container_tags: Required[Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")]] - """Comma-separated list of container tags to filter connection by""" diff --git a/src/supermemory/types/connection_get_by_tag_response.py b/src/supermemory/types/connection_get_by_tag_response.py deleted file mode 100644 index 8a25c93..0000000 --- a/src/supermemory/types/connection_get_by_tag_response.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionGetByTagResponse"] - - -class ConnectionGetByTagResponse(BaseModel): - id: str - - created_at: str = FieldInfo(alias="createdAt") - - provider: str - - container_tags: Optional[List[str]] = FieldInfo(alias="containerTags", default=None) - - document_limit: Optional[float] = FieldInfo(alias="documentLimit", default=None) - - email: Optional[str] = None - - expires_at: Optional[str] = FieldInfo(alias="expiresAt", default=None) - - metadata: Optional[Dict[str, object]] = None diff --git a/src/supermemory/types/connection_import_params.py b/src/supermemory/types/connection_import_params.py deleted file mode 100644 index 2e19b22..0000000 --- a/src/supermemory/types/connection_import_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionImportParams"] - - -class ConnectionImportParams(TypedDict, total=False): - container_tags: Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")] - """Optional comma-separated list of container tags to filter connections by""" diff --git a/src/supermemory/types/connection_import_response.py b/src/supermemory/types/connection_import_response.py deleted file mode 100644 index 9e5445b..0000000 --- a/src/supermemory/types/connection_import_response.py +++ /dev/null @@ -1,7 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing_extensions import TypeAlias - -__all__ = ["ConnectionImportResponse"] - -ConnectionImportResponse: TypeAlias = str diff --git a/src/supermemory/types/connection_list_documents_params.py b/src/supermemory/types/connection_list_documents_params.py deleted file mode 100644 index 8673d26..0000000 --- a/src/supermemory/types/connection_list_documents_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionListDocumentsParams"] - - -class ConnectionListDocumentsParams(TypedDict, total=False): - container_tags: Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")] - """Optional comma-separated list of container tags to filter documents by""" diff --git a/src/supermemory/types/connection_list_documents_response.py b/src/supermemory/types/connection_list_documents_response.py deleted file mode 100644 index f42fed9..0000000 --- a/src/supermemory/types/connection_list_documents_response.py +++ /dev/null @@ -1,29 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional -from typing_extensions import TypeAlias - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionListDocumentsResponse", "ConnectionListDocumentsResponseItem"] - - -class ConnectionListDocumentsResponseItem(BaseModel): - id: str - - created_at: str = FieldInfo(alias="createdAt") - - status: str - - summary: Optional[str] = None - - title: Optional[str] = None - - type: str - - updated_at: str = FieldInfo(alias="updatedAt") - - -ConnectionListDocumentsResponse: TypeAlias = List[ConnectionListDocumentsResponseItem] diff --git a/src/supermemory/types/connection_list_params.py b/src/supermemory/types/connection_list_params.py deleted file mode 100644 index 2948fa3..0000000 --- a/src/supermemory/types/connection_list_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Annotated, TypedDict - -from .._types import SequenceNotStr -from .._utils import PropertyInfo - -__all__ = ["ConnectionListParams"] - - -class ConnectionListParams(TypedDict, total=False): - container_tags: Annotated[SequenceNotStr[str], PropertyInfo(alias="containerTags")] - """Optional comma-separated list of container tags to filter documents by""" diff --git a/src/supermemory/types/connection_list_response.py b/src/supermemory/types/connection_list_response.py deleted file mode 100644 index 9116c77..0000000 --- a/src/supermemory/types/connection_list_response.py +++ /dev/null @@ -1,31 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional -from typing_extensions import TypeAlias - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ConnectionListResponse", "ConnectionListResponseItem"] - - -class ConnectionListResponseItem(BaseModel): - id: str - - created_at: str = FieldInfo(alias="createdAt") - - provider: str - - container_tags: Optional[List[str]] = FieldInfo(alias="containerTags", default=None) - - document_limit: Optional[float] = FieldInfo(alias="documentLimit", default=None) - - email: Optional[str] = None - - expires_at: Optional[str] = FieldInfo(alias="expiresAt", default=None) - - metadata: Optional[Dict[str, object]] = None - - -ConnectionListResponse: TypeAlias = List[ConnectionListResponseItem] diff --git a/src/supermemory/types/connection_resources_params.py b/src/supermemory/types/connection_resources_params.py deleted file mode 100644 index ff39796..0000000 --- a/src/supermemory/types/connection_resources_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import TypedDict - -__all__ = ["ConnectionResourcesParams"] - - -class ConnectionResourcesParams(TypedDict, total=False): - page: float - - parent_id: str - - per_page: float diff --git a/src/supermemory/types/connection_resources_response.py b/src/supermemory/types/connection_resources_response.py deleted file mode 100644 index 1d70419..0000000 --- a/src/supermemory/types/connection_resources_response.py +++ /dev/null @@ -1,13 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, List, Optional - -from .._models import BaseModel - -__all__ = ["ConnectionResourcesResponse"] - - -class ConnectionResourcesResponse(BaseModel): - resources: List[Dict[str, object]] - - total_count: Optional[float] = None diff --git a/tests/api_resources/test_connections.py b/tests/api_resources/test_connections.py deleted file mode 100644 index 3eb33fc..0000000 --- a/tests/api_resources/test_connections.py +++ /dev/null @@ -1,904 +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 supermemory import Supermemory, AsyncSupermemory -from tests.utils import assert_matches_type -from supermemory.types import ( - ConnectionListResponse, - ConnectionCreateResponse, - ConnectionGetByIDResponse, - ConnectionGetByTagResponse, - ConnectionConfigureResponse, - ConnectionResourcesResponse, - ConnectionDeleteByIDResponse, - ConnectionListDocumentsResponse, - ConnectionDeleteByProviderResponse, -) - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestConnections: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: Supermemory) -> None: - connection = client.connections.create( - provider="notion", - ) - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.create( - provider="notion", - container_tag="containerTag", - container_tags=["_:_k--W2K_1V"], - document_limit=1, - metadata={"foo": "string"}, - redirect_url="redirectUrl", - ) - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.create( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.create( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: Supermemory) -> None: - connection = client.connections.list() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.list( - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_configure(self, client: Supermemory) -> None: - connection = client.connections.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_configure(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_configure(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_configure(self, client: Supermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - client.connections.with_raw_response.configure( - connection_id="", - resources=[{"foo": "bar"}], - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete_by_id(self, client: Supermemory) -> None: - connection = client.connections.delete_by_id( - connection_id="connectionId", - ) - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete_by_id_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.delete_by_id( - connection_id="connectionId", - delete_documents="deleteDocuments", - ) - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_delete_by_id(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.delete_by_id( - connection_id="connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_delete_by_id(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.delete_by_id( - connection_id="connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_delete_by_id(self, client: Supermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - client.connections.with_raw_response.delete_by_id( - connection_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete_by_provider(self, client: Supermemory) -> None: - connection = client.connections.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_delete_by_provider(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_delete_by_provider(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_get_by_id(self, client: Supermemory) -> None: - connection = client.connections.get_by_id( - "connectionId", - ) - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_get_by_id(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.get_by_id( - "connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_get_by_id(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.get_by_id( - "connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_get_by_id(self, client: Supermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - client.connections.with_raw_response.get_by_id( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_get_by_tag(self, client: Supermemory) -> None: - connection = client.connections.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_get_by_tag(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_get_by_tag(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_import(self, client: Supermemory) -> None: - connection = client.connections.import_( - provider="notion", - ) - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_import_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.import_( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_import(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.import_( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_import(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.import_( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(str, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_documents(self, client: Supermemory) -> None: - connection = client.connections.list_documents( - provider="notion", - ) - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list_documents_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.list_documents( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list_documents(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.list_documents( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list_documents(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.list_documents( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_resources(self, client: Supermemory) -> None: - connection = client.connections.resources( - connection_id="connectionId", - ) - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_resources_with_all_params(self, client: Supermemory) -> None: - connection = client.connections.resources( - connection_id="connectionId", - page=0, - parent_id="parent_id", - per_page=0, - ) - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_resources(self, client: Supermemory) -> None: - response = client.connections.with_raw_response.resources( - connection_id="connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = response.parse() - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_resources(self, client: Supermemory) -> None: - with client.connections.with_streaming_response.resources( - connection_id="connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = response.parse() - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_resources(self, client: Supermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - client.connections.with_raw_response.resources( - connection_id="", - ) - - -class TestAsyncConnections: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.create( - provider="notion", - ) - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.create( - provider="notion", - container_tag="containerTag", - container_tags=["_:_k--W2K_1V"], - document_limit=1, - metadata={"foo": "string"}, - redirect_url="redirectUrl", - ) - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.create( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.create( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionCreateResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.list() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.list( - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionListResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_configure(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_configure(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_configure(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.configure( - connection_id="connectionId", - resources=[{"foo": "bar"}], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionConfigureResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_configure(self, async_client: AsyncSupermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - await async_client.connections.with_raw_response.configure( - connection_id="", - resources=[{"foo": "bar"}], - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete_by_id(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.delete_by_id( - connection_id="connectionId", - ) - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete_by_id_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.delete_by_id( - connection_id="connectionId", - delete_documents="deleteDocuments", - ) - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_delete_by_id(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.delete_by_id( - connection_id="connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_delete_by_id(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.delete_by_id( - connection_id="connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_delete_by_id(self, async_client: AsyncSupermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - await async_client.connections.with_raw_response.delete_by_id( - connection_id="", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete_by_provider(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_delete_by_provider(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_delete_by_provider(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.delete_by_provider( - provider="notion", - container_tags=["user_123", "project_123"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionDeleteByProviderResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_get_by_id(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.get_by_id( - "connectionId", - ) - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_get_by_id(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.get_by_id( - "connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_get_by_id(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.get_by_id( - "connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionGetByIDResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_get_by_id(self, async_client: AsyncSupermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - await async_client.connections.with_raw_response.get_by_id( - "", - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_get_by_tag(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_get_by_tag(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_get_by_tag(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.get_by_tag( - provider="notion", - container_tags=["user_123", "project_123"], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionGetByTagResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_import(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.import_( - provider="notion", - ) - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_import_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.import_( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_import(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.import_( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(str, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_import(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.import_( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(str, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_documents(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.list_documents( - provider="notion", - ) - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list_documents_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.list_documents( - provider="notion", - container_tags=["user_123", "project_123"], - ) - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list_documents(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.list_documents( - provider="notion", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list_documents(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.list_documents( - provider="notion", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionListDocumentsResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_resources(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.resources( - connection_id="connectionId", - ) - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_resources_with_all_params(self, async_client: AsyncSupermemory) -> None: - connection = await async_client.connections.resources( - connection_id="connectionId", - page=0, - parent_id="parent_id", - per_page=0, - ) - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_resources(self, async_client: AsyncSupermemory) -> None: - response = await async_client.connections.with_raw_response.resources( - connection_id="connectionId", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - connection = await response.parse() - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_resources(self, async_client: AsyncSupermemory) -> None: - async with async_client.connections.with_streaming_response.resources( - connection_id="connectionId", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - connection = await response.parse() - assert_matches_type(ConnectionResourcesResponse, connection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_resources(self, async_client: AsyncSupermemory) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): - await async_client.connections.with_raw_response.resources( - connection_id="", - )