RewriteToComprehensionRule
A derivative of flake8-comprehensions’s C400-C402 and C403-C404. Comprehensions are more efficient than functions calls. This C400-C402 suggest to use dict/set/list comprehensions rather than respective function calls whenever possible. C403-C404 suggest to remove unnecessary list comprehension in a set/dict call, and replace it with set/dict comprehension.
Has Autofix: Yes
VALID Code Examples
# 1:
[val for val in iterable]
# 2:
{val for val in iterable}
# 3:
{val: val+1 for val in iterable}
# 4:
dict(line.strip().split('=', 1) for line in attr_file)
INVALID Code Examples
# 1:
list(val for val in iterable)
Autofix:
---
+++
@@ -1 +1 @@
-list(val for val in iterable)
+[val for val in iterable]
# 2:
list(val for row in matrix for val in row)
Autofix:
---
+++
@@ -1 +1 @@
-list(val for row in matrix for val in row)
+[val for row in matrix for val in row]
# 3:
set(val for val in iterable)
Autofix:
---
+++
@@ -1 +1 @@
-set(val for val in iterable)
+{val for val in iterable}
# 4:
dict((x, f(x)) for val in iterable)
Autofix:
---
+++
@@ -1 +1 @@
-dict((x, f(x)) for val in iterable)
+{x: f(x) for val in iterable}
# 5:
dict((x, y) for y, x in iterable)
Autofix:
---
+++
@@ -1 +1 @@
-dict((x, y) for y, x in iterable)
+{x: y for y, x in iterable}
# 6:
dict([val, val+1] for val in iterable)
Autofix:
---
+++
@@ -1 +1 @@
-dict([val, val+1] for val in iterable)
+{val: val+1 for val in iterable}
# 7:
dict((x["name"], json.loads(x["data"])) for x in responses)
Autofix:
---
+++
@@ -1 +1 @@
-dict((x["name"], json.loads(x["data"])) for x in responses)
+{x["name"]: json.loads(x["data"]) for x in responses}
# 8:
dict((k, v) for k, v in iter for iter in iters)
Autofix:
---
+++
@@ -1 +1 @@
-dict((k, v) for k, v in iter for iter in iters)
+{k: v for k, v in iter for iter in iters}
# 9:
set([val for val in iterable])
Autofix:
---
+++
@@ -1 +1 @@
-set([val for val in iterable])
+{val for val in iterable}
# 10:
dict([[val, val+1] for val in iterable])
Autofix:
---
+++
@@ -1 +1 @@
-dict([[val, val+1] for val in iterable])
+{val: val+1 for val in iterable}
# 11:
dict([(x, f(x)) for x in foo])
Autofix:
---
+++
@@ -1 +1 @@
-dict([(x, f(x)) for x in foo])
+{x: f(x) for x in foo}
# 12:
dict([(x, y) for y, x in iterable])
Autofix:
---
+++
@@ -1 +1 @@
-dict([(x, y) for y, x in iterable])
+{x: y for y, x in iterable}
# 13:
set([val for row in matrix for val in row])
Autofix:
---
+++
@@ -1 +1 @@
-set([val for row in matrix for val in row])
+{val for row in matrix for val in row}