aleph-im / aleph-sdk-python

Python SDK library for the Aleph.im network
MIT License
3 stars 5 forks source link

Downloads should use files on disk instead of bytes in RAM #37

Closed hoh closed 5 months ago

hoh commented 1 year ago

Downloading files currently stores everything in RAM, doing so in a new BytesIO object.

We should change the definition of the function or create a new one that saves the data on disk.

My proposal is to ask the user to pass a file-like object the function can write to.

This file-like object can be a buffer in memory, a file on disk or anything compatible with the interface.

For convenience, we could make that argument optional and return a NamedTemporaryFile if it is None.

_Originally posted by @hoh in https://github.com/aleph-im/aleph-sdk-python/pull/36#discussion_r1258473666_

odesenfans commented 1 year ago

What I told @1yam was to implement a generic function that takes a buffer, as you suggest. He already implemented it (see download_file_to_buffer().

On the other hand, I don't see the point of returning a temporary file if no buffer is specified. I think we should provide a download_to_file(file_hash, path) convenience function that uses download_file_to_buffer(). I say we leave the choice of where the file is located entirely to the user.