大活
This commit is contained in:
158
art-agent/backend/venv/Lib/site-packages/replicate/version.py
Normal file
158
art-agent/backend/venv/Lib/site-packages/replicate/version.py
Normal file
@@ -0,0 +1,158 @@
|
||||
import datetime
|
||||
from typing import TYPE_CHECKING, Any, Dict, Tuple, Union
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from replicate.client import Client
|
||||
from replicate.model import Model
|
||||
|
||||
from replicate.pagination import Page
|
||||
from replicate.resource import Namespace, Resource
|
||||
|
||||
|
||||
class Version(Resource):
|
||||
"""
|
||||
A version of a model.
|
||||
"""
|
||||
|
||||
id: str
|
||||
"""The unique ID of the version."""
|
||||
|
||||
created_at: datetime.datetime
|
||||
"""When the version was created."""
|
||||
|
||||
cog_version: str
|
||||
"""The version of the Cog used to create the version."""
|
||||
|
||||
openapi_schema: dict
|
||||
"""An OpenAPI description of the model inputs and outputs."""
|
||||
|
||||
|
||||
class Versions(Namespace):
|
||||
"""
|
||||
Namespace for operations related to model versions.
|
||||
"""
|
||||
|
||||
model: Tuple[str, str]
|
||||
|
||||
def __init__(
|
||||
self, client: "Client", model: Union[str, Tuple[str, str], "Model"]
|
||||
) -> None:
|
||||
super().__init__(client=client)
|
||||
|
||||
from replicate.model import Model # pylint: disable=import-outside-toplevel
|
||||
|
||||
if isinstance(model, Model):
|
||||
self.model = (model.owner, model.name)
|
||||
elif isinstance(model, str):
|
||||
owner, name = model.split("/", 1)
|
||||
self.model = (owner, name)
|
||||
else:
|
||||
self.model = model
|
||||
|
||||
def get(self, id: str) -> Version:
|
||||
"""
|
||||
Get a specific model version.
|
||||
|
||||
Args:
|
||||
id: The version ID.
|
||||
Returns:
|
||||
The model version.
|
||||
"""
|
||||
|
||||
resp = self._client._request(
|
||||
"GET", f"/v1/models/{self.model[0]}/{self.model[1]}/versions/{id}"
|
||||
)
|
||||
|
||||
return _json_to_version(resp.json())
|
||||
|
||||
async def async_get(self, id: str) -> Version:
|
||||
"""
|
||||
Get a specific model version.
|
||||
|
||||
Args:
|
||||
id: The version ID.
|
||||
Returns:
|
||||
The model version.
|
||||
"""
|
||||
|
||||
resp = await self._client._async_request(
|
||||
"GET", f"/v1/models/{self.model[0]}/{self.model[1]}/versions/{id}"
|
||||
)
|
||||
|
||||
return _json_to_version(resp.json())
|
||||
|
||||
def list(self) -> Page[Version]:
|
||||
"""
|
||||
Return a list of all versions for a model.
|
||||
|
||||
Returns:
|
||||
List[Version]: A list of version objects.
|
||||
"""
|
||||
|
||||
resp = self._client._request(
|
||||
"GET", f"/v1/models/{self.model[0]}/{self.model[1]}/versions"
|
||||
)
|
||||
obj = resp.json()
|
||||
obj["results"] = [_json_to_version(result) for result in obj["results"]]
|
||||
|
||||
return Page[Version](**obj)
|
||||
|
||||
async def async_list(self) -> Page[Version]:
|
||||
"""
|
||||
Return a list of all versions for a model.
|
||||
|
||||
Returns:
|
||||
List[Version]: A list of version objects.
|
||||
"""
|
||||
|
||||
resp = await self._client._async_request(
|
||||
"GET", f"/v1/models/{self.model[0]}/{self.model[1]}/versions"
|
||||
)
|
||||
obj = resp.json()
|
||||
obj["results"] = [_json_to_version(result) for result in obj["results"]]
|
||||
|
||||
return Page[Version](**obj)
|
||||
|
||||
def delete(self, id: str) -> bool:
|
||||
"""
|
||||
Delete a model version and all associated predictions, including all output files.
|
||||
|
||||
Model version deletion has some restrictions:
|
||||
|
||||
* You can only delete versions from models you own.
|
||||
* You can only delete versions from private models.
|
||||
* You cannot delete a version if someone other than you
|
||||
has run predictions with it.
|
||||
|
||||
Args:
|
||||
id: The version ID.
|
||||
"""
|
||||
|
||||
resp = self._client._request(
|
||||
"DELETE", f"/v1/models/{self.model[0]}/{self.model[1]}/versions/{id}"
|
||||
)
|
||||
return resp.status_code == 204
|
||||
|
||||
async def async_delete(self, id: str) -> bool:
|
||||
"""
|
||||
Delete a model version and all associated predictions, including all output files.
|
||||
|
||||
Model version deletion has some restrictions:
|
||||
|
||||
* You can only delete versions from models you own.
|
||||
* You can only delete versions from private models.
|
||||
* You cannot delete a version if someone other than you
|
||||
has run predictions with it.
|
||||
|
||||
Args:
|
||||
id: The version ID.
|
||||
"""
|
||||
|
||||
resp = await self._client._async_request(
|
||||
"DELETE", f"/v1/models/{self.model[0]}/{self.model[1]}/versions/{id}"
|
||||
)
|
||||
return resp.status_code == 204
|
||||
|
||||
|
||||
def _json_to_version(json: Dict[str, Any]) -> Version:
|
||||
return Version(**json)
|
||||
Reference in New Issue
Block a user