| 6 | extractors = {} |
| 7 | |
| 8 | class LineIterator(object): |
| 9 | |
| 10 | used_lines_per_file = {} |
| 11 | |
| 12 | def __init__(self, filename): |
| 13 | self.enum_iter = enumerate(open(filename)) |
| 14 | self.linenum = -1 |
| 15 | self.used_lines = self.used_lines_per_file.setdefault(filename, set()) |
| 16 | |
| 17 | def __iter__(self): |
| 18 | return self |
| 19 | |
| 20 | def next(self): |
| 21 | self.linenum, rv = self.enum_iter.next() |
| 22 | return rv |
| 23 | |
| 24 | def use_line(self): |
| 25 | self.used_lines.add(self.linenum) |
| 26 | |
| 27 | @classmethod |
| 28 | def print_unused_lines(cls, filename): |
| 29 | sys.stderr.write("*** unused lines in %r ***\n" % filename) |
| 30 | used_lines = cls.used_lines_per_file[filename] |
| 31 | for l, line in enumerate(open(filename)): |
| 32 | if line.strip() and l not in used_lines: |
| 33 | sys.stderr.write("%4d %s" % (l+1, line)) |
| 34 | |
| 35 | file_lines_used = {} |
| 36 |
no outgoing calls
no test coverage detected