diff --git a/.stats.yml b/.stats.yml index 8f7cf84..aa1f073 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 85 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evrim%2Fevrim-bfa1475f723b89cde7b4d5db25ad11a54cb2f28cbfaae95e3fc058d63dba9690.yml -openapi_spec_hash: 91ccf99085fa20cd7edf365b2ee8d2b3 +configured_endpoints: 78 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/evrim%2Fevrim-9dc575d29f97c73efdda70c4c985dbd831004f20555176ff49b17479a49d4ac7.yml +openapi_spec_hash: eb82760f4f03848af1c9f2293e18f733 config_hash: cfac76dd5ce7c345175ea4884c19195c diff --git a/README.md b/README.md index f50e8f5..163d499 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ created_field = client.created_fields.create( "name": "name", "description": "description", "questions": ["string"], + "tags": ["string"], }, ) print(created_field.rel_template) diff --git a/api.md b/api.md index ba2dade..ea9dc4c 100644 --- a/api.md +++ b/api.md @@ -413,41 +413,12 @@ Methods: Types: ```python -from evrim.types import Tag, TagListResponse +from evrim.types import Tag ``` Methods: -- client.tags.create(\*\*params) -> Tag -- client.tags.retrieve(id) -> Tag -- client.tags.update(id, \*\*params) -> Tag -- client.tags.list(\*\*params) -> TagListResponse -- client.tags.delete(id) -> None - -## Collections - -Types: - -```python -from evrim.types.tags import TagToCollection -``` - -Methods: - -- client.tags.collections.tag(tag_id, \*\*params) -> TagToCollection - -## Profiles - -Types: - -```python -from evrim.types.tags import ProfileListResponse -``` - -Methods: - -- client.tags.profiles.list(tag_id, \*\*params) -> ProfileListResponse -- client.tags.profiles.tag(tag_id, \*\*params) -> None +- client.tags.list() -> None # Templates diff --git a/src/evrim/resources/profiles/profiles.py b/src/evrim/resources/profiles/profiles.py index 9e5ad95..64b2104 100644 --- a/src/evrim/resources/profiles/profiles.py +++ b/src/evrim/resources/profiles/profiles.py @@ -235,6 +235,7 @@ def list( *, limit: int | NotGiven = NOT_GIVEN, offset: int | NotGiven = NOT_GIVEN, + search: str | NotGiven = NOT_GIVEN, specification: str | NotGiven = NOT_GIVEN, # 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. @@ -249,6 +250,8 @@ def list( offset: The initial index from which to return the results. + search: A search term. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -268,6 +271,7 @@ def list( { "limit": limit, "offset": offset, + "search": search, "specification": specification, }, profile_list_params.ProfileListParams, @@ -503,6 +507,7 @@ async def list( *, limit: int | NotGiven = NOT_GIVEN, offset: int | NotGiven = NOT_GIVEN, + search: str | NotGiven = NOT_GIVEN, specification: str | NotGiven = NOT_GIVEN, # 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. @@ -517,6 +522,8 @@ async def list( offset: The initial index from which to return the results. + search: A search term. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -536,6 +543,7 @@ async def list( { "limit": limit, "offset": offset, + "search": search, "specification": specification, }, profile_list_params.ProfileListParams, diff --git a/src/evrim/resources/tags/__init__.py b/src/evrim/resources/tags/__init__.py index e95b6ff..4c360d4 100644 --- a/src/evrim/resources/tags/__init__.py +++ b/src/evrim/resources/tags/__init__.py @@ -8,36 +8,8 @@ TagsResourceWithStreamingResponse, AsyncTagsResourceWithStreamingResponse, ) -from .profiles import ( - ProfilesResource, - AsyncProfilesResource, - ProfilesResourceWithRawResponse, - AsyncProfilesResourceWithRawResponse, - ProfilesResourceWithStreamingResponse, - AsyncProfilesResourceWithStreamingResponse, -) -from .collections import ( - CollectionsResource, - AsyncCollectionsResource, - CollectionsResourceWithRawResponse, - AsyncCollectionsResourceWithRawResponse, - CollectionsResourceWithStreamingResponse, - AsyncCollectionsResourceWithStreamingResponse, -) __all__ = [ - "CollectionsResource", - "AsyncCollectionsResource", - "CollectionsResourceWithRawResponse", - "AsyncCollectionsResourceWithRawResponse", - "CollectionsResourceWithStreamingResponse", - "AsyncCollectionsResourceWithStreamingResponse", - "ProfilesResource", - "AsyncProfilesResource", - "ProfilesResourceWithRawResponse", - "AsyncProfilesResourceWithRawResponse", - "ProfilesResourceWithStreamingResponse", - "AsyncProfilesResourceWithStreamingResponse", "TagsResource", "AsyncTagsResource", "TagsResourceWithRawResponse", diff --git a/src/evrim/resources/tags/collections.py b/src/evrim/resources/tags/collections.py deleted file mode 100644 index e2ede2a..0000000 --- a/src/evrim/resources/tags/collections.py +++ /dev/null @@ -1,174 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import httpx - -from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven -from ..._utils import ( - maybe_transform, - async_maybe_transform, -) -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ...types.tags import collection_tag_params -from ..._base_client import make_request_options -from ...types.tags.tag_to_collection import TagToCollection - -__all__ = ["CollectionsResource", "AsyncCollectionsResource"] - - -class CollectionsResource(SyncAPIResource): - @cached_property - def with_raw_response(self) -> CollectionsResourceWithRawResponse: - """ - 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/evrimai/python-client#accessing-raw-response-data-eg-headers - """ - return CollectionsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> CollectionsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evrimai/python-client#with_streaming_response - """ - return CollectionsResourceWithStreamingResponse(self) - - def tag( - self, - tag_id: str, - *, - collection_id: int, - # 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, - ) -> TagToCollection: - """ - Tag a collection - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - return self._post( - f"/prod/v0/tags/{tag_id}/collections/", - body=maybe_transform({"collection_id": collection_id}, collection_tag_params.CollectionTagParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=TagToCollection, - ) - - -class AsyncCollectionsResource(AsyncAPIResource): - @cached_property - def with_raw_response(self) -> AsyncCollectionsResourceWithRawResponse: - """ - 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/evrimai/python-client#accessing-raw-response-data-eg-headers - """ - return AsyncCollectionsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncCollectionsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evrimai/python-client#with_streaming_response - """ - return AsyncCollectionsResourceWithStreamingResponse(self) - - async def tag( - self, - tag_id: str, - *, - collection_id: int, - # 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, - ) -> TagToCollection: - """ - Tag a collection - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - return await self._post( - f"/prod/v0/tags/{tag_id}/collections/", - body=await async_maybe_transform( - {"collection_id": collection_id}, collection_tag_params.CollectionTagParams - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=TagToCollection, - ) - - -class CollectionsResourceWithRawResponse: - def __init__(self, collections: CollectionsResource) -> None: - self._collections = collections - - self.tag = to_raw_response_wrapper( - collections.tag, - ) - - -class AsyncCollectionsResourceWithRawResponse: - def __init__(self, collections: AsyncCollectionsResource) -> None: - self._collections = collections - - self.tag = async_to_raw_response_wrapper( - collections.tag, - ) - - -class CollectionsResourceWithStreamingResponse: - def __init__(self, collections: CollectionsResource) -> None: - self._collections = collections - - self.tag = to_streamed_response_wrapper( - collections.tag, - ) - - -class AsyncCollectionsResourceWithStreamingResponse: - def __init__(self, collections: AsyncCollectionsResource) -> None: - self._collections = collections - - self.tag = async_to_streamed_response_wrapper( - collections.tag, - ) diff --git a/src/evrim/resources/tags/profiles.py b/src/evrim/resources/tags/profiles.py deleted file mode 100644 index 5075f3f..0000000 --- a/src/evrim/resources/tags/profiles.py +++ /dev/null @@ -1,286 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Iterable - -import httpx - -from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven -from ..._utils import ( - maybe_transform, - async_maybe_transform, -) -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ...types.tags import profile_tag_params, profile_list_params -from ..._base_client import make_request_options -from ...types.tags.profile_list_response import ProfileListResponse - -__all__ = ["ProfilesResource", "AsyncProfilesResource"] - - -class ProfilesResource(SyncAPIResource): - @cached_property - def with_raw_response(self) -> ProfilesResourceWithRawResponse: - """ - 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/evrimai/python-client#accessing-raw-response-data-eg-headers - """ - return ProfilesResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> ProfilesResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evrimai/python-client#with_streaming_response - """ - return ProfilesResourceWithStreamingResponse(self) - - def list( - self, - tag_id: str, - *, - limit: int | NotGiven = NOT_GIVEN, - offset: int | NotGiven = NOT_GIVEN, - # 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, - ) -> ProfileListResponse: - """ - Get all profiles associated with a tag - - Args: - limit: Number of results to return per page. - - offset: The initial index from which to return the results. - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - return self._get( - f"/prod/v0/tags/{tag_id}/profiles/", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "limit": limit, - "offset": offset, - }, - profile_list_params.ProfileListParams, - ), - ), - cast_to=ProfileListResponse, - ) - - def tag( - self, - tag_id: str, - *, - profile_ids: Iterable[int], - # 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, - ) -> None: - """ - Tag all profiles with the tag - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return self._post( - f"/prod/v0/tags/{tag_id}/profiles/", - body=maybe_transform({"profile_ids": profile_ids}, profile_tag_params.ProfileTagParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - - -class AsyncProfilesResource(AsyncAPIResource): - @cached_property - def with_raw_response(self) -> AsyncProfilesResourceWithRawResponse: - """ - 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/evrimai/python-client#accessing-raw-response-data-eg-headers - """ - return AsyncProfilesResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncProfilesResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/evrimai/python-client#with_streaming_response - """ - return AsyncProfilesResourceWithStreamingResponse(self) - - async def list( - self, - tag_id: str, - *, - limit: int | NotGiven = NOT_GIVEN, - offset: int | NotGiven = NOT_GIVEN, - # 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, - ) -> ProfileListResponse: - """ - Get all profiles associated with a tag - - Args: - limit: Number of results to return per page. - - offset: The initial index from which to return the results. - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - return await self._get( - f"/prod/v0/tags/{tag_id}/profiles/", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "limit": limit, - "offset": offset, - }, - profile_list_params.ProfileListParams, - ), - ), - cast_to=ProfileListResponse, - ) - - async def tag( - self, - tag_id: str, - *, - profile_ids: Iterable[int], - # 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, - ) -> None: - """ - Tag all profiles with the tag - - 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 tag_id: - raise ValueError(f"Expected a non-empty value for `tag_id` but received {tag_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return await self._post( - f"/prod/v0/tags/{tag_id}/profiles/", - body=await async_maybe_transform({"profile_ids": profile_ids}, profile_tag_params.ProfileTagParams), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - - -class ProfilesResourceWithRawResponse: - def __init__(self, profiles: ProfilesResource) -> None: - self._profiles = profiles - - self.list = to_raw_response_wrapper( - profiles.list, - ) - self.tag = to_raw_response_wrapper( - profiles.tag, - ) - - -class AsyncProfilesResourceWithRawResponse: - def __init__(self, profiles: AsyncProfilesResource) -> None: - self._profiles = profiles - - self.list = async_to_raw_response_wrapper( - profiles.list, - ) - self.tag = async_to_raw_response_wrapper( - profiles.tag, - ) - - -class ProfilesResourceWithStreamingResponse: - def __init__(self, profiles: ProfilesResource) -> None: - self._profiles = profiles - - self.list = to_streamed_response_wrapper( - profiles.list, - ) - self.tag = to_streamed_response_wrapper( - profiles.tag, - ) - - -class AsyncProfilesResourceWithStreamingResponse: - def __init__(self, profiles: AsyncProfilesResource) -> None: - self._profiles = profiles - - self.list = async_to_streamed_response_wrapper( - profiles.list, - ) - self.tag = async_to_streamed_response_wrapper( - profiles.tag, - ) diff --git a/src/evrim/resources/tags/tags.py b/src/evrim/resources/tags/tags.py index d3c1658..a4ac39f 100644 --- a/src/evrim/resources/tags/tags.py +++ b/src/evrim/resources/tags/tags.py @@ -2,24 +2,9 @@ from __future__ import annotations -from typing import Optional - import httpx -from ...types import tag_list_params, tag_create_params, tag_update_params from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven -from ..._utils import ( - maybe_transform, - async_maybe_transform, -) -from .profiles import ( - ProfilesResource, - AsyncProfilesResource, - ProfilesResourceWithRawResponse, - AsyncProfilesResourceWithRawResponse, - ProfilesResourceWithStreamingResponse, - AsyncProfilesResourceWithStreamingResponse, -) from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -28,30 +13,12 @@ async_to_raw_response_wrapper, async_to_streamed_response_wrapper, ) -from ...types.tag import Tag -from .collections import ( - CollectionsResource, - AsyncCollectionsResource, - CollectionsResourceWithRawResponse, - AsyncCollectionsResourceWithRawResponse, - CollectionsResourceWithStreamingResponse, - AsyncCollectionsResourceWithStreamingResponse, -) from ..._base_client import make_request_options -from ...types.tag_list_response import TagListResponse __all__ = ["TagsResource", "AsyncTagsResource"] class TagsResource(SyncAPIResource): - @cached_property - def collections(self) -> CollectionsResource: - return CollectionsResource(self._client) - - @cached_property - def profiles(self) -> ProfilesResource: - return ProfilesResource(self._client) - @cached_property def with_raw_response(self) -> TagsResourceWithRawResponse: """ @@ -71,158 +38,9 @@ def with_streaming_response(self) -> TagsResourceWithStreamingResponse: """ return TagsResourceWithStreamingResponse(self) - def create( - self, - *, - name: str, - description: Optional[str] | NotGiven = NOT_GIVEN, - # 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, - ) -> Tag: - """ - 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 - """ - return self._post( - "/prod/v0/tags/", - body=maybe_transform( - { - "name": name, - "description": description, - }, - tag_create_params.TagCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - - def retrieve( - self, - id: int, - *, - # 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, - ) -> Tag: - """ - 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 - """ - return self._get( - f"/prod/v0/tags/{id}/", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - - def update( - self, - id: int, - *, - name: str, - description: Optional[str] | NotGiven = NOT_GIVEN, - # 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, - ) -> Tag: - """ - 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 - """ - return self._put( - f"/prod/v0/tags/{id}/", - body=maybe_transform( - { - "name": name, - "description": description, - }, - tag_update_params.TagUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - def list( self, *, - limit: int | NotGiven = NOT_GIVEN, - offset: int | NotGiven = NOT_GIVEN, - # 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, - ) -> TagListResponse: - """ - Args: - limit: Number of results to return per page. - - offset: The initial index from which to return the results. - - 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._get( - "/prod/v0/tags/", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "limit": limit, - "offset": offset, - }, - tag_list_params.TagListParams, - ), - ), - cast_to=TagListResponse, - ) - - def delete( - self, - id: int, - *, # 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, @@ -230,19 +48,9 @@ def delete( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> None: - """ - 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 - """ extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return self._delete( - f"/prod/v0/tags/{id}/", + return self._get( + "/prod/v0/tags/", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -251,14 +59,6 @@ def delete( class AsyncTagsResource(AsyncAPIResource): - @cached_property - def collections(self) -> AsyncCollectionsResource: - return AsyncCollectionsResource(self._client) - - @cached_property - def profiles(self) -> AsyncProfilesResource: - return AsyncProfilesResource(self._client) - @cached_property def with_raw_response(self) -> AsyncTagsResourceWithRawResponse: """ @@ -278,158 +78,9 @@ def with_streaming_response(self) -> AsyncTagsResourceWithStreamingResponse: """ return AsyncTagsResourceWithStreamingResponse(self) - async def create( - self, - *, - name: str, - description: Optional[str] | NotGiven = NOT_GIVEN, - # 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, - ) -> Tag: - """ - 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 - """ - return await self._post( - "/prod/v0/tags/", - body=await async_maybe_transform( - { - "name": name, - "description": description, - }, - tag_create_params.TagCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - - async def retrieve( - self, - id: int, - *, - # 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, - ) -> Tag: - """ - 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 - """ - return await self._get( - f"/prod/v0/tags/{id}/", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - - async def update( - self, - id: int, - *, - name: str, - description: Optional[str] | NotGiven = NOT_GIVEN, - # 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, - ) -> Tag: - """ - 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 - """ - return await self._put( - f"/prod/v0/tags/{id}/", - body=await async_maybe_transform( - { - "name": name, - "description": description, - }, - tag_update_params.TagUpdateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=Tag, - ) - async def list( self, *, - limit: int | NotGiven = NOT_GIVEN, - offset: int | NotGiven = NOT_GIVEN, - # 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, - ) -> TagListResponse: - """ - Args: - limit: Number of results to return per page. - - offset: The initial index from which to return the results. - - 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._get( - "/prod/v0/tags/", - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=await async_maybe_transform( - { - "limit": limit, - "offset": offset, - }, - tag_list_params.TagListParams, - ), - ), - cast_to=TagListResponse, - ) - - async def delete( - self, - id: int, - *, # 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, @@ -437,19 +88,9 @@ async def delete( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> None: - """ - 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 - """ extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return await self._delete( - f"/prod/v0/tags/{id}/", + return await self._get( + "/prod/v0/tags/", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -461,113 +102,33 @@ class TagsResourceWithRawResponse: def __init__(self, tags: TagsResource) -> None: self._tags = tags - self.create = to_raw_response_wrapper( - tags.create, - ) - self.retrieve = to_raw_response_wrapper( - tags.retrieve, - ) - self.update = to_raw_response_wrapper( - tags.update, - ) self.list = to_raw_response_wrapper( tags.list, ) - self.delete = to_raw_response_wrapper( - tags.delete, - ) - - @cached_property - def collections(self) -> CollectionsResourceWithRawResponse: - return CollectionsResourceWithRawResponse(self._tags.collections) - - @cached_property - def profiles(self) -> ProfilesResourceWithRawResponse: - return ProfilesResourceWithRawResponse(self._tags.profiles) class AsyncTagsResourceWithRawResponse: def __init__(self, tags: AsyncTagsResource) -> None: self._tags = tags - self.create = async_to_raw_response_wrapper( - tags.create, - ) - self.retrieve = async_to_raw_response_wrapper( - tags.retrieve, - ) - self.update = async_to_raw_response_wrapper( - tags.update, - ) self.list = async_to_raw_response_wrapper( tags.list, ) - self.delete = async_to_raw_response_wrapper( - tags.delete, - ) - - @cached_property - def collections(self) -> AsyncCollectionsResourceWithRawResponse: - return AsyncCollectionsResourceWithRawResponse(self._tags.collections) - - @cached_property - def profiles(self) -> AsyncProfilesResourceWithRawResponse: - return AsyncProfilesResourceWithRawResponse(self._tags.profiles) class TagsResourceWithStreamingResponse: def __init__(self, tags: TagsResource) -> None: self._tags = tags - self.create = to_streamed_response_wrapper( - tags.create, - ) - self.retrieve = to_streamed_response_wrapper( - tags.retrieve, - ) - self.update = to_streamed_response_wrapper( - tags.update, - ) self.list = to_streamed_response_wrapper( tags.list, ) - self.delete = to_streamed_response_wrapper( - tags.delete, - ) - - @cached_property - def collections(self) -> CollectionsResourceWithStreamingResponse: - return CollectionsResourceWithStreamingResponse(self._tags.collections) - - @cached_property - def profiles(self) -> ProfilesResourceWithStreamingResponse: - return ProfilesResourceWithStreamingResponse(self._tags.profiles) class AsyncTagsResourceWithStreamingResponse: def __init__(self, tags: AsyncTagsResource) -> None: self._tags = tags - self.create = async_to_streamed_response_wrapper( - tags.create, - ) - self.retrieve = async_to_streamed_response_wrapper( - tags.retrieve, - ) - self.update = async_to_streamed_response_wrapper( - tags.update, - ) self.list = async_to_streamed_response_wrapper( tags.list, ) - self.delete = async_to_streamed_response_wrapper( - tags.delete, - ) - - @cached_property - def collections(self) -> AsyncCollectionsResourceWithStreamingResponse: - return AsyncCollectionsResourceWithStreamingResponse(self._tags.collections) - - @cached_property - def profiles(self) -> AsyncProfilesResourceWithStreamingResponse: - return AsyncProfilesResourceWithStreamingResponse(self._tags.profiles) diff --git a/src/evrim/resources/templates/templates.py b/src/evrim/resources/templates/templates.py index fb5b431..5a5eab9 100644 --- a/src/evrim/resources/templates/templates.py +++ b/src/evrim/resources/templates/templates.py @@ -67,6 +67,7 @@ def create( name: str, description: Optional[str] | NotGiven = NOT_GIVEN, questions: List[str] | NotGiven = NOT_GIVEN, + tags: List[str] | NotGiven = NOT_GIVEN, # 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, @@ -92,6 +93,7 @@ def create( "name": name, "description": description, "questions": questions, + "tags": tags, }, template_create_params.TemplateCreateParams, ), @@ -138,6 +140,7 @@ def update( name: str, description: Optional[str] | NotGiven = NOT_GIVEN, questions: List[str] | NotGiven = NOT_GIVEN, + tags: List[str] | NotGiven = NOT_GIVEN, # 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, @@ -163,6 +166,7 @@ def update( "name": name, "description": description, "questions": questions, + "tags": tags, }, template_update_params.TemplateUpdateParams, ), @@ -178,6 +182,7 @@ def list( limit: int | NotGiven = NOT_GIVEN, name: str | NotGiven = NOT_GIVEN, offset: int | NotGiven = NOT_GIVEN, + ordering: str | NotGiven = NOT_GIVEN, search: str | NotGiven = NOT_GIVEN, # 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. @@ -192,6 +197,8 @@ def list( offset: The initial index from which to return the results. + ordering: Which field to use when ordering the results. + search: A search term. extra_headers: Send extra headers @@ -214,6 +221,7 @@ def list( "limit": limit, "name": name, "offset": offset, + "ordering": ordering, "search": search, }, template_list_params.TemplateListParams, @@ -284,6 +292,7 @@ async def create( name: str, description: Optional[str] | NotGiven = NOT_GIVEN, questions: List[str] | NotGiven = NOT_GIVEN, + tags: List[str] | NotGiven = NOT_GIVEN, # 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, @@ -309,6 +318,7 @@ async def create( "name": name, "description": description, "questions": questions, + "tags": tags, }, template_create_params.TemplateCreateParams, ), @@ -355,6 +365,7 @@ async def update( name: str, description: Optional[str] | NotGiven = NOT_GIVEN, questions: List[str] | NotGiven = NOT_GIVEN, + tags: List[str] | NotGiven = NOT_GIVEN, # 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, @@ -380,6 +391,7 @@ async def update( "name": name, "description": description, "questions": questions, + "tags": tags, }, template_update_params.TemplateUpdateParams, ), @@ -395,6 +407,7 @@ async def list( limit: int | NotGiven = NOT_GIVEN, name: str | NotGiven = NOT_GIVEN, offset: int | NotGiven = NOT_GIVEN, + ordering: str | NotGiven = NOT_GIVEN, search: str | NotGiven = NOT_GIVEN, # 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. @@ -409,6 +422,8 @@ async def list( offset: The initial index from which to return the results. + ordering: Which field to use when ordering the results. + search: A search term. extra_headers: Send extra headers @@ -431,6 +446,7 @@ async def list( "limit": limit, "name": name, "offset": offset, + "ordering": ordering, "search": search, }, template_list_params.TemplateListParams, diff --git a/src/evrim/types/__init__.py b/src/evrim/types/__init__.py index 028d091..f875be6 100644 --- a/src/evrim/types/__init__.py +++ b/src/evrim/types/__init__.py @@ -20,12 +20,8 @@ from .created_field import CreatedField as CreatedField from .template_param import TemplateParam as TemplateParam from .prompt_template import PromptTemplate as PromptTemplate -from .tag_list_params import TagListParams as TagListParams from .field_list_params import FieldListParams as FieldListParams from .field_to_template import FieldToTemplate as FieldToTemplate -from .tag_create_params import TagCreateParams as TagCreateParams -from .tag_list_response import TagListResponse as TagListResponse -from .tag_update_params import TagUpdateParams as TagUpdateParams from .prod_schema_params import ProdSchemaParams as ProdSchemaParams from .profile_tag_params import ProfileTagParams as ProfileTagParams from .field_create_params import FieldCreateParams as FieldCreateParams diff --git a/src/evrim/types/profile_list_params.py b/src/evrim/types/profile_list_params.py index 6cc40ab..4f35cee 100644 --- a/src/evrim/types/profile_list_params.py +++ b/src/evrim/types/profile_list_params.py @@ -14,4 +14,7 @@ class ProfileListParams(TypedDict, total=False): offset: int """The initial index from which to return the results.""" + search: str + """A search term.""" + specification: str diff --git a/src/evrim/types/profiles/latest_retrieve_response.py b/src/evrim/types/profiles/latest_retrieve_response.py index 097e275..360e05d 100644 --- a/src/evrim/types/profiles/latest_retrieve_response.py +++ b/src/evrim/types/profiles/latest_retrieve_response.py @@ -25,6 +25,8 @@ class Result(BaseModel): specification: str + tags: List[str] + class LatestRetrieveResponse(BaseModel): count: int diff --git a/src/evrim/types/tag_create_params.py b/src/evrim/types/tag_create_params.py deleted file mode 100644 index 7efda62..0000000 --- a/src/evrim/types/tag_create_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 import Optional -from typing_extensions import Required, TypedDict - -__all__ = ["TagCreateParams"] - - -class TagCreateParams(TypedDict, total=False): - name: Required[str] - - description: Optional[str] diff --git a/src/evrim/types/tag_list_params.py b/src/evrim/types/tag_list_params.py deleted file mode 100644 index 15183e3..0000000 --- a/src/evrim/types/tag_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 TypedDict - -__all__ = ["TagListParams"] - - -class TagListParams(TypedDict, total=False): - limit: int - """Number of results to return per page.""" - - offset: int - """The initial index from which to return the results.""" diff --git a/src/evrim/types/tag_list_response.py b/src/evrim/types/tag_list_response.py deleted file mode 100644 index 68f68a4..0000000 --- a/src/evrim/types/tag_list_response.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional - -from .tag import Tag -from .._models import BaseModel - -__all__ = ["TagListResponse"] - - -class TagListResponse(BaseModel): - count: int - - results: List[Tag] - - next: Optional[str] = None - - previous: Optional[str] = None diff --git a/src/evrim/types/tag_update_params.py b/src/evrim/types/tag_update_params.py deleted file mode 100644 index d1bcd82..0000000 --- a/src/evrim/types/tag_update_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 import Optional -from typing_extensions import Required, TypedDict - -__all__ = ["TagUpdateParams"] - - -class TagUpdateParams(TypedDict, total=False): - name: Required[str] - - description: Optional[str] diff --git a/src/evrim/types/tags/__init__.py b/src/evrim/types/tags/__init__.py index 6206e18..f8ee8b1 100644 --- a/src/evrim/types/tags/__init__.py +++ b/src/evrim/types/tags/__init__.py @@ -1,9 +1,3 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from __future__ import annotations - -from .tag_to_collection import TagToCollection as TagToCollection -from .profile_tag_params import ProfileTagParams as ProfileTagParams -from .profile_list_params import ProfileListParams as ProfileListParams -from .collection_tag_params import CollectionTagParams as CollectionTagParams -from .profile_list_response import ProfileListResponse as ProfileListResponse diff --git a/src/evrim/types/tags/collection_tag_params.py b/src/evrim/types/tags/collection_tag_params.py deleted file mode 100644 index 5a18153..0000000 --- a/src/evrim/types/tags/collection_tag_params.py +++ /dev/null @@ -1,11 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -__all__ = ["CollectionTagParams"] - - -class CollectionTagParams(TypedDict, total=False): - collection_id: Required[int] diff --git a/src/evrim/types/tags/profile_list_params.py b/src/evrim/types/tags/profile_list_params.py deleted file mode 100644 index 9f3b3cd..0000000 --- a/src/evrim/types/tags/profile_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 TypedDict - -__all__ = ["ProfileListParams"] - - -class ProfileListParams(TypedDict, total=False): - limit: int - """Number of results to return per page.""" - - offset: int - """The initial index from which to return the results.""" diff --git a/src/evrim/types/tags/profile_list_response.py b/src/evrim/types/tags/profile_list_response.py deleted file mode 100644 index 7526345..0000000 --- a/src/evrim/types/tags/profile_list_response.py +++ /dev/null @@ -1,18 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Optional - -from ..._models import BaseModel -from ..shared.profile import Profile - -__all__ = ["ProfileListResponse"] - - -class ProfileListResponse(BaseModel): - count: int - - results: List[Profile] - - next: Optional[str] = None - - previous: Optional[str] = None diff --git a/src/evrim/types/tags/profile_tag_params.py b/src/evrim/types/tags/profile_tag_params.py deleted file mode 100644 index be4eb03..0000000 --- a/src/evrim/types/tags/profile_tag_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 Iterable -from typing_extensions import Required, TypedDict - -__all__ = ["ProfileTagParams"] - - -class ProfileTagParams(TypedDict, total=False): - profile_ids: Required[Iterable[int]] diff --git a/src/evrim/types/tags/tag_to_collection.py b/src/evrim/types/tags/tag_to_collection.py deleted file mode 100644 index 7a6a9e3..0000000 --- a/src/evrim/types/tags/tag_to_collection.py +++ /dev/null @@ -1,10 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - - -from ..._models import BaseModel - -__all__ = ["TagToCollection"] - - -class TagToCollection(BaseModel): - pass diff --git a/src/evrim/types/template.py b/src/evrim/types/template.py index c1a528b..8dccfbc 100644 --- a/src/evrim/types/template.py +++ b/src/evrim/types/template.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from typing import List, Optional +from datetime import datetime from .field import Field from .._models import BaseModel @@ -11,10 +12,16 @@ class Template(BaseModel): id: int + created_at: datetime + fields: List[Field] name: str + updated_at: datetime + description: Optional[str] = None questions: Optional[List[str]] = None + + tags: Optional[List[str]] = None diff --git a/src/evrim/types/template_create_params.py b/src/evrim/types/template_create_params.py index c3ab78d..b5840c5 100644 --- a/src/evrim/types/template_create_params.py +++ b/src/evrim/types/template_create_params.py @@ -18,3 +18,5 @@ class TemplateCreateParams(TypedDict, total=False): description: Optional[str] questions: List[str] + + tags: List[str] diff --git a/src/evrim/types/template_list_params.py b/src/evrim/types/template_list_params.py index ce6e9ab..e1a6d61 100644 --- a/src/evrim/types/template_list_params.py +++ b/src/evrim/types/template_list_params.py @@ -16,5 +16,8 @@ class TemplateListParams(TypedDict, total=False): offset: int """The initial index from which to return the results.""" + ordering: str + """Which field to use when ordering the results.""" + search: str """A search term.""" diff --git a/src/evrim/types/template_param.py b/src/evrim/types/template_param.py index 0d67c7d..c944c3e 100644 --- a/src/evrim/types/template_param.py +++ b/src/evrim/types/template_param.py @@ -18,3 +18,5 @@ class TemplateParam(TypedDict, total=False): description: Optional[str] questions: List[str] + + tags: List[str] diff --git a/src/evrim/types/template_update_params.py b/src/evrim/types/template_update_params.py index 31ab370..74d21bb 100644 --- a/src/evrim/types/template_update_params.py +++ b/src/evrim/types/template_update_params.py @@ -18,3 +18,5 @@ class TemplateUpdateParams(TypedDict, total=False): description: Optional[str] questions: List[str] + + tags: List[str] diff --git a/tests/api_resources/tags/test_collections.py b/tests/api_resources/tags/test_collections.py deleted file mode 100644 index df68fc8..0000000 --- a/tests/api_resources/tags/test_collections.py +++ /dev/null @@ -1,106 +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 evrim import Evrim, AsyncEvrim -from tests.utils import assert_matches_type -from evrim.types.tags import TagToCollection - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestCollections: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - def test_method_tag(self, client: Evrim) -> None: - collection = client.tags.collections.tag( - tag_id="321669910225", - collection_id=0, - ) - assert_matches_type(TagToCollection, collection, path=["response"]) - - @parametrize - def test_raw_response_tag(self, client: Evrim) -> None: - response = client.tags.collections.with_raw_response.tag( - tag_id="321669910225", - collection_id=0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - collection = response.parse() - assert_matches_type(TagToCollection, collection, path=["response"]) - - @parametrize - def test_streaming_response_tag(self, client: Evrim) -> None: - with client.tags.collections.with_streaming_response.tag( - tag_id="321669910225", - collection_id=0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - collection = response.parse() - assert_matches_type(TagToCollection, collection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_tag(self, client: Evrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - client.tags.collections.with_raw_response.tag( - tag_id="", - collection_id=0, - ) - - -class TestAsyncCollections: - parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - async def test_method_tag(self, async_client: AsyncEvrim) -> None: - collection = await async_client.tags.collections.tag( - tag_id="321669910225", - collection_id=0, - ) - assert_matches_type(TagToCollection, collection, path=["response"]) - - @parametrize - async def test_raw_response_tag(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.collections.with_raw_response.tag( - tag_id="321669910225", - collection_id=0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - collection = await response.parse() - assert_matches_type(TagToCollection, collection, path=["response"]) - - @parametrize - async def test_streaming_response_tag(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.collections.with_streaming_response.tag( - tag_id="321669910225", - collection_id=0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - collection = await response.parse() - assert_matches_type(TagToCollection, collection, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_tag(self, async_client: AsyncEvrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - await async_client.tags.collections.with_raw_response.tag( - tag_id="", - collection_id=0, - ) diff --git a/tests/api_resources/tags/test_profiles.py b/tests/api_resources/tags/test_profiles.py deleted file mode 100644 index 17f7b45..0000000 --- a/tests/api_resources/tags/test_profiles.py +++ /dev/null @@ -1,200 +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 evrim import Evrim, AsyncEvrim -from tests.utils import assert_matches_type -from evrim.types.tags import ProfileListResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestProfiles: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - def test_method_list(self, client: Evrim) -> None: - profile = client.tags.profiles.list( - tag_id="321669910225", - ) - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - def test_method_list_with_all_params(self, client: Evrim) -> None: - profile = client.tags.profiles.list( - tag_id="321669910225", - limit=0, - offset=0, - ) - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - def test_raw_response_list(self, client: Evrim) -> None: - response = client.tags.profiles.with_raw_response.list( - tag_id="321669910225", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - profile = response.parse() - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - def test_streaming_response_list(self, client: Evrim) -> None: - with client.tags.profiles.with_streaming_response.list( - tag_id="321669910225", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - profile = response.parse() - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_list(self, client: Evrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - client.tags.profiles.with_raw_response.list( - tag_id="", - ) - - @parametrize - def test_method_tag(self, client: Evrim) -> None: - profile = client.tags.profiles.tag( - tag_id="321669910225", - profile_ids=[0], - ) - assert profile is None - - @parametrize - def test_raw_response_tag(self, client: Evrim) -> None: - response = client.tags.profiles.with_raw_response.tag( - tag_id="321669910225", - profile_ids=[0], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - profile = response.parse() - assert profile is None - - @parametrize - def test_streaming_response_tag(self, client: Evrim) -> None: - with client.tags.profiles.with_streaming_response.tag( - tag_id="321669910225", - profile_ids=[0], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - profile = response.parse() - assert profile is None - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_tag(self, client: Evrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - client.tags.profiles.with_raw_response.tag( - tag_id="", - profile_ids=[0], - ) - - -class TestAsyncProfiles: - parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - async def test_method_list(self, async_client: AsyncEvrim) -> None: - profile = await async_client.tags.profiles.list( - tag_id="321669910225", - ) - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncEvrim) -> None: - profile = await async_client.tags.profiles.list( - tag_id="321669910225", - limit=0, - offset=0, - ) - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - async def test_raw_response_list(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.profiles.with_raw_response.list( - tag_id="321669910225", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - profile = await response.parse() - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - @parametrize - async def test_streaming_response_list(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.profiles.with_streaming_response.list( - tag_id="321669910225", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - profile = await response.parse() - assert_matches_type(ProfileListResponse, profile, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_list(self, async_client: AsyncEvrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - await async_client.tags.profiles.with_raw_response.list( - tag_id="", - ) - - @parametrize - async def test_method_tag(self, async_client: AsyncEvrim) -> None: - profile = await async_client.tags.profiles.tag( - tag_id="321669910225", - profile_ids=[0], - ) - assert profile is None - - @parametrize - async def test_raw_response_tag(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.profiles.with_raw_response.tag( - tag_id="321669910225", - profile_ids=[0], - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - profile = await response.parse() - assert profile is None - - @parametrize - async def test_streaming_response_tag(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.profiles.with_streaming_response.tag( - tag_id="321669910225", - profile_ids=[0], - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - profile = await response.parse() - assert profile is None - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_tag(self, async_client: AsyncEvrim) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `tag_id` but received ''"): - await async_client.tags.profiles.with_raw_response.tag( - tag_id="", - profile_ids=[0], - ) diff --git a/tests/api_resources/test_created_fields.py b/tests/api_resources/test_created_fields.py index 6a01fbf..11dc289 100644 --- a/tests/api_resources/test_created_fields.py +++ b/tests/api_resources/test_created_fields.py @@ -61,6 +61,7 @@ def test_method_create_with_all_params(self, client: Evrim) -> None: "name": "name", "description": "description", "questions": ["string"], + "tags": ["string"], }, source_entity_type="source_entity_type", sources=["string"], @@ -171,6 +172,7 @@ def test_method_update_with_all_params(self, client: Evrim) -> None: "name": "name", "description": "description", "questions": ["string"], + "tags": ["string"], }, source_entity_type="source_entity_type", sources=["string"], @@ -360,6 +362,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncEvrim) -> "name": "name", "description": "description", "questions": ["string"], + "tags": ["string"], }, source_entity_type="source_entity_type", sources=["string"], @@ -470,6 +473,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncEvrim) -> "name": "name", "description": "description", "questions": ["string"], + "tags": ["string"], }, source_entity_type="source_entity_type", sources=["string"], diff --git a/tests/api_resources/test_profiles.py b/tests/api_resources/test_profiles.py index 0db8f82..a415683 100644 --- a/tests/api_resources/test_profiles.py +++ b/tests/api_resources/test_profiles.py @@ -166,6 +166,7 @@ def test_method_list_with_all_params(self, client: Evrim) -> None: profile = client.profiles.list( limit=0, offset=0, + search="search", specification="specification", ) assert_matches_type(ProfileListResponse, profile, path=["response"]) @@ -412,6 +413,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncEvrim) -> No profile = await async_client.profiles.list( limit=0, offset=0, + search="search", specification="specification", ) assert_matches_type(ProfileListResponse, profile, path=["response"]) diff --git a/tests/api_resources/test_tags.py b/tests/api_resources/test_tags.py index b9c02e4..c367203 100644 --- a/tests/api_resources/test_tags.py +++ b/tests/api_resources/test_tags.py @@ -8,8 +8,6 @@ import pytest from evrim import Evrim, AsyncEvrim -from evrim.types import Tag, TagListResponse -from tests.utils import assert_matches_type base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -17,131 +15,10 @@ class TestTags: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - @parametrize - def test_method_create(self, client: Evrim) -> None: - tag = client.tags.create( - name="name", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_method_create_with_all_params(self, client: Evrim) -> None: - tag = client.tags.create( - name="name", - description="description", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_raw_response_create(self, client: Evrim) -> None: - response = client.tags.with_raw_response.create( - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_streaming_response_create(self, client: Evrim) -> None: - with client.tags.with_streaming_response.create( - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_retrieve(self, client: Evrim) -> None: - tag = client.tags.retrieve( - 0, - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_raw_response_retrieve(self, client: Evrim) -> None: - response = client.tags.with_raw_response.retrieve( - 0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_streaming_response_retrieve(self, client: Evrim) -> None: - with client.tags.with_streaming_response.retrieve( - 0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_update(self, client: Evrim) -> None: - tag = client.tags.update( - id=0, - name="name", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_method_update_with_all_params(self, client: Evrim) -> None: - tag = client.tags.update( - id=0, - name="name", - description="description", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_raw_response_update(self, client: Evrim) -> None: - response = client.tags.with_raw_response.update( - id=0, - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - def test_streaming_response_update(self, client: Evrim) -> None: - with client.tags.with_streaming_response.update( - id=0, - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - @parametrize def test_method_list(self, client: Evrim) -> None: tag = client.tags.list() - assert_matches_type(TagListResponse, tag, path=["response"]) - - @parametrize - def test_method_list_with_all_params(self, client: Evrim) -> None: - tag = client.tags.list( - limit=0, - offset=0, - ) - assert_matches_type(TagListResponse, tag, path=["response"]) + assert tag is None @parametrize def test_raw_response_list(self, client: Evrim) -> None: @@ -150,7 +27,7 @@ def test_raw_response_list(self, client: Evrim) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" tag = response.parse() - assert_matches_type(TagListResponse, tag, path=["response"]) + assert tag is None @parametrize def test_streaming_response_list(self, client: Evrim) -> None: @@ -158,37 +35,6 @@ def test_streaming_response_list(self, client: Evrim) -> None: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() - assert_matches_type(TagListResponse, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_delete(self, client: Evrim) -> None: - tag = client.tags.delete( - 0, - ) - assert tag is None - - @parametrize - def test_raw_response_delete(self, client: Evrim) -> None: - response = client.tags.with_raw_response.delete( - 0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() - assert tag is None - - @parametrize - def test_streaming_response_delete(self, client: Evrim) -> None: - with client.tags.with_streaming_response.delete( - 0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = response.parse() assert tag is None @@ -198,131 +44,10 @@ def test_streaming_response_delete(self, client: Evrim) -> None: class TestAsyncTags: parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) - @parametrize - async def test_method_create(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.create( - name="name", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.create( - name="name", - description="description", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_raw_response_create(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.with_raw_response.create( - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_streaming_response_create(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.with_streaming_response.create( - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_retrieve(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.retrieve( - 0, - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.with_raw_response.retrieve( - 0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.with_streaming_response.retrieve( - 0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_update(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.update( - id=0, - name="name", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_method_update_with_all_params(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.update( - id=0, - name="name", - description="description", - ) - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_raw_response_update(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.with_raw_response.update( - id=0, - name="name", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - @parametrize - async def test_streaming_response_update(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.with_streaming_response.update( - id=0, - name="name", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - tag = await response.parse() - assert_matches_type(Tag, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - @parametrize async def test_method_list(self, async_client: AsyncEvrim) -> None: tag = await async_client.tags.list() - assert_matches_type(TagListResponse, tag, path=["response"]) - - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.list( - limit=0, - offset=0, - ) - assert_matches_type(TagListResponse, tag, path=["response"]) + assert tag is None @parametrize async def test_raw_response_list(self, async_client: AsyncEvrim) -> None: @@ -331,7 +56,7 @@ async def test_raw_response_list(self, async_client: AsyncEvrim) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" tag = await response.parse() - assert_matches_type(TagListResponse, tag, path=["response"]) + assert tag is None @parametrize async def test_streaming_response_list(self, async_client: AsyncEvrim) -> None: @@ -339,37 +64,6 @@ async def test_streaming_response_list(self, async_client: AsyncEvrim) -> None: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() - assert_matches_type(TagListResponse, tag, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_delete(self, async_client: AsyncEvrim) -> None: - tag = await async_client.tags.delete( - 0, - ) - assert tag is None - - @parametrize - async def test_raw_response_delete(self, async_client: AsyncEvrim) -> None: - response = await async_client.tags.with_raw_response.delete( - 0, - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() - assert tag is None - - @parametrize - async def test_streaming_response_delete(self, async_client: AsyncEvrim) -> None: - async with async_client.tags.with_streaming_response.delete( - 0, - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - tag = await response.parse() assert tag is None diff --git a/tests/api_resources/test_templates.py b/tests/api_resources/test_templates.py index 3dc273a..f3e6bb4 100644 --- a/tests/api_resources/test_templates.py +++ b/tests/api_resources/test_templates.py @@ -55,6 +55,7 @@ def test_method_create_with_all_params(self, client: Evrim) -> None: name="name", description="description", questions=["string"], + tags=["string"], ) assert_matches_type(Template, template, path=["response"]) @@ -164,6 +165,7 @@ def test_method_update_with_all_params(self, client: Evrim) -> None: name="name", description="description", questions=["string"], + tags=["string"], ) assert_matches_type(Template, template, path=["response"]) @@ -218,6 +220,7 @@ def test_method_list_with_all_params(self, client: Evrim) -> None: limit=0, name="name", offset=0, + ordering="ordering", search="search", ) assert_matches_type(TemplateListResponse, template, path=["response"]) @@ -312,6 +315,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncEvrim) -> name="name", description="description", questions=["string"], + tags=["string"], ) assert_matches_type(Template, template, path=["response"]) @@ -421,6 +425,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncEvrim) -> name="name", description="description", questions=["string"], + tags=["string"], ) assert_matches_type(Template, template, path=["response"]) @@ -475,6 +480,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncEvrim) -> No limit=0, name="name", offset=0, + ordering="ordering", search="search", ) assert_matches_type(TemplateListResponse, template, path=["response"])