Skip to main content

A flake8 plugin to make sure complex conditional expressions and comprehension expressions are split over several lines.

Project description

flake8-multiline-conditionals-comprehensions

Build Status Build Status Build Status Build Status

flake8 plugin that works on conditional expressions and comprehension expressions to enforce each segment to be put on a new line.

Contents

Options

The flag --select_mcc2 can be used to select the set of errors to include. By default, the active errors are MCC200, MCC201, MCC202, MCC220, MCC221, MCC223.

Comprehension Errors

MCC200

A comprehension expression should place each of its generators on a separate line.

# Bad
[x+y for x in range(10) for y in range(10)]

# Good
[
    x + y
    for x in range(10)
    for y in range(10)
]

MCC201

A multiline comprehension expression should place each of its segments (map, generator, filter) on a separate line.

# Bad
[x+y for x in range(10) 
for y in range(10) if x+y > 5]

# Good
[
    x + y
    for x in range(10)
    for y in range(10)
    if x + y > 5
]

MCC202

A comprehension expression should not contain multiple filters.

# Bad
[x for x in range(10) if x % 2 == 0 if x % 3 == 0]

# Good
[x for x in range(10) if x % 2 == x % 3 == 0]

MCC203

A comprehension expression should not span over multiple lines.

# Bad
[x + y 
for x in range(10) ]

# Good
[x+y for x in range(10)]

MCC204

A comprehension expression should span over multiple lines.

# Bad
[x for x in range(10)]

# Good
[x 
for x in range(10)]

Condition Errors

MCC220

A multiline conditional expression should place each of its segments on a separate line.

# Bad
1 
if something() else 0

# Good
1
if something()
else 0

MCC221

A conditional expression used for assignment should be surrounded by parantheses.

# Bad
a = 1 if something() else 0

# Good
a = (1 if something() else 0)

MCC222

A conditional expression should not contain further conditional expressions.

# Bad
1 if x > 0 else -1 if x < 0 else 0

# Good
if x > 0:
    return 1
elif x < 0:
    return -1
else:
    return 0

MCC223

A conditional expression should not span over multiple lines.

# Bad
1
if something()
else 0

# Good
1 if something() else 0

MCC224

A conditional expression should span over multiple lines.

# Bad
1 if something() else 0

# Good
1
if something()
else 0

MCC225

Conditional expressions should not be used.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page