import plugin, functools def wrapper(data,func): @functools.wraps(func) def __wrapper(*args,**kwargs): data.load(data.filename) ret = func(*args,**kwargs) data.save(data.filename) return ret return __wrapper class ListData(plugin.JSONData): def __init__(self,filename,*args): plugin.JSONData.__init__(self,list(args)) self.filename = filename self.load(self.filename) def __getitem__(self,k): self.load(self.filename) return self.value[k] def __setitem__(self,k,v): self.value[k]=v self.save(self.filename) def __getattr__(self,attr): if attr in self.__dict__: return self.__dict__[attr] return wrapper(self,getattr(self.value,attr)) def __len__(self): self.load(self.filename) return len(self.value) def __iter__(self): self.load(self.filename) return iter(self.value) def __contains__(self): self.load(self.filename) return k in self.value