class_docstr: Replace variable that can be computed later.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> pm = passmanager.PassManager("test")
  
  >>> node = ast.parse("def foo(): a = [2, 3]; builtins.print(a)")
  >>> _, node = pm.apply(ForwardSubstitution, node)
  >>> print(pm.dump(backend.Python, node))
  def foo():
      pass
      builtins.print([2, 3])
  
  >>> node = ast.parse("def foo(): a = 2; builtins.print(a + a)")
  >>> _, node = pm.apply(ForwardSubstitution, node)
  >>> print(pm.dump(backend.Python, node))
  def foo():
      a = 2
      builtins.print((2 + 2))
  
  >>> node = ast.parse("def foo():\n a=b=2\n while a: a -= 1\n return b")
  >>> _, node = pm.apply(ForwardSubstitution, node)
  >>> print(pm.dump(backend.Python, node))
  def foo():
      a = 2
      while a:
          a -= 1
      return 2
class_docstr_tok: ["Replace","variable","that","can","be","computed","later",".",">",">",">","import","gast","as","ast",">",">",">","from","pythran","import","passmanager",",","backend",">",">",">","pm","=","passmanager.PassManager","(","``","test","''",")",">",">",">","node","=","ast.parse","(","``","def","foo","(",")",":","a","=","[","2",",","3","]",";","builtins.print","(","a",")","''",")",">",">",">","_",",","node","=","pm.apply","(","ForwardSubstitution",",","node",")",">",">",">","print","(","pm.dump","(","backend.Python",",","node",")",")","def","foo","(",")",":","pass","builtins.print","(","[","2",",","3","]",")",">",">",">","node","=","ast.parse","(","``","def","foo","(",")",":","a","=","2",";","builtins.print","(","a","+","a",")","''",")",">",">",">","_",",","node","=","pm.apply","(","ForwardSubstitution",",","node",")",">",">",">","print","(","pm.dump","(","backend.Python",",","node",")",")","def","foo","(",")",":","a","=","2","builtins.print","(","(","2","+","2",")",")",">",">",">","node","=","ast.parse","(","``","def","foo","(",")",":","\\n","a=b=2\\n","while","a",":","a","-=","1\\n","return","b","''",")",">",">",">","_",",","node","=","pm.apply","(","ForwardSubstitution",",","node",")",">",">",">","print","(","pm.dump","(","backend.Python",",","node",")",")","def","foo","(",")",":","a","=","2","while","a",":","a","-=","1","return","2"]
docstr: Satisfy dependencies on others analyses. 
docstr_tok: ["Satisfy","dependencies","on","others","analyses","."]
code: def __init__(self):
      """Satisfy dependencies on others analyses."""
      super(ForwardSubstitution, self).__init__(
          LazynessAnalysis,
          UseDefChains,
          DefUseChains,
          Ancestors,
          CFG,
          Literals,
      )
      self.to_remove = None
  
file_path: catboost/contrib/python/pythran/pythran/optimizations/forward_substitution.py
imports: from pythran.analyses import LazynessAnalysis, UseDefChains, DefUseChains
  from pythran.analyses import Literals, Ancestors, Identifiers, CFG, IsAssigned
  from pythran.passmanager import Transformation
  import pythran.graph
  from collections import defaultdict
  import gast
label_desc: Use image node_id 1 to create a new ForwardSubstitution object from inherited base classes: Transformation with example: obj = ForwardSubstitution()