Python

Python Mutations

StatementBlock

Before

def f():
    pass

After

def f():
    pass

Condition

Before

x = True
if x:
    pass

After

x = True
if True:
    pass
x = True
if False:
    pass

BinaryOp - Add

Before

x = 1 + 2

After

x = 1 - 2
x = 1 * 2

BinaryOp - And

Before

a = True
b = False
x = a and b

After

a = True
b = False
x = a or b

BinaryOp - BitAnd

Before

x = 1 & 2

After

x = 1 | 2
x = 1 ^ 2

BinaryOp - BitOr

Before

x = 1 | 2

After

x = 1 & 2
x = 1 ^ 2

BinaryOp - BitXor

Before

x = 1 ^ 2

After

x = 1 & 2
x = 1 | 2

BinaryOp - Div

Before

x = 1 / 2

After

x = 1 * 2
x = 1 - 2

BinaryOp - Eq

Before

a = 1
b = 2
x = a == b

After

a = 1
b = 2
x = a != b

BinaryOp - Exp

Before

x = 2 ** 3

After

x = 2 * 3
x = 2 // 3

BinaryOp - FloorDiv

Before

x = 7 // 2

After

x = 7 / 2
x = 7 * 2

BinaryOp - Gt

Before

a = 1
b = 2
x = a > b

After

a = 1
b = 2
x = a <= b
a = 1
b = 2
x = a >= b

BinaryOp - In

Before

x = needle in haystack

After

x = needle not in haystack

BinaryOp - Is

Before

a = None
x = a is None

After

a = None
x = a is not None

BinaryOp - IsNot

Before

a = None
x = a is not None

After

a = None
x = a is None

BinaryOp - NotIn

Before

a = [1, 2, 3]
x = 4 not in a

After

a = [1, 2, 3]
x = 4 in a

BinaryOp - Gte

Before

a = 1
b = 2
x = a >= b

After

a = 1
b = 2
x = a < b
a = 1
b = 2
x = a > b

BinaryOp - Lt

Before

a = 1
b = 2
x = a < b

After

a = 1
b = 2
x = a >= b
a = 1
b = 2
x = a <= b

BinaryOp - Lte

Before

a = 1
b = 2
x = a <= b

After

a = 1
b = 2
x = a > b
a = 1
b = 2
x = a < b

BinaryOp - Mul

Before

x = 1 * 2

After

x = 1 / 2
x = 1 + 2

BinaryOp - Or

Before

a = True
b = False
x = a or b

After

a = True
b = False
x = a and b

BinaryOp - Rem

Before

x = 1 % 2

After

x = 1 * 2
x = 1 / 2

BinaryOp - Shl

Before

x = 1 << 2

After

x = 1 >> 2

BinaryOp - Shr

Before

x = 1 >> 2

After

x = 1 << 2

BinaryOp - Ne

Before

a = 1
b = 2
x = a != b

After

a = 1
b = 2
x = a == b

BinaryOp - Sub

Before

x = 1 - 2

After

x = 1 + 2
x = 1 / 2

Assign - AddAssign

Before

x = 42
x += 7

After

x = 42
x -= 7
x = 42
x = 7

Assign - BitAndAssign

Before

x = 42
x &= 7

After

x = 42
x |= 7
x = 42
x = 7

Assign - BitOrAssign

Before

x = 42
x |= 7

After

x = 42
x &= 7
x = 42
x = 7

Assign - BitXorAssign

Before

x = 42
x ^= 7

After

x = 42
x &= 7
x = 42
x = 7

Assign - DivAssign

Before

x = 42
x /= 7

After

x = 42
x *= 7
x = 42
x = 7

Assign - ExpAssign

Before

x = 2
x **= 3

After

x = 2
x *= 3
x = 2
x = 3

Assign - FloorDivAssign

Before

x = 7
x //= 2

After

x = 7
x /= 2
x = 7
x = 2

Assign - MulAssign

Before

x = 42
x *= 7

After

x = 42
x /= 7
x = 42
x = 7

Assign - NormalAssign

Before

x = 1

After

x += 1
x -= 1

Assign - RemAssign

Before

x = 42
x %= 7

After

x = 42
x *= 7
x = 42
x = 7

Assign - ShlAssign

Before

x = 42
x <<= 7

After

x = 42
x >>= 7
x = 42
x = 7

Assign - ShrAssign

Before

x = 42
x >>= 7

After

x = 42
x <<= 7
x = 42
x = 7

Assign - SubAssign

Before

x = 42
x -= 7

After

x = 42
x += 7
x = 42
x = 7

ArrayDecl - Inline

Before

[1, 2, 3]

After

[]

Literal - BoolTrue

Before

True

After

False

Literal - BoolFalse

Before

False

After

True

Literal - String

Before

'foo'

After

""

Literal - EmptyString

Before

''

After

"bough"

Literal - Number

Before

123

After

0
1
-1
float('inf')
float('-inf')
float('nan')

DictDecl

Before

{x for x in [1, 2, 3]}

After

{}

TupleDecl

Before

(1, 2, 3)

After

()

Assert

Before

assert True

After

pass

UnaryNot

Before

a = True
x = not a

After

a = True
x =  a