@@ -182,6 +182,35 @@ def rmdir(self, path=None):
182182 if self .fs .isdir (store_path ):
183183 self .fs .rm (store_path , recursive = True )
184184
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+
185214
186215class MemoryStoreV3 (MemoryStore , StoreV3 ):
187216
0 commit comments