Spaces:
Runtime error
Runtime error
File size: 2,385 Bytes
bbd909e e0cbbfe bbd909e e0cbbfe bbd909e 88e5f68 e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe b1ef552 bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe 8b66dd3 b1ef552 bbd909e 8b66dd3 a3149bd 8b66dd3 e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import asyncio
from pydantic import BaseModel
class File(BaseModel):
name: str
content: bytes
@classmethod
def from_path(cls, path: str):
with open(path, "rb") as f:
path = path.split("/")[-1]
return cls(name=path, content=f.read())
@classmethod
async def afrom_path(cls, path: str):
return await asyncio.to_thread(cls.from_path, path)
@classmethod
def from_url(cls, url: str):
import requests # type: ignore
r = requests.get(url)
return cls(name=url.split("/")[-1], content=r.content)
@classmethod
async def afrom_url(cls, url: str):
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get(url) as r:
return cls(name=url.split("/")[-1], content=await r.read())
def save(self, path: str):
with open(path, "wb") as f:
f.write(self.content)
async def asave(self, path: str):
await asyncio.to_thread(self.save, path)
def get_image(self):
try:
from PIL import Image # type: ignore
except ImportError:
print(
"Please install it with `pip install codeinterpreterapi[image_support]` to display images."
)
exit(1)
from io import BytesIO
img_io = BytesIO(self.content)
img = Image.open(img_io)
# Convert image to RGB if it's not
if img.mode not in ('RGB', 'L'): # L is for greyscale images
img = img.convert('RGB')
return img
def show_image(self):
img = self.get_image()
# Display the image
try:
# Try to get the IPython shell if available.
shell = get_ipython().__class__.__name__ # type: ignore
# If the shell is ZMQInteractiveShell, it means we're in a Jupyter notebook or similar.
if shell == 'ZMQInteractiveShell':
from IPython.display import display
display(img)
else:
# We're not in a Jupyter notebook.
img.show()
except NameError:
# We're probably not in an IPython environment, use PIL's show.
img.show()
def __str__(self):
return self.name
def __repr__(self):
return f"File(name={self.name})"
|