Spaces:
Runtime error
Runtime error
# | |
# This is the CLIENT-side abstraction for an invocable. | |
# | |
# If you are implementing a package, see: steamship.invocable.server.App | |
# | |
from __future__ import annotations | |
from typing import Any, Optional, Type | |
from pydantic import BaseModel, Field | |
from steamship.base.client import Client | |
from steamship.base.model import CamelModel | |
from steamship.base.request import CreateRequest, GetRequest, UpdateRequest | |
from steamship.data.manifest import Manifest | |
class PackageCreateRequest(CreateRequest): | |
is_public: bool = False | |
fetch_if_exists = False | |
profile: Optional[Manifest] = None | |
class PackageUpdateRequest(UpdateRequest): | |
id: Optional[str] = None | |
handle: Optional[str] = None | |
description: Optional[str] = None | |
profile: Optional[Manifest] = None | |
readme: Optional[str] = None | |
class Package(CamelModel): | |
client: Client = Field(None, exclude=True) | |
id: str = None | |
handle: str = None | |
user_id: str = None | |
profile: Optional[Manifest] = None | |
description: Optional[str] = None | |
readme: Optional[str] = None | |
is_public: bool = False | |
def parse_obj(cls: Type[BaseModel], obj: Any) -> BaseModel: | |
# TODO (enias): This needs to be solved at the engine side | |
obj = obj["package"] if "package" in obj else obj | |
return super().parse_obj(obj) | |
def create( | |
client: Client, | |
handle: str = None, | |
profile: Manifest = None, | |
is_public=False, | |
fetch_if_exists=False, | |
) -> Package: | |
req = PackageCreateRequest( | |
handle=handle, profile=profile, is_public=is_public, fetch_if_exists=fetch_if_exists | |
) | |
return client.post("package/create", payload=req, expect=Package) | |
def get(client: Client, handle: str) -> Package: | |
return client.post("package/get", GetRequest(handle=handle), expect=Package) | |
def update(self, client: Client) -> Package: | |
return client.post( | |
"package/update", | |
PackageUpdateRequest( | |
id=self.id, description=self.description, profile=self.profile, readme=self.readme | |
), | |
expect=Package, | |
) | |