def visit_Assign(self, node, **kwargs):
if len(node.targets) != <NUM_LIT:1>:<EOL><INDENT>raise SyntaxError('<STR_LIT>')<EOL><DEDENT>if not isinstance(node.targets[<NUM_LIT:0>], ast.Name):<EOL><INDENT>raise SyntaxError('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>if self.env.target is None:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>try:<EOL><INDENT>assigner = self.visit(node.targets[<NUM_LIT:0>], **kwargs)<EOL><DEDENT>except UndefinedVariableError:<EOL><INDENT>assigner = node.targets[<NUM_LIT:0>].id<EOL><DEDENT>self.assigner = getattr(assigner, '<STR_LIT:name>', assigner)<EOL>if self.assigner is None:<EOL><INDENT>raise SyntaxError('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>return self.visit(node.value, **kwargs)<EOL>
support a single assignment node, like

c = a + b

set the assigner at the top level, must be a Name node which
might or might not exist in the resolvers