@@ -215,17 +215,26 @@ def get_python_framesummary(self) -> traceback.FrameSummary:
215215 return stack_summary [0 ]
216216
217217 @property
218- def end_lineno (self ) -> int :
219- return self .get_python_framesummary ().end_lineno - 1
218+ def end_lineno_relative (self ) -> int | None :
219+ if sys .version_info < (3 , 11 ):
220+ return None
221+ frame_summary = self .get_python_framesummary ()
222+ if frame_summary .end_lineno is None :
223+ return None
224+ return frame_summary .end_lineno - 1 - self .frame .code .firstlineno
220225
221226 @property
222227 def colno (self ) -> int | None :
223228 """Starting byte offset of the expression in the traceback entry."""
229+ if sys .version_info < (3 , 11 ):
230+ return None
224231 return self .get_python_framesummary ().colno
225232
226233 @property
227234 def end_colno (self ) -> int | None :
228235 """Ending byte offset of the expression in the traceback entry."""
236+ if sys .version_info < (3 , 11 ):
237+ return None
229238 return self .get_python_framesummary ().end_colno
230239
231240 @property
@@ -1023,8 +1032,8 @@ def repr_traceback_entry(
10231032 line_index = 0
10241033 end_line_index , colno , end_colno = None , None , None
10251034 else :
1026- line_index = entry .lineno - entry . getfirstlinesource ()
1027- end_line_index = entry .end_lineno - entry . getfirstlinesource ()
1035+ line_index = entry .relline
1036+ end_line_index = entry .end_lineno_relative
10281037 colno = entry .colno
10291038 end_colno = entry .end_colno
10301039 short = style == "short"
0 commit comments