code: def kwargs_as_assignments(call_node, parent):
      
      if not isinstance(call_node, ast.Call):
          raise TypeError('node must be an ast.Call')
  
      if len(call_node.args) > 0:
          raise ValueError('positional args not allowed')
  
      for keyword in call_node.keywords:
          dst_name = keyword.arg
  
          if dst_name.startswith('gl_'):
              # Write to builtins directly
              target = [ast.Name(id=keyword.arg, ctx=ast.Load())]
          else:
              # Non-builtins are part of an interface block
              target = [ast.Attribute(value=parent, attr=keyword.arg,
                                      ctx=ast.Store())]
  
          yield NoDeclAssign(targets=target, value=keyword.value)
docs: Yield NoDeclAssign nodes from kwargs in a Call node.