@@ -798,28 +798,30 @@ def cat(self, path, recursive=False, on_error="raise", **kwargs):
798
798
out = {}
799
799
for proto , paths in proto_dict .items ():
800
800
fs = self .fss [proto ]
801
- urls , starts , ends = [], [], []
801
+ urls , starts , ends , valid_paths = [], [], [], []
802
802
for p in paths :
803
803
# find references or label not-found. Early exit if any not
804
804
# found and on_error is "raise"
805
805
try :
806
806
u , s , e = self ._cat_common (p )
807
- urls .append (u )
808
- starts .append (s )
809
- ends .append (e )
810
807
except FileNotFoundError as err :
811
808
if on_error == "raise" :
812
809
raise
813
810
if on_error != "omit" :
814
811
out [p ] = err
812
+ else :
813
+ urls .append (u )
814
+ starts .append (s )
815
+ ends .append (e )
816
+ valid_paths .append (p )
815
817
816
818
# process references into form for merging
817
819
urls2 = []
818
820
starts2 = []
819
821
ends2 = []
820
822
paths2 = []
821
823
whole_files = set ()
822
- for u , s , e , p in zip (urls , starts , ends , paths ):
824
+ for u , s , e , p in zip (urls , starts , ends , valid_paths ):
823
825
if isinstance (u , bytes ):
824
826
# data
825
827
out [p ] = u
@@ -831,7 +833,7 @@ def cat(self, path, recursive=False, on_error="raise", **kwargs):
831
833
starts2 .append (s )
832
834
ends2 .append (e )
833
835
paths2 .append (p )
834
- for u , s , e , p in zip (urls , starts , ends , paths ):
836
+ for u , s , e , p in zip (urls , starts , ends , valid_paths ):
835
837
# second run to account for files that are to be loaded whole
836
838
if s is not None and u not in whole_files :
837
839
urls2 .append (u )
@@ -851,7 +853,7 @@ def cat(self, path, recursive=False, on_error="raise", **kwargs):
851
853
bytes_out = fs .cat_ranges (new_paths , new_starts , new_ends )
852
854
853
855
# unbundle from merged bytes - simple approach
854
- for u , s , e , p in zip (urls , starts , ends , paths ):
856
+ for u , s , e , p in zip (urls , starts , ends , valid_paths ):
855
857
if p in out :
856
858
continue # was bytes, already handled
857
859
for np , ns , ne , b in zip (new_paths , new_starts , new_ends , bytes_out ):
0 commit comments