Python ast.ExtSlice() Examples
The following are 19
code examples of ast.ExtSlice().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
ast
, or try the search function
.
Example #1
Source File: label_visitor.py From pyt with GNU General Public License v2.0 | 6 votes |
def slicev(self, node): if isinstance(node, ast.Slice): if node.lower: self.visit(node.lower) if node.upper: self.visit(node.upper) if node.step: self.visit(node.step) elif isinstance(node, ast.ExtSlice): if node.dims: for d in node.dims: self.visit(d) else: self.visit(node.value) # operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv
Example #2
Source File: test_ast.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_subscript(self): sub = ast.Subscript(ast.Name("x", ast.Store()), ast.Index(ast.Num(3)), ast.Load()) self.expr(sub, "must have Load context") x = ast.Name("x", ast.Load()) sub = ast.Subscript(x, ast.Index(ast.Name("y", ast.Store())), ast.Load()) self.expr(sub, "must have Load context") s = ast.Name("x", ast.Store()) for args in (s, None, None), (None, s, None), (None, None, s): sl = ast.Slice(*args) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context") sl = ast.ExtSlice([]) self.expr(ast.Subscript(x, sl, ast.Load()), "empty dims on ExtSlice") sl = ast.ExtSlice([ast.Index(s)]) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context")
Example #3
Source File: test_ast.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_subscript(self): sub = ast.Subscript(ast.Name("x", ast.Store()), ast.Index(ast.Num(3)), ast.Load()) self.expr(sub, "must have Load context") x = ast.Name("x", ast.Load()) sub = ast.Subscript(x, ast.Index(ast.Name("y", ast.Store())), ast.Load()) self.expr(sub, "must have Load context") s = ast.Name("x", ast.Store()) for args in (s, None, None), (None, s, None), (None, None, s): sl = ast.Slice(*args) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context") sl = ast.ExtSlice([]) self.expr(ast.Subscript(x, sl, ast.Load()), "empty dims on ExtSlice") sl = ast.ExtSlice([ast.Index(s)]) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context")
Example #4
Source File: compiler.py From Transcrypt with Apache License 2.0 | 6 votes |
def visit_Slice (self, node): # Only visited for dims as part of ExtSlice self.emit ('tuple ([') if node.lower == None: self.emit ('0') else: self.visit (node.lower) self.emit (', ') if node.upper == None: self.emit ('null') else: self.visit (node.upper) self.emit (', ') if node.step == None: self.emit ('1') else: self.visit (node.step) self.emit ('])')
Example #5
Source File: ast2.py From gast with BSD 3-Clause "New" or "Revised" License | 6 votes |
def visit_Index(self, node): new_value = self._visit(node.value) if isinstance(new_value, ast.Ellipsis): new_node = new_value elif isinstance(new_value, ast.Tuple): if any(isinstance(elt, ast.Ellipsis) for elt in new_value.elts): new_elts = [elt if isinstance(elt, (ast.Ellipsis, ast.Slice)) else ast.Index(elt) for elt in new_value.elts] new_node = ast.ExtSlice(new_elts) else: new_node = ast.Index(new_value) else: new_node = ast.Index(new_value) ast.copy_location(new_node, node) return new_node
Example #6
Source File: _343.py From codetransformer with GNU General Public License v2.0 | 6 votes |
def normalize_tuple_slice(node): """ Normalize an ast.Tuple node representing the internals of a slice. Returns the node wrapped in an ast.Index. Returns an ExtSlice node built from the tuple elements if there are any slices. """ if not any(isinstance(elt, ast.Slice) for elt in node.elts): return ast.Index(value=node) return ast.ExtSlice( [ # Wrap non-Slice nodes in Index nodes. elt if isinstance(elt, ast.Slice) else ast.Index(value=elt) for elt in node.elts ] )
Example #7
Source File: test_ast.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_subscript(self): sub = ast.Subscript(ast.Name("x", ast.Store()), ast.Index(ast.Num(3)), ast.Load()) self.expr(sub, "must have Load context") x = ast.Name("x", ast.Load()) sub = ast.Subscript(x, ast.Index(ast.Name("y", ast.Store())), ast.Load()) self.expr(sub, "must have Load context") s = ast.Name("x", ast.Store()) for args in (s, None, None), (None, s, None), (None, None, s): sl = ast.Slice(*args) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context") sl = ast.ExtSlice([]) self.expr(ast.Subscript(x, sl, ast.Load()), "empty dims on ExtSlice") sl = ast.ExtSlice([ast.Index(s)]) self.expr(ast.Subscript(x, sl, ast.Load()), "must have Load context")
Example #8
Source File: flatten.py From kappa with BSD 2-Clause "Simplified" License | 5 votes |
def visit_ExtSlice(self, ext_sl: ast.ExtSlice) -> VisitSliceReturnT: dims = [] actions = [] for dim in ext_sl.dims: dim_flattened, dim_actions = self.visit_slice(dim) dims.append(dim_flattened) actions.extend(dim_actions) return ast.ExtSlice(dims=dims), actions # Module
Example #9
Source File: onelinerizer.py From onelinerizer with MIT License | 5 votes |
def slice_repr(self, slice): if type(slice) is ast.Ellipsis: return T('Ellipsis') elif type(slice) is ast.Slice: return T('slice({}, {}, {})').format( 'None' if slice.lower is None else self.visit(slice.lower), 'None' if slice.upper is None else self.visit(slice.upper), 'None' if slice.step is None else self.visit(slice.step)) elif type(slice) is ast.ExtSlice: return T('({})').format(T(', ').join(map(self.slice_repr, slice.dims)) + ','*(len(slice.dims) == 1)) elif type(slice) is ast.Index: return self.visit(slice.value) else: raise NotImplementedError('Case not caught: %s' % str(type(slice)))
Example #10
Source File: commonast.py From pscript with BSD 2-Clause "Simplified" License | 5 votes |
def _convert_ExtSlice(self, n): return ExtSlice([self._convert_index_like(x) for x in n.dims]) ## Expressions
Example #11
Source File: commonast.py From pscript with BSD 2-Clause "Simplified" License | 5 votes |
def _convert_index_like(self, n): c = self._convert if isinstance(n, (ast.Slice, ast.Index, ast.ExtSlice, ast.Ellipsis)): return c(n) # Python < 3.8 (and also 3.8 on Windows?) elif isinstance(n, ast.Num): return Index(c(n)) else: assert isinstance(n, ast.Tuple) dims = [self._convert_index_like(x) for x in n.elts] return ExtSlice(dims)
Example #12
Source File: hgawk_grammar.py From histogrammar-python with Apache License 2.0 | 5 votes |
def p_subscriptlist_4(p): '''subscriptlist : subscript subscriptlist_star COMMA''' # 1 2 3 args = [p[1]] + p[2] if all(isinstance(x, ast.Index) for x in args): tup = ast.Tuple([x.value for x in args], ast.Load(), rule=inspect.currentframe().f_code.co_name, paren=False) inherit_lineno(tup, args[0].value) p[0] = ast.Index(tup, rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], tup) else: p[0] = ast.ExtSlice(args, rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], p[1])
Example #13
Source File: hgawk_grammar.py From histogrammar-python with Apache License 2.0 | 5 votes |
def p_subscriptlist_3(p): '''subscriptlist : subscript subscriptlist_star''' # 1 2 args = [p[1]] + p[2] if all(isinstance(x, ast.Index) for x in args): tup = ast.Tuple([x.value for x in args], ast.Load(), rule=inspect.currentframe().f_code.co_name, paren=False) inherit_lineno(tup, args[0].value) p[0] = ast.Index(tup, rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], tup) else: p[0] = ast.ExtSlice(args, rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], p[1])
Example #14
Source File: hgawk_grammar.py From histogrammar-python with Apache License 2.0 | 5 votes |
def p_subscriptlist_2(p): '''subscriptlist : subscript COMMA''' # 1 2 if isinstance(p[1], ast.Index): tup = ast.Tuple([p[1].value], ast.Load(), rule=inspect.currentframe().f_code.co_name, paren=False) inherit_lineno(tup, p[1].value) p[0] = ast.Index(tup, rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], tup) else: p[0] = ast.ExtSlice([p[1]], rule=inspect.currentframe().f_code.co_name) inherit_lineno(p[0], p[1])
Example #15
Source File: _343.py From codetransformer with GNU General Public License v2.0 | 5 votes |
def make_slice_tuple(toplevel, stack_builders): slice_ = _make_expr(toplevel, stack_builders) if isinstance(slice_, ast.Tuple): # a = b[c, d] generates Index(value=Tuple(...)) # a = b[c:, d] generates ExtSlice(dims=[Slice(...), Index(...)]) slice_ = normalize_tuple_slice(slice_) return slice_
Example #16
Source File: ast2.py From gast with BSD 3-Clause "New" or "Revised" License | 5 votes |
def visit_ExtSlice(self, node): has_ellipsis = any(isinstance(d, ast.Ellipsis) for d in node.dims) has_slice = any(isinstance(d, ast.Slice) for d in node.dims) new_dims = self._visit(node.dims) if has_ellipsis and not has_slice: new_dims = [nd.value if isinstance(nd, gast.Index) else nd for nd in new_dims] new_node = gast.Index(gast.Tuple(new_dims, gast.Load())) else: new_node = gast.ExtSlice(new_dims) gast.copy_location(new_node, node) new_node.end_lineno = new_node.end_col_offset = None return new_node
Example #17
Source File: parser.py From myia with MIT License | 5 votes |
def process_ExtSlice(self, block: "Block", node: ast.ExtSlice) -> ANFNode: """Process extended subscript slices.""" op = block.operation("make_tuple") slices = [self.process_node(block, dim) for dim in node.dims] return block.graph.apply(op, *slices)
Example #18
Source File: _recompute.py From icontract with MIT License | 5 votes |
def visit_ExtSlice(self, node: ast.ExtSlice) -> Tuple[Any, ...]: """Visit each dimension of the advanced slicing and assemble the dimensions in a tuple.""" result = tuple(self.visit(node=dim) for dim in node.dims) self.recomputed_values[node] = result return result
Example #19
Source File: vars_visitor.py From pyt with GNU General Public License v2.0 | 5 votes |
def slicev(self, node): if isinstance(node, ast.Slice): if node.lower: self.visit(node.lower) if node.upper: self.visit(node.upper) if node.step: self.visit(node.step) elif isinstance(node, ast.ExtSlice): if node.dims: for d in node.dims: self.visit(d) else: self.visit(node.value)