@@ -1183,3 +1183,23 @@ def test_validate_reindex():
11831183 for func in ["sum" , "argmax" ]:
11841184 actual = _validate_reindex (None , func , method , expected_groups = None , by_is_dask = False )
11851185 assert actual is False
1186+
1187+
1188+ @requires_dask
1189+ def test_1d_blockwise_sort_optimization ():
1190+ # Make sure for resampling problems sorting isn't done.
1191+ time = pd .Series (pd .date_range ("2020-09-01" , "2020-12-31 23:59" , freq = "3H" ))
1192+ array = dask .array .ones ((len (time ),), chunks = (224 ,))
1193+
1194+ actual , _ = groupby_reduce (array , time .dt .dayofyear .values , method = "blockwise" , func = "count" )
1195+ assert all ("getitem" not in k for k in actual .dask )
1196+
1197+ actual , _ = groupby_reduce (
1198+ array , time .dt .dayofyear .values [::- 1 ], sort = True , method = "blockwise" , func = "count"
1199+ )
1200+ assert any ("getitem" in k for k in actual .dask .layers )
1201+
1202+ actual , _ = groupby_reduce (
1203+ array , time .dt .dayofyear .values [::- 1 ], sort = False , method = "blockwise" , func = "count"
1204+ )
1205+ assert all ("getitem" not in k for k in actual .dask .layers )
0 commit comments