class_docstr: Front end to the pythran pass system.
class_docstr_tok: ["Front","end","to","the","pythran","pass","system","."]
docstr: High-level function to call a `transformation' on a `node'.
  If the transformation is an analysis, the result of the analysis
  is displayed.
docstr_tok: ["High-level","function","to","call","a","`","transformation","'","on","a","`","node","'",".","If","the","transformation","is","an","analysis",",","the","result","of","the","analysis","is","displayed","."]
code: def apply(self, transformation, node, run_times=None):
      """
      High-level function to call a `transformation' on a `node'.
      If the transformation is an analysis, the result of the analysis
      is displayed.
      """
      t0 = time()
      assert issubclass(transformation, (Transformation, Analysis))
      a = transformation()
      a.attach(self)
      ret = a.apply(node)
      if run_times is not None:
          run_times[transformation] = (
              run_times.get(transformation, 0) + time() - t0
          )
      return ret
  
imports: import gast
  import os
  import re
  from time import time
label_desc: Use image node_id 4 for calling the PassManager obj's underlying member method code with example usage: obj.apply(transformation, node, run_times) and returns: ret