title: Fabric - Python 3 - What is context and what does it have to contain and why do I need to pass it?
body: <p>This is my fabric code:</p>
  
  <pre><code>from fabric import Connection, task
  
  server = Connection(host="usrename@server.com:22", connect_kwargs={"password": "mypassword"})
  
  @task
  def dostuff(somethingmustbehere):
      server.run("uname -a")
  </code></pre>
  
  <p>This code works just fine. When I execute <code>fab dostuff</code> it does what I want it to do.</p>
  
  <p>When I remove <code>somethingmustbehere</code> however I get this error message:</p>
  
  <pre><code>    raise TypeError("Tasks must have an initial Context argument!")
  TypeError: Tasks must have an initial Context argument!
  </code></pre>
  
  <p>I never defined <code>somethingmustbehere</code> anywhere in my code. I just put it in and the error is gone and everything works. But why? What is this variable? Why do I need it? Why is it so important? And if it is so important why can it just be empty? I am really lost here. Yes it works, but I cannot run code that I don't understand. It drives me insane. :-)</p>
  
  <p>Please be aware that I'm talking about the Python 3(!) version of Fabric!
  The Fabric version is 2.4.0</p>