def _remove_entry(self, source_file, key):
entry = self.__index.get(key)<EOL>if entry is None:<EOL><INDENT>return<EOL><DEDENT>for id_, _ in entry.filesigs:<EOL><INDENT>self.__filename_rep.release_filename(id_)<EOL><DEDENT>del self.__index[key]<EOL>self.__modified_flag = True<EOL>cachefilename = self._create_cache_filename(source_file)<EOL>try:<EOL><INDENT>os.remove(cachefilename)<EOL><DEDENT>except OSError as e:<EOL><INDENT>print("<STR_LIT>" % e)<EOL><DEDENT>
Remove an entry from the cache.

        source_file is the name of the header and key is its corresponding
        cache key (obtained by a call to :meth:_create_cache_key ).
        The entry is removed from the index table, any referenced file
        name is released and the cache file is deleted.

        If key references a non-existing entry, the method returns
        immediately.

        :param source_file: Header file name
        :type source_file: str
        :param key: Key value for the specified header file
        :type key: hash table object