python singledispatch multiple arguments