"""Config when the data (.bin) file and the index (.idx) file are in S3
TODO: These parameters are few and can be consolidated with parameters specific to bin reader
classes - @jkamalu
Attributes:
path_to_idx_cache (str): The local directory where we will store the index (.idx) file
bin_chunk_nbytes (int): If the number of bytes is too small, then we send a request to S3 at each call of the `read` method in _S3BinReader, which is slow, because each request has a fixed cost independent of the size of the byte range requested. If the number of bytes is too large, then we only rarely have to send requests to S3, but it takes a lot of time to complete the request when we do, which can block training. We've found that 256 * 1024 * 1024 (i.e., 256 MiB) has worked well (though we have not put that much effort into tuning it), so we default to it.
"""
path_to_idx_cache:str
bin_chunk_nbytes:int=256*1024*1024
classS3Client(Protocol):
"""The protocol which all s3 clients should abide by"""