Skip to content

Sandbox.upload_file assumes io.FileIO #36

Closed
@bengladwell

Description

@bengladwell

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    improvementImprovement for current functionality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions