A class to represent a single flake8 error
| 94 | |
| 95 | |
| 96 | class Flake8Error: |
| 97 | """A class to represent a single flake8 error""" |
| 98 | |
| 99 | def __init__(self, filename: str, line_number: int, col_number: int, problem: str): |
| 100 | self.filename = filename |
| 101 | self.line_number = line_number |
| 102 | self.col_number = col_number |
| 103 | self.problem = problem |
| 104 | |
| 105 | @classmethod |
| 106 | def from_line(cls, line: str): |
| 107 | try: |
| 108 | prefix, _sep, problem = line.partition(": ") |
| 109 | filename, line_number, col_number = prefix.split(":") |
| 110 | except (ValueError, IndexError) as e: |
| 111 | msg = f"Invalid flake8 error line: {line}" |
| 112 | raise ValueError(msg) from e |
| 113 | return cls(filename, int(line_number), int(col_number), problem) |
| 114 | |
| 115 | def __eq__(self, other): |
| 116 | if not isinstance(other, Flake8Error): |
| 117 | return NotImplemented |
| 118 | return ( |
| 119 | self.filename == other.filename |
| 120 | and self.line_number == other.line_number |
| 121 | and self.col_number == other.col_number |
| 122 | and self.problem == other.problem |
| 123 | ) |
| 124 | |
| 125 | def __repr__(self): |
| 126 | return f"Flake8Error(filename={self.filename}, line_number={self.line_number}, col_number={self.col_number}, problem={self.problem})" |
| 127 | |
| 128 | |
| 129 | def _update_previous_errors( |
no outgoing calls
no test coverage detected