----
Change the calling conventions for sepiida.storage.get() and put(). First, put() now takes a parameter, compress, which will compress the data on the fly and cause the mimetype for the data to be altered to show that it is compressed. In order to make that work, second, put() now takes in a file-like object that must implement read(). This causes the storage layer to no longer require reading the full block of data in to memory but instead allows for streaming it to woodhouse which can in turn stream to disk or to S3, as the situation may require. On the flip side, storage.get() will now return a context manager object (for automatic closing) which streams the data from woodhouse and decompresses it if necessary
Pre-12.0 code such as:
with open('foo', 'rb') as f:
content = f.read()
sepiida.storage.put(key, bucket, content, 'application/text')
should now look like
with open('foo', 'rb') as f:
sepiida.storage.put(key, bucket, f, 'application/text')
and code that looked like
content = sepiida.storage.get(key)
should now look like
with sepiida.storage.get(key) as f:
content = f.read()