title: TypeError: got an unexpected keyword argument
body: <p>The seemingly simple code below throws the following error:</p>
  
  <pre class="lang-none prettyprint-override"><code>Traceback (most recent call last):
    File "/home/nirmal/process.py", line 165, in &lt;module&gt;
      'time_diff': f.last(adf['time_diff']).over(window_device_rows)
  TypeError: __call__() got an unexpected keyword argument 'this_campaign'
  </code></pre>
  
  <h2>Code:</h2>
  
  <pre><code># Function to flag network timeouts
  def flag_network_timeout(**kwargs):
      if kwargs['this_network'] != kwargs['last_network'] \
              or kwargs['this_campaign'] != kwargs['last_campaign'] \
              or kwargs['this_adgroup'] != kwargs['last_adgroup'] \
              or kwargs['this_creative'] != kwargs['last_creative'] \
              or kwargs['time_diff'] &gt; network_timeout:
          return 1
      else:
          return 0
  flag_network_timeout = f.udf(flag_network_timeout, IntegerType())
  
  # Column spec to go over the device events and flag network resets
  network_timeout_flag = flag_network_timeout(**{
      'last_network': f.first(adf['network']).over(window_device_rows),
      'last_campaign': f.first(adf['campaign']).over(window_device_rows),
      'last_adgroup': f.first(adf['adgroup']).over(window_device_rows),
      'last_creative': f.first(adf['creative']).over(window_device_rows),
      'this_network': f.last(adf['network']).over(window_device_rows),
      'this_campaign': f.last(adf['campaign']).over(window_device_rows),
      'this_adgroup': f.last(adf['adgroup']).over(window_device_rows),
      'this_creative': f.last(adf['creative']).over(window_device_rows),
      'time_diff': f.last(adf['time_diff']).over(window_device_rows)
  })
  
  # Update dataframe with the new columns
  adf = adf.select('*', network_timeout_flag.alias('network_timeout'))
  </code></pre>
  
  <p>What am I doing wrong please? Thank you.</p>