(class_name: str, filename: str, dry_run: bool, locks: dict[str, multiprocessing.Lock])
| 175 | |
| 176 | |
| 177 | def sort_class(class_name: str, filename: str, dry_run: bool, locks: dict[str, multiprocessing.Lock]): |
| 178 | print(f"Sorting {class_name} ({filename})") |
| 179 | |
| 180 | file_lock = locks.get(filename) if not dry_run else None |
| 181 | stdout_lock = locks.get("stdout") |
| 182 | |
| 183 | if file_lock: |
| 184 | file_lock.acquire() |
| 185 | try: |
| 186 | with open(filename) as r: |
| 187 | code = "".join(r.readlines()) |
| 188 | |
| 189 | tree = cst.parse_module(code) |
| 190 | transformer = SortMethodsTransformer(class_name) |
| 191 | tree_updated = tree.visit(transformer) |
| 192 | |
| 193 | if dry_run: |
| 194 | diff = "".join(difflib.unified_diff(code.splitlines(1), tree_updated.code.splitlines(1))) |
| 195 | if diff: |
| 196 | stdout_lock.acquire() |
| 197 | print(f"Diff of {class_name}:") |
| 198 | print(diff) |
| 199 | print() |
| 200 | stdout_lock.release() |
| 201 | else: |
| 202 | if not tree_updated.deep_equals(tree): |
| 203 | with open(filename, "w") as w: |
| 204 | w.write(tree_updated.code) |
| 205 | finally: |
| 206 | if file_lock: |
| 207 | file_lock.release() |
| 208 | |
| 209 | |
| 210 | class SortFileWorker: |
no test coverage detected
searching dependent graphs…