@@ -965,21 +965,22 @@ class CmpOpLESeries(SeriesCompEqual):
965965class CmpOpLTSeries (SeriesCompEqual ):
966966 key = '<'
967967
968- # @infer_global(operator.getitem)
969- # class GetItemBuffer(AbstractTemplate):
970- # key = operator.getitem
971968
972- # def generic(self, args, kws):
973- # assert not kws
974- # [ary, idx] = args
975- # import pdb; pdb.set_trace()
976- # if not isinstance(ary, SeriesType):
977- # return
978- # out = get_array_index_type(ary, idx)
979- # # check result to be dt64 since it might be sliced array
980- # # replace result with Timestamp
981- # if out is not None and out.result == types.NPDatetime('ns'):
982- # return signature(pandas_timestamp_type, ary, out.index)
969+ if sdc .config .config_pipeline_hpat_default :
970+ @infer_global (operator .getitem )
971+ class GetItemBuffer (AbstractTemplate ):
972+ key = operator .getitem
973+
974+ def generic (self , args , kws ):
975+ assert not kws
976+ [ary , idx ] = args
977+ if not isinstance (ary , SeriesType ):
978+ return
979+ out = get_array_index_type (ary , idx )
980+ # check result to be dt64 since it might be sliced array
981+ # replace result with Timestamp
982+ if out is not None and out .result == types .NPDatetime ('ns' ):
983+ return signature (pandas_timestamp_type , ary , out .index )
983984
984985
985986def install_array_method (name , generic ):
@@ -1105,44 +1106,44 @@ def generic(self, args, kws):
11051106 sig .return_type = pandas_timestamp_type
11061107 return sig
11071108
1109+ if sdc .config .config_pipeline_hpat_default :
1110+ @infer_global (operator .setitem )
1111+ class SetItemSeries (SetItemBuffer ):
1112+ def generic (self , args , kws ):
1113+ assert not kws
1114+ series , idx , val = args
1115+ if not isinstance (series , SeriesType ):
1116+ return None
1117+ # TODO: handle any of args being Series independently
1118+ ary = series_to_array_type (series )
1119+ is_idx_series = False
1120+ if isinstance (idx , SeriesType ):
1121+ idx = series_to_array_type (idx )
1122+ is_idx_series = True
1123+ is_val_series = False
1124+ if isinstance (val , SeriesType ):
1125+ val = series_to_array_type (val )
1126+ is_val_series = True
1127+ # TODO: strings, dt_index
1128+ res = super (SetItemSeries , self ).generic ((ary , idx , val ), kws )
1129+ if res is not None :
1130+ new_series = if_arr_to_series_type (res .args [0 ])
1131+ idx = res .args [1 ]
1132+ val = res .args [2 ]
1133+ if is_idx_series :
1134+ idx = if_arr_to_series_type (idx )
1135+ if is_val_series :
1136+ val = if_arr_to_series_type (val )
1137+ res .args = (new_series , idx , val )
1138+ return res
11081139
1109- @infer_global (operator .setitem )
1110- class SetItemSeries (SetItemBuffer ):
1111- def generic (self , args , kws ):
1112- assert not kws
1113- series , idx , val = args
1114- if not isinstance (series , SeriesType ):
1115- return None
1116- # TODO: handle any of args being Series independently
1117- ary = series_to_array_type (series )
1118- is_idx_series = False
1119- if isinstance (idx , SeriesType ):
1120- idx = series_to_array_type (idx )
1121- is_idx_series = True
1122- is_val_series = False
1123- if isinstance (val , SeriesType ):
1124- val = series_to_array_type (val )
1125- is_val_series = True
1126- # TODO: strings, dt_index
1127- res = super (SetItemSeries , self ).generic ((ary , idx , val ), kws )
1128- if res is not None :
1129- new_series = if_arr_to_series_type (res .args [0 ])
1130- idx = res .args [1 ]
1131- val = res .args [2 ]
1132- if is_idx_series :
1133- idx = if_arr_to_series_type (idx )
1134- if is_val_series :
1135- val = if_arr_to_series_type (val )
1136- res .args = (new_series , idx , val )
1137- return res
1138-
1139-
1140- @infer_global (operator .setitem )
1141- class SetItemSeriesIat (SetItemSeries ):
1142- def generic (self , args , kws ):
1143- # iat[] is the same as regular setitem
1144- if isinstance (args [0 ], SeriesIatType ):
1145- return SetItemSeries .generic (self , (args [0 ].stype , args [1 ], args [2 ]), kws )
1140+ if sdc .config .config_pipeline_hpat_default :
1141+ @infer_global (operator .setitem )
1142+ class SetItemSeriesIat (SetItemSeries ):
1143+ def generic (self , args , kws ):
1144+ # iat[] is the same as regular setitem
1145+ if isinstance (args [0 ], SeriesIatType ):
1146+ return SetItemSeries .generic (self , (args [0 ].stype , args [1 ], args [2 ]), kws )
11461147
11471148
11481149inplace_ops = [
0 commit comments