'Similar to open() except that it returns a file path, instead of an open file object.'

def get_file_path_for_processing(self, name, allow_modification=True):

    if (name in self.dirtied):
        self.commit_item(name)
    self.parsed_cache.pop(name, False)
    path = self.name_to_abspath(name)
    base = os.path.dirname(path)
    if (not os.path.exists(base)):
        os.makedirs(base)
    elif (self.cloned and allow_modification and os.path.exists(path) and (nlinks_file(path) > 1)):
        temp = (path + u'xxx')
        shutil.copyfile(path, temp)
        try:
            os.unlink(path)
        except EnvironmentError:
            if (not iswindows):
                raise
            time.sleep(1)
            os.unlink(path)
        os.rename(temp, path)
    return path
