self.set_precedence(_Precedence.ATOM, node.value)
self.traverse(node.value)
with self.delimit("[", "]"):
- self.traverse(node.slice)
+ if (isinstance(node.slice, Index)
+ and isinstance(node.slice.value, Tuple)
+ and node.slice.value.elts):
+ if len(node.slice.value.elts) == 1:
+ elt = node.slice.value.elts[0]
+ self.traverse(elt)
+ self.write(",")
+ else:
+ self.interleave(lambda: self.write(", "), self.traverse, node.slice.value.elts)
+ else:
+ self.traverse(node.slice)
def visit_Starred(self, node):
self.write("*")
self.traverse(node.step)
def visit_ExtSlice(self, node):
- self.interleave(lambda: self.write(", "), self.traverse, node.dims)
+ if len(node.dims) == 1:
+ elt = node.dims[0]
+ self.traverse(elt)
+ self.write(",")
+ else:
+ self.interleave(lambda: self.write(", "), self.traverse, node.dims)
def visit_arg(self, node):
self.write(node.arg)
self.check_src_roundtrip("call((yield x))")
self.check_src_roundtrip("return x + (yield x)")
+ def test_subscript(self):
+ self.check_src_roundtrip("a[i]")
+ self.check_src_roundtrip("a[i,]")
+ self.check_src_roundtrip("a[i, j]")
+ self.check_src_roundtrip("a[()]")
+ self.check_src_roundtrip("a[i:j]")
+ self.check_src_roundtrip("a[:j]")
+ self.check_src_roundtrip("a[i:]")
+ self.check_src_roundtrip("a[i:j:k]")
+ self.check_src_roundtrip("a[:j:k]")
+ self.check_src_roundtrip("a[i::k]")
+ self.check_src_roundtrip("a[i:j,]")
+ self.check_src_roundtrip("a[i:j, k]")
+
def test_docstrings(self):
docstrings = (
'"""simple doc string"""',