@@ -637,51 +637,48 @@ def on_file(
637
637
etree .SubElement (class_element , "methods" )
638
638
lines_element = etree .SubElement (class_element , "lines" )
639
639
640
- with tokenize .open (path ) as input_file :
641
- class_lines_covered = 0
642
- class_total_lines = 0
643
- for lineno , _ in enumerate (input_file , 1 ):
644
- status = visitor .line_map .get (lineno , stats .TYPE_EMPTY )
645
- hits = 0
646
- branch = False
647
- if status == stats .TYPE_EMPTY :
648
- continue
649
- class_total_lines += 1
650
- if status != stats .TYPE_ANY :
651
- class_lines_covered += 1
652
- hits = 1
653
- if status == stats .TYPE_IMPRECISE :
654
- branch = True
655
- file_info .counts [status ] += 1
656
- line_element = etree .SubElement (
657
- lines_element ,
658
- "line" ,
659
- branch = str (branch ).lower (),
660
- hits = str (hits ),
661
- number = str (lineno ),
662
- precision = stats .precision_names [status ],
663
- )
664
- if branch :
665
- line_element .attrib ["condition-coverage" ] = "50% (1/2)"
666
- class_element .attrib ["branch-rate" ] = "0"
667
- class_element .attrib ["line-rate" ] = get_line_rate (
668
- class_lines_covered , class_total_lines
640
+ class_lines_covered = 0
641
+ class_total_lines = 0
642
+ for lineno , _ in iterate_python_lines (path ):
643
+ status = visitor .line_map .get (lineno , stats .TYPE_EMPTY )
644
+ hits = 0
645
+ branch = False
646
+ if status == stats .TYPE_EMPTY :
647
+ continue
648
+ class_total_lines += 1
649
+ if status != stats .TYPE_ANY :
650
+ class_lines_covered += 1
651
+ hits = 1
652
+ if status == stats .TYPE_IMPRECISE :
653
+ branch = True
654
+ file_info .counts [status ] += 1
655
+ line_element = etree .SubElement (
656
+ lines_element ,
657
+ "line" ,
658
+ branch = str (branch ).lower (),
659
+ hits = str (hits ),
660
+ number = str (lineno ),
661
+ precision = stats .precision_names [status ],
669
662
)
670
- # parent_module is set to whichever module contains this file. For most files, we want
671
- # to simply strip the last element off of the module. But for __init__.py files,
672
- # the module == the parent module.
673
- parent_module = file_info .module .rsplit ("." , 1 )[0 ]
674
- if file_info .name .endswith ("__init__.py" ):
675
- parent_module = file_info .module
676
-
677
- if parent_module not in self .root_package .packages :
678
- self .root_package .packages [parent_module ] = CoberturaPackage (parent_module )
679
- current_package = self .root_package .packages [parent_module ]
680
- packages_to_update = [self .root_package , current_package ]
681
- for package in packages_to_update :
682
- package .total_lines += class_total_lines
683
- package .covered_lines += class_lines_covered
684
- current_package .classes [class_name ] = class_element
663
+ if branch :
664
+ line_element .attrib ["condition-coverage" ] = "50% (1/2)"
665
+ class_element .attrib ["branch-rate" ] = "0"
666
+ class_element .attrib ["line-rate" ] = get_line_rate (class_lines_covered , class_total_lines )
667
+ # parent_module is set to whichever module contains this file. For most files, we want
668
+ # to simply strip the last element off of the module. But for __init__.py files,
669
+ # the module == the parent module.
670
+ parent_module = file_info .module .rsplit ("." , 1 )[0 ]
671
+ if file_info .name .endswith ("__init__.py" ):
672
+ parent_module = file_info .module
673
+
674
+ if parent_module not in self .root_package .packages :
675
+ self .root_package .packages [parent_module ] = CoberturaPackage (parent_module )
676
+ current_package = self .root_package .packages [parent_module ]
677
+ packages_to_update = [self .root_package , current_package ]
678
+ for package in packages_to_update :
679
+ package .total_lines += class_total_lines
680
+ package .covered_lines += class_lines_covered
681
+ current_package .classes [class_name ] = class_element
685
682
686
683
def on_finish (self ) -> None :
687
684
self .root .attrib ["line-rate" ] = get_line_rate (
0 commit comments