Open bengladwell opened 3 weeks ago
Hey @bengladwell, thank you for creating the issue! This is something we are fixing in the Beta SDK (https://github.com/e2b-dev/E2B/blob/beta/packages/python-sdk/e2b/sandbox_sync/filesystem/filesystem.py#L102) because you are correct that this is very unwieldy.
The Beta releases of the Core SDK and Code Interpreter SDK should have this change already (https://e2b.dev/docs/guide/beta-migration#uploading-data-and-creating-files-in-sandbox).
The Sandbox.upload_file method has the following signature:
However, it's not true that
file
must simply be typeIO
. Because.name
is called on that object:it seems that the method actually expects the object to be of type
FileIO
, a subtype ofIO
and the type that you get when you use the builtinopen
function.This is unwieldy when dealing with a file that is not stored on disk. In that case, I have access to the file's bytes and I have its filename. But I can't create a FileIO object to pass to
upload_file
without writing disk (creating a FileIO automatically writes to disk). In the meantime I am creating a subclass of BytesIO that has a name property. So, the duck type satisfies the requirements ofupload_file
. But I think it should be straightforward to upload a file that is not on disk.