@@ -56,8 +56,8 @@ def rolling_std_usecase(obj, window, min_periods, ddof):
5656 return obj .rolling (window , min_periods ).std (ddof )
5757
5858
59- def series_rolling_var_usecase ( series , window , min_periods , ddof ):
60- return series .rolling (window , min_periods ).var (ddof )
59+ def rolling_var_usecase ( obj , window , min_periods , ddof ):
60+ return obj .rolling (window , min_periods ).var (ddof )
6161
6262
6363class TestRolling (TestCase ):
@@ -807,6 +807,29 @@ def test_impl(obj, window, min_periods):
807807 ref_result = test_impl (obj , window , min_periods )
808808 assert_equal (jit_result , ref_result )
809809
810+ def _test_rolling_var (self , obj ):
811+ test_impl = rolling_var_usecase
812+ hpat_func = self .jit (test_impl )
813+ assert_equal = self ._get_assert_equal (obj )
814+
815+ for window in range (0 , len (obj ) + 3 , 2 ):
816+ for min_periods , ddof in product (range (0 , window , 2 ), [0 , 1 ]):
817+ with self .subTest (obj = obj , window = window ,
818+ min_periods = min_periods , ddof = ddof ):
819+ jit_result = hpat_func (obj , window , min_periods , ddof )
820+ ref_result = test_impl (obj , window , min_periods , ddof )
821+ assert_equal (jit_result , ref_result )
822+
823+ def _test_rolling_var_exception_unsupported_ddof (self , obj ):
824+ test_impl = rolling_var_usecase
825+ hpat_func = self .jit (test_impl )
826+
827+ window , min_periods , invalid_ddof = 3 , 2 , '1'
828+ with self .assertRaises (TypingError ) as raises :
829+ hpat_func (obj , window , min_periods , invalid_ddof )
830+ msg = 'Method rolling.var(). The object ddof\n given: unicode_type\n expected: int'
831+ self .assertIn (msg , str (raises .exception ))
832+
810833 @skip_sdc_jit ('DataFrame.rolling.min() unsupported exceptions' )
811834 def test_df_rolling_unsupported_values (self ):
812835 all_data = test_global_input_data_float64
@@ -1075,6 +1098,28 @@ def test_df_rolling_sum(self):
10751098
10761099 self ._test_rolling_sum (df )
10771100
1101+ @skip_sdc_jit ('DataFrame.rolling.var() unsupported' )
1102+ def test_df_rolling_var (self ):
1103+ all_data = [
1104+ list (range (10 )), [1. , - 1. , 0. , 0.1 , - 0.1 ],
1105+ [1. , np .inf , np .inf , - 1. , 0. , np .inf , np .NINF , np .NINF ],
1106+ [np .nan , np .inf , np .inf , np .nan , np .nan , np .nan , np .NINF , np .NZERO ]
1107+ ]
1108+ length = min (len (d ) for d in all_data )
1109+ data = {n : d [:length ] for n , d in zip (string .ascii_uppercase , all_data )}
1110+ df = pd .DataFrame (data )
1111+
1112+ self ._test_rolling_var (df )
1113+
1114+ @skip_sdc_jit ('DataFrame.rolling.var() unsupported exceptions' )
1115+ def test_df_rolling_var_exception_unsupported_ddof (self ):
1116+ all_data = [[1. , - 1. , 0. , 0.1 , - 0.1 ], [- 1. , 1. , 0. , - 0.1 , 0.1 ]]
1117+ length = min (len (d ) for d in all_data )
1118+ data = {n : d [:length ] for n , d in zip (string .ascii_uppercase , all_data )}
1119+ df = pd .DataFrame (data )
1120+
1121+ self ._test_rolling_var_exception_unsupported_ddof (df )
1122+
10781123 @skip_sdc_jit ('Series.rolling.min() unsupported exceptions' )
10791124 def test_series_rolling_unsupported_values (self ):
10801125 series = pd .Series (test_global_input_data_float64 [0 ])
@@ -1335,9 +1380,6 @@ def test_series_rolling_sum(self):
13351380
13361381 @skip_sdc_jit ('Series.rolling.var() unsupported Series index' )
13371382 def test_series_rolling_var (self ):
1338- test_impl = series_rolling_var_usecase
1339- hpat_func = self .jit (test_impl )
1340-
13411383 all_data = [
13421384 list (range (10 )), [1. , - 1. , 0. , 0.1 , - 0.1 ],
13431385 [1. , np .inf , np .inf , - 1. , 0. , np .inf , np .NINF , np .NINF ],
@@ -1346,24 +1388,12 @@ def test_series_rolling_var(self):
13461388 indices = [list (range (len (data )))[::- 1 ] for data in all_data ]
13471389 for data , index in zip (all_data , indices ):
13481390 series = pd .Series (data , index , name = 'A' )
1349- for window in range (0 , len (series ) + 3 , 2 ):
1350- for min_periods , ddof in product (range (0 , window , 2 ), [0 , 1 ]):
1351- with self .subTest (series = series , window = window ,
1352- min_periods = min_periods , ddof = ddof ):
1353- jit_result = hpat_func (series , window , min_periods , ddof )
1354- ref_result = test_impl (series , window , min_periods , ddof )
1355- pd .testing .assert_series_equal (jit_result , ref_result )
1391+ self ._test_rolling_var (series )
13561392
13571393 @skip_sdc_jit ('Series.rolling.var() unsupported exceptions' )
13581394 def test_series_rolling_var_exception_unsupported_ddof (self ):
1359- test_impl = series_rolling_var_usecase
1360- hpat_func = self .jit (test_impl )
1361-
13621395 series = pd .Series ([1. , - 1. , 0. , 0.1 , - 0.1 ])
1363- with self .assertRaises (TypingError ) as raises :
1364- hpat_func (series , 3 , 2 , '1' )
1365- msg = 'Method rolling.var(). The object ddof\n given: unicode_type\n expected: int'
1366- self .assertIn (msg , str (raises .exception ))
1396+ self ._test_rolling_var_exception_unsupported_ddof (series )
13671397
13681398
13691399if __name__ == "__main__" :
0 commit comments