Skip to content

Commit

Permalink
v0.3.56
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions committed Jun 5, 2024
1 parent ef4638c commit feaaac7
Show file tree
Hide file tree
Showing 11 changed files with 256 additions and 1 deletion.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,16 @@ print(response.document_chunks)

## Repositories
Repositories act as storage for documents, organized to facilitate efficient information retrieval. Manipulating repository content is straightforward.
### Repository creation
To create a repository, you can use the `create` method provided by the `repositories` API. Here's an example of how to create a repository:
```python

response = client.repositories.create(
name="Test",
description="Test Repository",
organization="org-test@premai.io"
)
```
### Document creation
To add a document to a repository, you can use the `create` method provided by the `document` API. Here's an example of how to create and upload a document:

Expand Down
3 changes: 3 additions & 0 deletions premai/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from .api import (
EmbeddingsModule,
ModelsModule,
RepositoriesModule,
FeedbacksModule,
TracesModule,
ChatModuleWrapper,
Expand All @@ -12,6 +13,7 @@
class Prem:
embeddings: EmbeddingsModule
models: ModelsModule
repositories: RepositoriesModule
feedbacks: FeedbacksModule
traces: TracesModule
chat: ChatModuleWrapper
Expand All @@ -22,6 +24,7 @@ def __init__(self, api_key: str, base_url='https://app.premai.io'):
# Init modules
self.embeddings = EmbeddingsModule(client)
self.models = ModelsModule(client)
self.repositories = RepositoriesModule(client)
self.feedbacks = FeedbacksModule(client)
self.traces = TracesModule(client)
self.chat = ChatModuleWrapper(client)
Expand Down
10 changes: 10 additions & 0 deletions premai/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
DocumentInputDict,
EmbeddingsInputDict,
FeedbackCreateDict,
RepositoryDict,
)
from .chat_completions.v1_chat_completions_create import v1_chat_completions_create_wrapper
from .embeddings.v1_embeddings_create import v1_embeddings_create_wrapper
from .feedbacks.v1_set_trace_feedback_create import v1_set_trace_feedback_create_wrapper
from .models.v1_models_list import v1_models_list_wrapper
from .models.v1_models_retrieve import v1_models_retrieve_wrapper
from .repositories.v1_repositories_create import v1_repositories_create_wrapper
from .repository_document.v1_repository_document_create import v1_repository_document_create_wrapper
from .traces.v1_traces_list import v1_traces_list_wrapper
from .traces.v1_traces_retrieve import v1_traces_retrieve_wrapper
Expand Down Expand Up @@ -53,6 +55,14 @@ def retrieve(
)


class RepositoriesModule:
def __init__(self, client):
self._client = client

def create(self, **kwargs: Unpack[RepositoryDict]):
return v1_repositories_create_wrapper(self._client)(**kwargs)


class RepositoryDocumentModule:
def __init__(self, client):
self._client = client
Expand Down
Empty file.
83 changes: 83 additions & 0 deletions premai/api/repositories/v1_repositories_create.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
from http import HTTPStatus
from typing import Dict, Optional

import httpx
from typing_extensions import Any, Unpack

from ... import errors
from ...models.repository import Repository

# from ...client import AuthenticatedClient, Client
from ...types import Response


def _get_kwargs(
**body: Unpack[Repository],
) -> Dict[str, Any]:
headers: Dict[str, Any] = {}

_kwargs: Dict[str, Any] = {
"method": "post",
"url": "/v1/repositories/",
}

_json_body = body

_kwargs["json"] = _json_body
headers["Content-Type"] = "application/json"

_kwargs["headers"] = headers
return _kwargs


def _parse_response(*, client, response: httpx.Response) -> Optional[Repository]:
if response.status_code == HTTPStatus.CREATED:
response_201 = Repository.from_dict(response.json())

return response_201
if client.raise_on_unexpected_status:
raise errors.UnexpectedStatus(response.status_code, response.content)
else:
return None


def _build_response(*, client, response: httpx.Response) -> Response[Repository]:
return Response(
status_code=HTTPStatus(response.status_code),
content=response.content,
headers=response.headers,
parsed=_parse_response(client=client, response=response),
)


def v1_repositories_create_wrapper(client):
def v1_repositories_create_wrapped(
**body: Unpack[Repository],
) -> Repository:
"""
Args:
body (Repository):
body (Repository):
body (Repository):
Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.
Returns:
Response[Repository]
"""

kwargs = _get_kwargs(
**body,
)

httpx_client = client.get_httpx_client()

response = httpx_client.request(
**kwargs,
)

return _build_response(client=client, response=response).parsed

