code: def signature(self, node, frame, extra_kwargs=None):
          
          # if any of the given keyword arguments is a python keyword
          # we have to make sure that no invalid call is created.
          kwarg_workaround = False
          for kwarg in chain((x.key for x in node.kwargs), extra_kwargs or ()):
              if is_python_keyword(kwarg):
                  kwarg_workaround = True
                  break
  
          for arg in node.args:
              self.write(', ')
              self.visit(arg, frame)
  
          if not kwarg_workaround:
              for kwarg in node.kwargs:
                  self.write(', ')
                  self.visit(kwarg, frame)
              if extra_kwargs is not None:
                  for key, value in iteritems(extra_kwargs):
                      self.write(', %s=%s' % (key, value))
          if node.dyn_args:
              self.write(', *')
              self.visit(node.dyn_args, frame)
  
          if kwarg_workaround:
              if node.dyn_kwargs is not None:
                  self.write(', **dict({')
              else:
                  self.write(', **{')
              for kwarg in node.kwargs:
                  self.write('%r: ' % kwarg.key)
                  self.visit(kwarg.value, frame)
                  self.write(', ')
              if extra_kwargs is not None:
                  for key, value in iteritems(extra_kwargs):
                      self.write('%r: %s, ' % (key, value))
              if node.dyn_kwargs is not None:
                  self.write('}, **')
                  self.visit(node.dyn_kwargs, frame)
                  self.write(')')
              else:
                  self.write('}')
  
          elif node.dyn_kwargs is not None:
              self.write(', **')
              self.visit(node.dyn_kwargs, frame)
docs: Writes a function call to the stream for the current node.
          A leading comma is added automatically.  The extra keyword
          arguments may not include python keywords otherwise a syntax
          error could occour.  The extra keyword arguments should be given
          as python dict.