def removeFile(self, filePath): shelve = self._shelve if filePath in shelve: try: for key in shelve[filePath]: if key not in shelve: if self._error_callback != None: message = "Fault in index: key '"+key+"' registered for file '"+filePath+"' does not exist! Skipping..." self._error_callback(message) continue data = shelve[key] if len(data) < 1 or len(data[0]) < 4: if self._error_callback != None: message = "Fault in index: data-block has no type! Skipping..." self._error_callback(message) continue line = data[0][1] column = data[0][2] typeId = data[0][3] if 'pos:'+filePath+":"+str(line)+":"+str(column) in shelve: del shelve['pos:'+filePath+":"+str(line)+":"+str(column)] namespace = None if typeId == 'function': functionName = data[1][0] namespace = data[1][1] elif typeId == 'method': methodName = data[1][0] className = data[1][1] namespace = data[1][2] classId = namespace + '\\' + className shelve['classMethods:' + classId].remove(key) elif typeId == 'class': className = data[1][0] namespace = data[1][1] parentName = data[2] interfaces = data[3] if parentName != None: shelve['parent:'+parentName].remove(key) for interface in interfaces: shelve['implements:'+interface].remove(key) shelve['namespace:'+namespace].remove(key) if key in shelve: del shelve[key] del shelve['mtime:'+filePath] del shelve[filePath] except (_bsddb.DBNotFoundError, KeyError, ValueError) as exception: type_, value_, traceback_ = sys.exc_info() if self._error_callback != None: message = str(type_) + ": " + str(exception) + "\n" + "".join(traceback.format_tb(traceback_)) self._error_callback(message) shelve.sync()
def sync(self): shelve = self._shelve shelve.sync()