in Extractors/Python/extractor/xmlnodegenerator.py [0:0]
def visitAugmentedAssignmentStatement(self, assignmentStatement: ast.Assign):
''' Visits an augmented assignment statement
AugAssign(expr target, operator op, expr value) '''
result = ET.Element("AugmentedAssign")
result.append(self.visitExpression(assignmentStatement.target))
if isinstance(assignmentStatement.op, ast.Add):
result.set("op", "Plus") # +=
elif isinstance(assignmentStatement.op, ast.Sub):
result.set("op", "Minus") # -=
elif isinstance(assignmentStatement.op, ast.Mult):
result.set("op", "Multiply") # *=
elif isinstance(assignmentStatement.op, ast.Div):
result.set("op", "Divide") # /=
elif isinstance(assignmentStatement.op, ast.Mod):
result.set("op", "Mod") # %=
elif isinstance(assignmentStatement.op, ast.Pow):
result.set("op", "Power") # **=
elif isinstance(assignmentStatement.op, ast.LShift):
result.set("op", "LeftShift") # >>=
elif isinstance(assignmentStatement.op, ast.RShift):
result.set("op", "RightShift") # <<=
elif isinstance(assignmentStatement.op, ast.And):
result.set("op", "And") # &=
elif isinstance(assignmentStatement.op, ast.Or):
result.set("op", "Or") # |=
elif isinstance(assignmentStatement.op, ast.BitXor):
result.set("op", "Xor") # ^=
elif isinstance(assignmentStatement.op, ast.FloorDiv):
result.set("op", "FloorDiv") # //=
else:
raise NotImplementedError("Unimplemented augmented operator: " + str(type(assignmentStatement.op)))
result.append(self.visitExpression(assignmentStatement.value))
return result