@@ -213,26 +213,27 @@ async def get(
213213 path = _dereference_path (self .path , key )
214214
215215 try :
216- if byte_range is None :
217- value = prototype .buffer .from_bytes (await self .fs ._cat_file (path ))
218- elif isinstance (byte_range , ExplicitByteRequest ):
219- value = prototype .buffer .from_bytes (
220- await self .fs ._cat_file (
221- path ,
222- start = byte_range .start ,
223- end = byte_range .end ,
216+ match byte_range :
217+ case None :
218+ value = prototype .buffer .from_bytes (await self .fs ._cat_file (path ))
219+ case ExplicitByteRequest (start , end ):
220+ value = prototype .buffer .from_bytes (
221+ await self .fs ._cat_file (
222+ path ,
223+ start = start ,
224+ end = end ,
225+ )
224226 )
225- )
226- elif isinstance (byte_range , OffsetByteRequest ):
227- value = prototype .buffer .from_bytes (
228- await self .fs ._cat_file (path , start = byte_range .offset , end = None )
229- )
230- elif isinstance (byte_range , SuffixByteRequest ):
231- value = prototype .buffer .from_bytes (
232- await self .fs ._cat_file (path , start = - byte_range .suffix , end = None )
233- )
234- else :
235- raise ValueError ("Invalid format for ByteRangeRequest" )
227+ case OffsetByteRequest (offset ):
228+ value = prototype .buffer .from_bytes (
229+ await self .fs ._cat_file (path , start = offset , end = None )
230+ )
231+ case SuffixByteRequest (suffix ):
232+ value = prototype .buffer .from_bytes (
233+ await self .fs ._cat_file (path , start = - suffix , end = None )
234+ )
235+ case _:
236+ raise ValueError (f"Unexpected byte_range, got { byte_range } ." )
236237 except self .allowed_exceptions :
237238 return None
238239 except OSError as e :
@@ -290,20 +291,21 @@ async def get_partial_values(
290291 stops : list [int | None ] = []
291292 for key , byte_range in key_ranges :
292293 paths .append (_dereference_path (self .path , key ))
293- if byte_range is None :
294- starts .append (None )
295- stops .append (None )
296- elif isinstance (byte_range , ExplicitByteRequest ):
297- starts .append (byte_range .start )
298- stops .append (byte_range .end )
299- elif isinstance (byte_range , OffsetByteRequest ):
300- starts .append (byte_range .offset )
301- stops .append (None )
302- elif isinstance (byte_range , SuffixByteRequest ):
303- starts .append (- byte_range .suffix )
304- stops .append (None )
305- else :
306- raise ValueError ("Invalid format for ByteRangeRequest" )
294+ match byte_range :
295+ case None :
296+ starts .append (None )
297+ stops .append (None )
298+ case ExplicitByteRequest (start , end ):
299+ starts .append (start )
300+ stops .append (end )
301+ case OffsetByteRequest (offset ):
302+ starts .append (offset )
303+ stops .append (None )
304+ case SuffixByteRequest (suffix ):
305+ starts .append (- suffix )
306+ stops .append (None )
307+ case _:
308+ raise ValueError (f"Unexpected byte_range, got { byte_range } ." )
307309 else :
308310 return []
309311 # TODO: expectations for exceptions or missing keys?
0 commit comments