From 710f2c6ba78cf59407891200c7827dec385f1992 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 18:47:39 +0000 Subject: [PATCH] Release v0.1.53 --- pyproject.toml | 2 +- src/superagent/__init__.py | 13 +- src/superagent/client.py | 3 + src/superagent/core/client_wrapper.py | 2 +- src/superagent/resources/__init__.py | 4 +- .../resources/vector_database/__init__.py | 2 + .../resources/vector_database/client.py | 214 ++++++++++++++++++ src/superagent/types/__init__.py | 10 + .../types/app_models_request_datasource.py | 2 + .../types/app_models_request_vector_db.py | 29 +++ .../types/app_models_response_vector_db.py | 30 +++ .../types/prisma_models_api_user.py | 2 + .../types/prisma_models_datasource.py | 3 + .../types/prisma_models_vector_db.py | 49 ++++ src/superagent/types/vector_db_list.py | 30 +++ src/superagent/types/vector_db_provider.py | 33 +++ 16 files changed, 423 insertions(+), 5 deletions(-) create mode 100644 src/superagent/resources/vector_database/__init__.py create mode 100644 src/superagent/resources/vector_database/client.py create mode 100644 src/superagent/types/app_models_request_vector_db.py create mode 100644 src/superagent/types/app_models_response_vector_db.py create mode 100644 src/superagent/types/prisma_models_vector_db.py create mode 100644 src/superagent/types/vector_db_list.py create mode 100644 src/superagent/types/vector_db_provider.py diff --git a/pyproject.toml b/pyproject.toml index 2a13919..2541bb2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "superagent-py" -version = "v0.1.52" +version = "v0.1.53" description = "" readme = "README.md" authors = [] diff --git a/src/superagent/__init__.py b/src/superagent/__init__.py index ae720bd..a4436eb 100644 --- a/src/superagent/__init__.py +++ b/src/superagent/__init__.py @@ -9,6 +9,7 @@ AppModelsRequestDatasource, AppModelsRequestLlm, AppModelsRequestTool, + AppModelsRequestVectorDb, AppModelsRequestWorkflow, AppModelsRequestWorkflowStep, AppModelsResponseAgent, @@ -17,6 +18,7 @@ AppModelsResponseDatasource, AppModelsResponseLlm, AppModelsResponseTool, + AppModelsResponseVectorDb, AppModelsResponseWorkflow, AppModelsResponseWorkflowStep, DatasourceList, @@ -34,17 +36,20 @@ PrismaModelsDatasource, PrismaModelsLlm, PrismaModelsTool, + PrismaModelsVectorDb, PrismaModelsWorkflow, PrismaModelsWorkflowStep, ToolList, ToolType, ValidationError, ValidationErrorLocItem, + VectorDbList, + VectorDbProvider, WorkflowList, WorkflowStepList, ) from .errors import UnprocessableEntityError -from .resources import agent, api_user, datasource, llm, tool, workflow +from .resources import agent, api_user, datasource, llm, tool, vector_database, workflow from .environment import SuperagentEnvironment __all__ = [ @@ -56,6 +61,7 @@ "AppModelsRequestDatasource", "AppModelsRequestLlm", "AppModelsRequestTool", + "AppModelsRequestVectorDb", "AppModelsRequestWorkflow", "AppModelsRequestWorkflowStep", "AppModelsResponseAgent", @@ -64,6 +70,7 @@ "AppModelsResponseDatasource", "AppModelsResponseLlm", "AppModelsResponseTool", + "AppModelsResponseVectorDb", "AppModelsResponseWorkflow", "AppModelsResponseWorkflowStep", "DatasourceList", @@ -81,6 +88,7 @@ "PrismaModelsDatasource", "PrismaModelsLlm", "PrismaModelsTool", + "PrismaModelsVectorDb", "PrismaModelsWorkflow", "PrismaModelsWorkflowStep", "SuperagentEnvironment", @@ -89,6 +97,8 @@ "UnprocessableEntityError", "ValidationError", "ValidationErrorLocItem", + "VectorDbList", + "VectorDbProvider", "WorkflowList", "WorkflowStepList", "agent", @@ -96,5 +106,6 @@ "datasource", "llm", "tool", + "vector_database", "workflow", ] diff --git a/src/superagent/client.py b/src/superagent/client.py index 226e054..1cd0225 100644 --- a/src/superagent/client.py +++ b/src/superagent/client.py @@ -11,6 +11,7 @@ from .resources.datasource.client import AsyncDatasourceClient, DatasourceClient from .resources.llm.client import AsyncLlmClient, LlmClient from .resources.tool.client import AsyncToolClient, ToolClient +from .resources.vector_database.client import AsyncVectorDatabaseClient, VectorDatabaseClient from .resources.workflow.client import AsyncWorkflowClient, WorkflowClient @@ -35,6 +36,7 @@ def __init__( self.datasource = DatasourceClient(client_wrapper=self._client_wrapper) self.tool = ToolClient(client_wrapper=self._client_wrapper) self.workflow = WorkflowClient(client_wrapper=self._client_wrapper) + self.vector_database = VectorDatabaseClient(client_wrapper=self._client_wrapper) class AsyncSuperagent: @@ -58,6 +60,7 @@ def __init__( self.datasource = AsyncDatasourceClient(client_wrapper=self._client_wrapper) self.tool = AsyncToolClient(client_wrapper=self._client_wrapper) self.workflow = AsyncWorkflowClient(client_wrapper=self._client_wrapper) + self.vector_database = AsyncVectorDatabaseClient(client_wrapper=self._client_wrapper) def _get_base_url(*, base_url: typing.Optional[str] = None, environment: SuperagentEnvironment) -> str: diff --git a/src/superagent/core/client_wrapper.py b/src/superagent/core/client_wrapper.py index 9d52ee1..cea347a 100644 --- a/src/superagent/core/client_wrapper.py +++ b/src/superagent/core/client_wrapper.py @@ -14,7 +14,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "superagent-py", - "X-Fern-SDK-Version": "v0.1.52", + "X-Fern-SDK-Version": "v0.1.53", } token = self._get_token() if token is not None: diff --git a/src/superagent/resources/__init__.py b/src/superagent/resources/__init__.py index 1d175ae..2437a8d 100644 --- a/src/superagent/resources/__init__.py +++ b/src/superagent/resources/__init__.py @@ -1,5 +1,5 @@ # This file was auto-generated by Fern from our API Definition. -from . import agent, api_user, datasource, llm, tool, workflow +from . import agent, api_user, datasource, llm, tool, vector_database, workflow -__all__ = ["agent", "api_user", "datasource", "llm", "tool", "workflow"] +__all__ = ["agent", "api_user", "datasource", "llm", "tool", "vector_database", "workflow"] diff --git a/src/superagent/resources/vector_database/__init__.py b/src/superagent/resources/vector_database/__init__.py new file mode 100644 index 0000000..f3ea265 --- /dev/null +++ b/src/superagent/resources/vector_database/__init__.py @@ -0,0 +1,2 @@ +# This file was auto-generated by Fern from our API Definition. + diff --git a/src/superagent/resources/vector_database/client.py b/src/superagent/resources/vector_database/client.py new file mode 100644 index 0000000..5652e71 --- /dev/null +++ b/src/superagent/resources/vector_database/client.py @@ -0,0 +1,214 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +import urllib.parse +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.jsonable_encoder import jsonable_encoder +from ...errors.unprocessable_entity_error import UnprocessableEntityError +from ...types.app_models_request_vector_db import AppModelsRequestVectorDb +from ...types.app_models_response_vector_db import AppModelsResponseVectorDb +from ...types.http_validation_error import HttpValidationError +from ...types.vector_db_list import VectorDbList + +try: + import pydantic.v1 as pydantic # type: ignore +except ImportError: + import pydantic # type: ignore + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class VectorDatabaseClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def create(self, *, request: AppModelsRequestVectorDb) -> AppModelsResponseVectorDb: + """ + Create a new Vector Database + + Parameters: + - request: AppModelsRequestVectorDb. + """ + _response = self._client_wrapper.httpx_client.request( + "POST", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "api/v1/vector-db"), + json=jsonable_encoder(request), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def list(self) -> VectorDbList: + """ + List all Vector Databases + """ + _response = self._client_wrapper.httpx_client.request( + "GET", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "api/v1/vector-dbs"), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(VectorDbList, _response.json()) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def get(self, vector_db_id: str) -> AppModelsResponseVectorDb: + """ + Get a single Vector Database + + Parameters: + - vector_db_id: str. + """ + _response = self._client_wrapper.httpx_client.request( + "GET", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", f"api/v1/vector-dbs/{vector_db_id}"), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def update(self, vector_db_id: str, *, request: AppModelsRequestVectorDb) -> AppModelsResponseVectorDb: + """ + Patch a Vector Database + + Parameters: + - vector_db_id: str. + + - request: AppModelsRequestVectorDb. + """ + _response = self._client_wrapper.httpx_client.request( + "PATCH", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", f"api/v1/vector-dbs/{vector_db_id}"), + json=jsonable_encoder(request), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + +class AsyncVectorDatabaseClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def create(self, *, request: AppModelsRequestVectorDb) -> AppModelsResponseVectorDb: + """ + Create a new Vector Database + + Parameters: + - request: AppModelsRequestVectorDb. + """ + _response = await self._client_wrapper.httpx_client.request( + "POST", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "api/v1/vector-db"), + json=jsonable_encoder(request), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def list(self) -> VectorDbList: + """ + List all Vector Databases + """ + _response = await self._client_wrapper.httpx_client.request( + "GET", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", "api/v1/vector-dbs"), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(VectorDbList, _response.json()) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def get(self, vector_db_id: str) -> AppModelsResponseVectorDb: + """ + Get a single Vector Database + + Parameters: + - vector_db_id: str. + """ + _response = await self._client_wrapper.httpx_client.request( + "GET", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", f"api/v1/vector-dbs/{vector_db_id}"), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def update(self, vector_db_id: str, *, request: AppModelsRequestVectorDb) -> AppModelsResponseVectorDb: + """ + Patch a Vector Database + + Parameters: + - vector_db_id: str. + + - request: AppModelsRequestVectorDb. + """ + _response = await self._client_wrapper.httpx_client.request( + "PATCH", + urllib.parse.urljoin(f"{self._client_wrapper.get_base_url()}/", f"api/v1/vector-dbs/{vector_db_id}"), + json=jsonable_encoder(request), + headers=self._client_wrapper.get_headers(), + timeout=60, + ) + if 200 <= _response.status_code < 300: + return pydantic.parse_obj_as(AppModelsResponseVectorDb, _response.json()) # type: ignore + if _response.status_code == 422: + raise UnprocessableEntityError(pydantic.parse_obj_as(HttpValidationError, _response.json())) # type: ignore + try: + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) diff --git a/src/superagent/types/__init__.py b/src/superagent/types/__init__.py index 7abf255..9f70283 100644 --- a/src/superagent/types/__init__.py +++ b/src/superagent/types/__init__.py @@ -8,6 +8,7 @@ from .app_models_request_datasource import AppModelsRequestDatasource from .app_models_request_llm import AppModelsRequestLlm from .app_models_request_tool import AppModelsRequestTool +from .app_models_request_vector_db import AppModelsRequestVectorDb from .app_models_request_workflow import AppModelsRequestWorkflow from .app_models_request_workflow_step import AppModelsRequestWorkflowStep from .app_models_response_agent import AppModelsResponseAgent @@ -16,6 +17,7 @@ from .app_models_response_datasource import AppModelsResponseDatasource from .app_models_response_llm import AppModelsResponseLlm from .app_models_response_tool import AppModelsResponseTool +from .app_models_response_vector_db import AppModelsResponseVectorDb from .app_models_response_workflow import AppModelsResponseWorkflow from .app_models_response_workflow_step import AppModelsResponseWorkflowStep from .datasource_list import DatasourceList @@ -33,12 +35,15 @@ from .prisma_models_datasource import PrismaModelsDatasource from .prisma_models_llm import PrismaModelsLlm from .prisma_models_tool import PrismaModelsTool +from .prisma_models_vector_db import PrismaModelsVectorDb from .prisma_models_workflow import PrismaModelsWorkflow from .prisma_models_workflow_step import PrismaModelsWorkflowStep from .tool_list import ToolList from .tool_type import ToolType from .validation_error import ValidationError from .validation_error_loc_item import ValidationErrorLocItem +from .vector_db_list import VectorDbList +from .vector_db_provider import VectorDbProvider from .workflow_list import WorkflowList from .workflow_step_list import WorkflowStepList @@ -51,6 +56,7 @@ "AppModelsRequestDatasource", "AppModelsRequestLlm", "AppModelsRequestTool", + "AppModelsRequestVectorDb", "AppModelsRequestWorkflow", "AppModelsRequestWorkflowStep", "AppModelsResponseAgent", @@ -59,6 +65,7 @@ "AppModelsResponseDatasource", "AppModelsResponseLlm", "AppModelsResponseTool", + "AppModelsResponseVectorDb", "AppModelsResponseWorkflow", "AppModelsResponseWorkflowStep", "DatasourceList", @@ -76,12 +83,15 @@ "PrismaModelsDatasource", "PrismaModelsLlm", "PrismaModelsTool", + "PrismaModelsVectorDb", "PrismaModelsWorkflow", "PrismaModelsWorkflowStep", "ToolList", "ToolType", "ValidationError", "ValidationErrorLocItem", + "VectorDbList", + "VectorDbProvider", "WorkflowList", "WorkflowStepList", ] diff --git a/src/superagent/types/app_models_request_datasource.py b/src/superagent/types/app_models_request_datasource.py index 28b4aab..85196e2 100644 --- a/src/superagent/types/app_models_request_datasource.py +++ b/src/superagent/types/app_models_request_datasource.py @@ -18,6 +18,7 @@ class AppModelsRequestDatasource(pydantic.BaseModel): content: typing.Optional[str] url: typing.Optional[str] metadata: typing.Optional[typing.Dict[str, typing.Any]] + vector_db_provider: typing.Optional[str] = pydantic.Field(alias="vectorDbProvider") def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} @@ -30,4 +31,5 @@ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: class Config: frozen = True smart_union = True + allow_population_by_field_name = True json_encoders = {dt.datetime: serialize_datetime} diff --git a/src/superagent/types/app_models_request_vector_db.py b/src/superagent/types/app_models_request_vector_db.py new file mode 100644 index 0000000..969b1c3 --- /dev/null +++ b/src/superagent/types/app_models_request_vector_db.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ..core.datetime_utils import serialize_datetime + +try: + import pydantic.v1 as pydantic # type: ignore +except ImportError: + import pydantic # type: ignore + + +class AppModelsRequestVectorDb(pydantic.BaseModel): + provider: str + options: typing.Dict[str, typing.Any] + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().dict(**kwargs_with_defaults) + + class Config: + frozen = True + smart_union = True + json_encoders = {dt.datetime: serialize_datetime} diff --git a/src/superagent/types/app_models_response_vector_db.py b/src/superagent/types/app_models_response_vector_db.py new file mode 100644 index 0000000..f01bd9a --- /dev/null +++ b/src/superagent/types/app_models_response_vector_db.py @@ -0,0 +1,30 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ..core.datetime_utils import serialize_datetime +from .prisma_models_vector_db import PrismaModelsVectorDb + +try: + import pydantic.v1 as pydantic # type: ignore +except ImportError: + import pydantic # type: ignore + + +class AppModelsResponseVectorDb(pydantic.BaseModel): + success: bool + data: typing.Optional[PrismaModelsVectorDb] + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().dict(**kwargs_with_defaults) + + class Config: + frozen = True + smart_union = True + json_encoders = {dt.datetime: serialize_datetime} diff --git a/src/superagent/types/prisma_models_api_user.py b/src/superagent/types/prisma_models_api_user.py index 9f27de4..99cbd08 100644 --- a/src/superagent/types/prisma_models_api_user.py +++ b/src/superagent/types/prisma_models_api_user.py @@ -28,6 +28,7 @@ class PrismaModelsApiUser(pydantic.BaseModel): datasources: typing.Optional[typing.List[PrismaModelsDatasource]] tools: typing.Optional[typing.List[PrismaModelsTool]] workflows: typing.Optional[typing.List[PrismaModelsWorkflow]] + vector_db: typing.Optional[typing.List[PrismaModelsVectorDb]] = pydantic.Field(alias="vectorDb") def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} @@ -48,6 +49,7 @@ class Config: from .prisma_models_datasource import PrismaModelsDatasource # noqa: E402 from .prisma_models_llm import PrismaModelsLlm # noqa: E402 from .prisma_models_tool import PrismaModelsTool # noqa: E402 +from .prisma_models_vector_db import PrismaModelsVectorDb # noqa: E402 from .prisma_models_workflow import PrismaModelsWorkflow # noqa: E402 PrismaModelsApiUser.update_forward_refs() diff --git a/src/superagent/types/prisma_models_datasource.py b/src/superagent/types/prisma_models_datasource.py index 3a2a8c0..d3f583f 100644 --- a/src/superagent/types/prisma_models_datasource.py +++ b/src/superagent/types/prisma_models_datasource.py @@ -33,6 +33,8 @@ class PrismaModelsDatasource(pydantic.BaseModel): metadata: typing.Optional[str] status: DatasourceStatus datasources: typing.Optional[typing.List[PrismaModelsAgentDatasource]] + vector_db: typing.Optional[PrismaModelsVectorDb] = pydantic.Field(alias="vectorDb") + vector_db_id: typing.Optional[str] = pydantic.Field(alias="vectorDbId") def json(self, **kwargs: typing.Any) -> str: kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} @@ -51,5 +53,6 @@ class Config: from .prisma_models_agent_datasource import PrismaModelsAgentDatasource # noqa: E402 from .prisma_models_api_user import PrismaModelsApiUser # noqa: E402 +from .prisma_models_vector_db import PrismaModelsVectorDb # noqa: E402 PrismaModelsDatasource.update_forward_refs() diff --git a/src/superagent/types/prisma_models_vector_db.py b/src/superagent/types/prisma_models_vector_db.py new file mode 100644 index 0000000..a14dd48 --- /dev/null +++ b/src/superagent/types/prisma_models_vector_db.py @@ -0,0 +1,49 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import datetime as dt +import typing + +from ..core.datetime_utils import serialize_datetime +from .vector_db_provider import VectorDbProvider + +try: + import pydantic.v1 as pydantic # type: ignore +except ImportError: + import pydantic # type: ignore + + +class PrismaModelsVectorDb(pydantic.BaseModel): + """ + Represents a VectorDb record + """ + + id: str + provider: VectorDbProvider + options: typing.Optional[str] + datasources: typing.Optional[typing.List[PrismaModelsDatasource]] + created_at: dt.datetime = pydantic.Field(alias="createdAt") + updated_at: dt.datetime = pydantic.Field(alias="updatedAt") + api_user_id: str = pydantic.Field(alias="apiUserId") + api_user: typing.Optional[PrismaModelsApiUser] = pydantic.Field(alias="apiUser") + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().dict(**kwargs_with_defaults) + + class Config: + frozen = True + smart_union = True + allow_population_by_field_name = True + json_encoders = {dt.datetime: serialize_datetime} + + +from .prisma_models_api_user import PrismaModelsApiUser # noqa: E402 +from .prisma_models_datasource import PrismaModelsDatasource # noqa: E402 + +PrismaModelsVectorDb.update_forward_refs() diff --git a/src/superagent/types/vector_db_list.py b/src/superagent/types/vector_db_list.py new file mode 100644 index 0000000..9795827 --- /dev/null +++ b/src/superagent/types/vector_db_list.py @@ -0,0 +1,30 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +from ..core.datetime_utils import serialize_datetime +from .prisma_models_vector_db import PrismaModelsVectorDb + +try: + import pydantic.v1 as pydantic # type: ignore +except ImportError: + import pydantic # type: ignore + + +class VectorDbList(pydantic.BaseModel): + success: bool + data: typing.Optional[typing.List[PrismaModelsVectorDb]] + + def json(self, **kwargs: typing.Any) -> str: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().json(**kwargs_with_defaults) + + def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]: + kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs} + return super().dict(**kwargs_with_defaults) + + class Config: + frozen = True + smart_union = True + json_encoders = {dt.datetime: serialize_datetime} diff --git a/src/superagent/types/vector_db_provider.py b/src/superagent/types/vector_db_provider.py new file mode 100644 index 0000000..5643954 --- /dev/null +++ b/src/superagent/types/vector_db_provider.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +import enum +import typing + +T_Result = typing.TypeVar("T_Result") + + +class VectorDbProvider(str, enum.Enum): + """ + An enumeration. + """ + + PINECONE = "PINECONE" + ASTRA_DB = "ASTRA_DB" + WEAVIATE = "WEAVIATE" + QDRANT = "QDRANT" + + def visit( + self, + pinecone: typing.Callable[[], T_Result], + astra_db: typing.Callable[[], T_Result], + weaviate: typing.Callable[[], T_Result], + qdrant: typing.Callable[[], T_Result], + ) -> T_Result: + if self is VectorDbProvider.PINECONE: + return pinecone() + if self is VectorDbProvider.ASTRA_DB: + return astra_db() + if self is VectorDbProvider.WEAVIATE: + return weaviate() + if self is VectorDbProvider.QDRANT: + return qdrant()