Support for reading and writing data as simple "bytes" #570
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
From Issue #434: Tiled's data model constrains everything to be one of its recognized structure families (array, dataframe, sparse,
nodecontainer) or JSON-encodable metadata sitting alongside one of those types. There will be cases where there is binary (not JSON-encodable) information that is relevant and that some clients programs will know what to do with.Proposed Changes
Tiled should support serving assets as a stream of bytes, so that clients can download files (or other data streams) that do not readily fit into Tiled's other structure families. The metadata may include additional hints (such as MIME type) that help the client interpret the payload.
Below are several suggested changes that arose from the discussion in Issue #434 and additional offline discussions between @danielballan, @jmaruland, and me (@padraic-shafer).
The following aspects will need more discussion
Registering a file/object in the catalog
Slicing into the byte stream with a HTTP range request
Lazy loading of the "bytes" data
dask.bytes.[core.]read_bytes()
.Contents of the metadata's
structure
fielddata_source
field.structure
field empty (null
orNone
).