classFrameInfoModel(itemmodels.ListMixin,core.AbstractTableModel):"""Model to display a list of inspect.Frameinfos / inspect.Tracebacks."""HEADER=["Filename","Line number","Function","Code context","Index","Positions"]SUPPORTS=Sequence[inspect.FrameInfo|inspect.Traceback]@classmethoddefsupports(cls,instance)->bool:matchinstance:case(inspect.FrameInfo(),*_)|(inspect.Traceback(),*_):returnTruecase_:returnFalsedefcolumnCount(self,parent=None)->int:returnlen(self.HEADER)defheaderData(self,section:int,orientation:constants.Orientation,role:constants.ItemDataRole=constants.DISPLAY_ROLE,)->str|None:matchorientation,role:caseconstants.HORIZONTAL,constants.DISPLAY_ROLE:returnself.HEADER[section]caseconstants.VERTICAL,constants.DISPLAY_ROLE:returnstr(section)defdata(self,index:core.ModelIndex,role:constants.ItemDataRole=constants.DISPLAY_ROLE,):ifnotindex.isValid():returnNonefield=self.items[index.row()]matchrole,index.column():caseconstants.DISPLAY_ROLE,0:returnfield.filenamecaseconstants.DISPLAY_ROLE,1:returnfield.linenocaseconstants.DISPLAY_ROLE,2:returnfield.functioncaseconstants.DISPLAY_ROLE,3:lines=[]pretty=""forlineinfield.code_context:whileline.startswith(" "):pretty+="ยท"line=line[1:]pretty+=linelines.append(pretty)return"\n".join(lines)caseconstants.FONT_ROLE,3:returnSOURCE_FONTcaseconstants.DISPLAY_ROLE,4:returnfield.indexcaseconstants.DISPLAY_ROLE,5:p=field.positionsreturnf"{p.lineno} - {p.end_lineno}, {p.col_offset}{p.end_col_offset}"caseconstants.ALIGNMENT_ROLE,_:returnconstants.ALIGN_CENTER_LEFT
Info
Supported data type: collections.abc.Sequence[inspect.FrameInfo | inspect.Traceback]