Spaces:
Runtime error
Runtime error
File size: 2,308 Bytes
bbd909e e0cbbfe bbd909e e0cbbfe bbd909e 88e5f68 e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe bbd909e e0cbbfe 8b66dd3 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 |
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 show_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')
# 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})"
|