@@ -182,6 +182,35 @@ def rmdir(self, path=None):
182
182
if self .fs .isdir (store_path ):
183
183
self .fs .rm (store_path , recursive = True )
184
184
185
+ @property
186
+ def supports_efficient_get_partial_values (self ):
187
+ return True
188
+
189
+ def get_partial_values (self , key_ranges ):
190
+ """Get multiple partial values.
191
+ key_ranges can be an iterable of key, range pairs,
192
+ where a range specifies two integers range_start and range_length
193
+ as a tuple, (range_start, range_length).
194
+ range_length may be None to indicate to read until the end.
195
+ range_start may be negative to start reading range_start bytes
196
+ from the end of the file.
197
+ A key may occur multiple times with different ranges.
198
+ Inserts None for missing keys into the returned list."""
199
+ results = []
200
+ for key , (range_start , range_length ) in key_ranges :
201
+ key = self ._normalize_key (key )
202
+ path = self .dir_path (key )
203
+ try :
204
+ if range_start is None or range_length is None :
205
+ end = None
206
+ else :
207
+ end = range_start + range_length
208
+ result = self .fs .cat_file (path , start = range_start , end = end )
209
+ except self .map .missing_exceptions :
210
+ result = None
211
+ results .append (result )
212
+ return results
213
+
185
214
186
215
class MemoryStoreV3 (MemoryStore , StoreV3 ):
187
216
0 commit comments