@@ -812,17 +812,20 @@ def convert_to_slice(expression):
812812 if expr_i == "[" :
813813 k = expression [i :].find ("]" ) # start checking from after [
814814 slice_convert = expression [i : i + k + 1 ] # include [ and ]
815- slicer = eval (f"np.s_{ slice_convert } " )
816- slicer = (slicer ,) if not isinstance (slicer , tuple ) else slicer # standardise to tuple
817- if any (isinstance (el , str ) for el in slicer ): # handle fields
818- raise ValueError ("Cannot handle fields for slicing lazy expressions." )
819- slicer = str (slicer )
820- # use slice so that lazyexpr uses blosc arrays internally
821- # (and doesn't decompress according to getitem syntax)
822- new_expr += f".slice({ slicer } )"
823- skip_to_char = i + k + 1
824- else :
825- new_expr += expr_i
815+ try :
816+ slicer = eval (f"np.s_{ slice_convert } " )
817+ slicer = (slicer ,) if not isinstance (slicer , tuple ) else slicer # standardise to tuple
818+ if any (isinstance (el , str ) for el in slicer ): # handle fields
819+ raise ValueError ("Cannot handle fields for slicing lazy expressions." )
820+ slicer = str (slicer )
821+ # use slice so that lazyexpr uses blosc arrays internally
822+ # (and doesn't decompress according to getitem syntax)
823+ new_expr += f".slice({ slicer } )"
824+ skip_to_char = i + k + 1
825+ continue
826+ except Exception :
827+ pass
828+ new_expr += expr_i # if slice_convert is e.g. a list, not a slice, do nothing
826829 return new_expr
827830
828831
0 commit comments