class_docstr: Gather aliasing informations across nodes
  
  As a result, each node from the module is associated to a set of node or
  Intrinsic to which it *may* alias to.
class_docstr_tok: ["Gather","aliasing","informations","across","nodes","As","a","result",",","each","node","from","the","module","is","associated","to","a","set","of","node","or","Intrinsic","to","which","it","*","may","*","alias","to","."]
docstr: A tuple is abstracted as an ordered container of its values
  
  >>> from pythran import passmanager
  >>> pm = passmanager.PassManager('demo')
  >>> module = ast.parse('def foo(a, b): return a, b')
  >>> result = pm.gather(Aliases, module)
  >>> Aliases.dump(result, filter=ast.Tuple)
  (a, b) => ['[0]=|a|', '[1]=|b|']
  
  where the |[i]=id| notation means something that
  may contain ``id`` at index ``i``.
docstr_tok: ["A","tuple","is","abstracted","as","an","ordered","container","of","its","values",">",">",">","from","pythran","import","passmanager",">",">",">","pm","=","passmanager.PassManager","(","'demo","'",")",">",">",">","module","=","ast.parse","(","'def","foo","(","a",",","b",")",":","return","a",",","b","'",")",">",">",">","result","=","pm.gather","(","Aliases",",","module",")",">",">",">","Aliases.dump","(","result",",","filter=ast.Tuple",")","(","a",",","b",")","=",">","[","'","[","0","]","=|a|","'",",","'","[","1","]","=|b|","'","]","where","the","|","[","i","]","=id|","notation","means","something","that","may","contain","``","id","``","at","index","``","i","``","."]
code: def visit_Tuple(self, node):
      """
      A tuple is abstracted as an ordered container of its values
  
      >>> from pythran import passmanager
      >>> pm = passmanager.PassManager('demo')
      >>> module = ast.parse('def foo(a, b): return a, b')
      >>> result = pm.gather(Aliases, module)
      >>> Aliases.dump(result, filter=ast.Tuple)
      (a, b) => ['[0]=|a|', '[1]=|b|']
  
      where the |[i]=id| notation means something that
      may contain ``id`` at index ``i``.
      """
      if node.elts:
          aliases = set()
          for i, elt in enumerate(node.elts):
              elt_aliases = self.visit(elt)
              aliases.add(ContainerOf(elt_aliases, i))
      else:
          aliases = None
      return self.add(node, aliases)
  
imports: from pythran.analyses.global_declarations import GlobalDeclarations
  from pythran.intrinsic import Intrinsic, Class, UnboundValue
  from pythran.passmanager import ModuleAnalysis
  from pythran.tables import functions, methods, MODULES
  from pythran.unparse import Unparser
  from pythran.conversion import demangle
  import pythran.metadata
  from pythran.utils import isnum
  from pythran.syntax import PythranSyntaxError
  import gast
  from copy import deepcopy
  from itertools import product
  import io
label_desc: Use image node_id 18 for calling the Aliases obj's underlying member method code with example usage: obj.visit_Tuple(node) and returns: self