return v1_repositories_create_wrapped
3 changes: 3 additions & 0 deletions premai/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
EmbeddingsModule,
FeedbacksModule,
ModelsModule,
RepositoriesModule,
RepositoryDocumentModule,
TracesModule,
)
Expand Down Expand Up @@ -248,6 +249,7 @@ class Prem:
chat_completions: ChatCompletionsModule
embeddings: EmbeddingsModule
models: ModelsModule
repositories: RepositoriesModule
repository_document: RepositoryDocumentModule
feedbacks: FeedbacksModule
traces: TracesModule
Expand All @@ -258,6 +260,7 @@ def __init__(self, api_key: str = "", base_url="https://app.premai.io"):
self.chat_completions = ChatCompletionsModule(client)
self.embeddings = EmbeddingsModule(client)
self.models = ModelsModule(client)
self.repositories = RepositoriesModule(client)
self.repository_document = RepositoryDocumentModule(client)
self.feedbacks = FeedbacksModule(client)
self.traces = TracesModule(client)
5 changes: 5 additions & 0 deletions premai/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
from .provider_not_found_error_code_enum import ProviderNotFoundErrorCodeEnum
from .rate_limit_error import RateLimitError
from .rate_limit_error_code_enum import RateLimitErrorCodeEnum
from .repository import Repository, RepositoryDict
from .response_choice import ResponseChoice
from .status_enum import StatusEnum
from .trace_feedback import TraceFeedback
Expand Down Expand Up @@ -110,6 +111,7 @@
"ProviderNotFoundErrorCodeEnum",
"RateLimitError",
"RateLimitErrorCodeEnum",
"Repository",
"ResponseChoice",
"StatusEnum",
"TraceFeedback",
Expand All @@ -130,6 +132,9 @@
"EmbeddingsInputDict",
"EmbeddingsInputDict",
"EmbeddingsInputDict",
"RepositoryDict",
"RepositoryDict",
"RepositoryDict",
"DocumentInputDict",
"FeedbackCreateDict",
"FeedbackCreateDict",
Expand Down
1 change: 1 addition & 0 deletions premai/models/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class Model:
model_type (Union[Unset, ModelTypeEnum]): * `text2text` - Text to Text
* `text2image` - Text to Image
* `text2vector` - Text to Vector
* `autopilot` - Autopilot
model_provider (Union[BlankEnum, ModelProviderEnum, None, Unset]):
deprecated (Union[Unset, bool]):
"""
Expand Down
1 change: 1 addition & 0 deletions premai/models/model_type_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


class ModelTypeEnum(str, Enum):
AUTOPILOT = "autopilot"
TEXT2IMAGE = "text2image"
TEXT2TEXT = "text2text"
TEXT2VECTOR = "text2vector"
Expand Down
139 changes: 139 additions & 0 deletions premai/models/repository.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
from typing import Dict, List, Type, Union, cast

from attrs import define as _attrs_define
from attrs import field as _attrs_field
from typing_extensions import Any, NotRequired, TypedDict, TypeVar

from ..types import UNSET, Unset

T = TypeVar("T", bound="Repository")


class RepositoryDict(TypedDict):
id: int
name: str
organization: str
description: NotRequired[Union[None, Unset, str]]
pass


@_attrs_define
class Repository:
"""
Attributes:
id (int):
name (str):
organization (str):
description (Union[None, Unset, str]):
"""

id: int
name: str
organization: str
description: Union[None, Unset, str] = UNSET

additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:
id = self.id

name = self.name

organization = self.organization

description: Union[None, Unset, str]
if isinstance(self.description, Unset):
description = UNSET
else:
description = self.description

field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update(
{
"id": id,
"name": name,
"organization": organization,
}
)
if description is not UNSET:
field_dict["description"] = description

return field_dict

def to_multipart(self) -> Dict[str, Any]:
id = self.id if isinstance(self.id, Unset) else (None, str(self.id).encode(), "text/plain")

name = self.name if isinstance(self.name, Unset) else (None, str(self.name).encode(), "text/plain")

organization = (
self.organization
if isinstance(self.organization, Unset)
else (None, str(self.organization).encode(), "text/plain")
)

description: Union[None, Unset, str]
if isinstance(self.description, Unset):
description = UNSET
else:
description = self.description

field_dict: Dict[str, Any] = {}
field_dict.update(
{key: (None, str(value).encode(), "text/plain") for key, value in self.additional_properties.items()}
)
field_dict.update(
{
"id": id,
"name": name,
"organization": organization,
}
)
if description is not UNSET:
field_dict["description"] = description

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy() if src_dict else {}
id = d.pop("id")

name = d.pop("name")

organization = d.pop("organization")

def _parse_description(data: object) -> Union[None, Unset, str]:
if data is None:
return data
if isinstance(data, Unset):
return data
return cast(Union[None, Unset, str], data)

description = _parse_description(d.pop("description", UNSET))

repository = cls(
id=id,
name=name,
organization=organization,
description=description,
)

repository.additional_properties = d
return repository

@property
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> Any:
return self.additional_properties[key]

def __setitem__(self, key: str, value: Any) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
del self.additional_properties[key]

def __contains__(self, key: str) -> bool:
return key in self.additional_properties
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "premai"
version = "0.3.55"
version = "0.3.56"
description = "A client library for accessing Prem APIs"
authors = []
readme = "README.md"
Expand Down

0 comments on commit feaaac7

Please sign in to comment.