@@ -377,15 +377,25 @@ def stats(self) -> Stats:
377377 :return:
378378 :class:`Stats`
379379 """
380- if not self .parents :
381- text = self .repo .git .diff_tree (self .hexsha ,"--" ,numstat = True ,no_renames = True ,root = True )
382- text2 = ""
383- for line in text .splitlines ()[1 :]:
380+
381+ def process_lines (lines :List [str ])-> str :
382+ text = ""
383+ for file_info ,line in zip (lines ,lines [len (lines )// 2 :]):
384+ change_type = file_info .split ("\t " )[0 ][- 1 ]
384385 (insertions ,deletions ,filename )= line .split ("\t " )
385- text2 += "%s\t %s\t %s\n " % (insertions ,deletions ,filename )
386- text = text2
386+ text += "%s\t %s\t %s\t %s\n " % (change_type ,insertions ,deletions ,filename )
387+ return text
388+
389+ if not self .parents :
390+ lines = self .repo .git .diff_tree (
391+ self .hexsha ,"--" ,numstat = True ,no_renames = True ,root = True ,raw = True
392+ ).splitlines ()[1 :]
393+ text = process_lines (lines )
387394else :
388- text = self .repo .git .diff (self .parents [0 ].hexsha ,self .hexsha ,"--" ,numstat = True ,no_renames = True )
395+ lines = self .repo .git .diff (
396+ self .parents [0 ].hexsha ,self .hexsha ,"--" ,numstat = True ,no_renames = True ,raw = True
397+ ).splitlines ()
398+ text = process_lines (lines )
389399return Stats ._list_from_string (self .repo ,text )
390400
391401@property