parameters: (self, path)
return_statement: return link_obj.contents
docstring: Reads the target of a symlink.
  
      Args:
        path:  symlink to read the target of
  
      Returns:
        the string representing the path to which the symbolic link points.
  
      Raises:
        TypeError: if path is None
        OSError: (with errno=ENOENT) if path is not a valid path, or
                 (with errno=EINVAL) if path is valid, but is not a symlink
docstring_summary: Reads the target of a symlink.
docstring_tokens: Reads the target of a symlink .
function: def readlink(self, path):
      """Reads the target of a symlink.
  
      Args:
        path:  symlink to read the target of
  
      Returns:
        the string representing the path to which the symbolic link points.
  
      Raises:
        TypeError: if path is None
        OSError: (with errno=ENOENT) if path is not a valid path, or
                 (with errno=EINVAL) if path is valid, but is not a symlink
      """
      if path is None:
        raise TypeError
      try:
        link_obj = self.filesystem.LResolveObject(path)
      except IOError:
        raise OSError(errno.ENOENT, 'Fake os module: path does not exist', path)
      if stat.S_IFMT(link_obj.st_mode) != stat.S_IFLNK:
        raise OSError(errno.EINVAL, 'Fake os module: not a symlink', path)
      return link_obj.contents
function_tokens: def readlink ( self , path ) : if path is None : raise TypeError try : link_obj = self . filesystem . LResolveObject ( path ) except IOError : raise OSError ( errno . ENOENT , 'Fake os module: path does not exist' , path ) if stat . S_IFMT ( link_obj . st_mode ) != stat . S_IFLNK : raise OSError ( errno . EINVAL , 'Fake os module: not a symlink' , path ) return link_obj . contents