also non ufunc reductions also avoid this function `get_ufunc_arguments`, but its got too many extra features to be easily reusable