docs: def abspath(path):
      """Return the absolute path to a file and canonicalize it
  
      Path is returned without a trailing slash and without redundant slashes.
      Caches the user's home directory.
  
      :param path: A string for the path.  This should not have any wildcards.
      :returns: Absolute path to the file
      :raises IOError: If unsuccessful
      """
      global _USER_HOME_DIR
      # FIXME(brandyn): User's home directory must exist
      # FIXME(brandyn): Requires something to be in home dir
      if path[0] == '/':
          return os.path.abspath(path)
      if _USER_HOME_DIR is None:
          try:
              _USER_HOME_DIR = _get_home_dir()
          except IOError, e:
              if not exists('.'):
                  raise IOError("Home directory doesn't exist")
              raise e
      return os.path.abspath(os.path.join(_USER_HOME_DIR, path))