Note that in your method declaration you specify *three* arguments, not four. When counting a number of arguments the method takes `**kwargs` is not taken into account, `*args` makes python throw exception only for insufficient number of arguments (and with “at least N arguments” in message) and other arguments are counted as usual.