class_docstr: Turns iteration over an incrementing list of literals into a range
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse("for i in [1,2,3]: print(i)")
  >>> pm = passmanager.PassManager("test")
  >>> _, node = pm.apply(RangeLoopUnfolding, node)
  >>> print(pm.dump(backend.Python, node))
  for i in builtins.range(1, 4, 1):
      print(i)
code: def visit_For(self, node):
      if isinstance(node.iter, (ast.List, ast.Tuple)):
          range_params = self.isrange(node.iter.elts)
          if range_params:
              node.iter = ast.Call(
                  ast.Attribute(
                      ast.Name("builtins", ast.Load(), None, None),
                      "range",
                      node.iter.ctx,
                  ),
                  [ast.Constant(param, None) for param in range_params],
                  [],
              )
              self.update = True
      return self.generic_visit(node)
  
imports: from pythran.passmanager import Transformation
  from pythran.utils import isnum
  import gast
label_desc: Use image node_id 2 for calling the RangeLoopUnfolding obj's underlying member method code with example usage: obj.visit_For(node) and returns: self