code-interpreter
                                
                                 code-interpreter copied to clipboard
                                
                                    code-interpreter copied to clipboard
                            
                            
                            
                        Sandbox.upload_file assumes io.FileIO
The Sandbox.upload_file method has the following signature:
def upload_file(self, file: IO, timeout: Optional[float] = TIMEOUT) -> str:
However, it's not true that file must simply be type IO. Because .name is called on that object:
        filename = path.basename(file.name)
it seems that the method actually expects the object to be of type FileIO, a subtype of IO and the type that you get when you use the builtin open 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 of upload_file. But I think it should be straightforward to upload a file that is not on disk.