fromnewtypeimportNewTypeimporttimeclassTimedDict(NewType(dict)):def__init__(self):super().__init__()self.operation_times={}def__getitem__(self,key):start=time.time()result=super().__getitem__(key)elapsed=time.time()-startself.operation_times[key]=elapsedreturnresultdefget_stats(self):returnself.operation_times# Usaged=TimedDict()d["key"]="value"_=d["key"]print(d.get_stats())# Shows access times
fromnewtypeimportNewTypeimportloggingclassLoggedList(NewType(list)):def__init__(self,logger=None):super().__init__()self.logger=loggerorlogging.getLogger(__name__)def__enter__(self):self.logger.info("Starting list operations")returnselfdef__exit__(self,exc_type,exc_val,exc_tb):self.logger.info("Finished list operations")ifexc_type:self.logger.error(f"Error occurred: {exc_val}")returnFalse# UsagewithLoggedList()aslst:lst.append(1)lst.extend([2,3,4])