parameters: (fn, executable_path=None, env=None)
docstring: Find a framework using dyld semantics in a very loose manner.
  
      Will take input such as:
          Python
          Python.framework
          Python.framework/Versions/Current
docstring_summary: Find a framework using dyld semantics in a very loose manner.
docstring_tokens: Find a framework using dyld semantics in a very loose manner .
function: def framework_find(fn, executable_path=None, env=None):
      """
      Find a framework using dyld semantics in a very loose manner.
  
      Will take input such as:
          Python
          Python.framework
          Python.framework/Versions/Current
      """
      try:
          return dyld_find(fn, executable_path=executable_path, env=env)
      except ValueError, e:
          pass
      fmwk_index = fn.rfind('.framework')
      if fmwk_index == -1:
          fmwk_index = len(fn)
          fn += '.framework'
      fn = os.path.join(fn, os.path.basename(fn[:fmwk_index]))
      try:
          return dyld_find(fn, executable_path=executable_path, env=env)
      except ValueError:
          raise e
function_tokens: def framework_find ( fn , executable_path = None , env = None ) : try : return dyld_find ( fn , executable_path = executable_path , env = env ) except ValueError , e : pass fmwk_index = fn . rfind ( '.framework' ) if fmwk_index == - 1 : fmwk_index = len ( fn ) fn += '.framework' fn = os . path . join ( fn , os . path . basename ( fn [ : fmwk_index ] ) ) try : return dyld_find ( fn , executable_path = executable_path , env = env ) except ValueError : raise e