(
filename: str,
codemods: List[Type[ContextAwareTransformer]],
diff: bool,
context: CodemodContext,
)
| 162 | |
| 163 | |
| 164 | def _rewrite_file( |
| 165 | filename: str, |
| 166 | codemods: List[Type[ContextAwareTransformer]], |
| 167 | diff: bool, |
| 168 | context: CodemodContext, |
| 169 | ) -> Tuple[Union[str, None], Union[List[str], None]]: |
| 170 | file_path = Path(filename) |
| 171 | with file_path.open("r+", encoding="utf-8") as fp: |
| 172 | code = fp.read() |
| 173 | fp.seek(0) |
| 174 | |
| 175 | input_tree = cst.parse_module(code) |
| 176 | |
| 177 | for codemod in codemods: |
| 178 | transformer = codemod(context=context) |
| 179 | output_tree = transformer.transform_module(input_tree) |
| 180 | input_tree = output_tree |
| 181 | |
| 182 | output_code = input_tree.code |
| 183 | if code != output_code: |
| 184 | if diff: |
| 185 | lines = difflib.unified_diff( |
| 186 | code.splitlines(keepends=True), |
| 187 | output_code.splitlines(keepends=True), |
| 188 | fromfile=filename, |
| 189 | tofile=filename, |
| 190 | ) |
| 191 | return None, list(lines) |
| 192 | else: |
| 193 | fp.write(output_code) |
| 194 | fp.truncate() |
| 195 | return None, None |
| 196 | |
| 197 | |
| 198 | def _rewrite_notebook( |
no test coverage detected