Many of the fixers cause the tool to report a file as both unchanged and modified.
For example when checking a file with the following contents:
```
s = "str"
```
using the following command: `python -m lib2to3 -f unicode unicode_test.py`
The following is output:
```
RefactoringTool: No changes to unicode_test.py
RefactoringTool: Files that need to be modified:
RefactoringTool: unicode_test.py
```
When a fixer returns a node, even if it is the original node without changes, it is considered as a change to the code (https://github.com/python/cpython/blob/cf18c9e9d4d44f6671a3fe6011bb53d8ee9bd92b/Lib/lib2to3/refactor.py#L446-L447) and the file is later added to the list of modified files. I have not yet identified which fixers have this issue.
The fix appears to be that fixers need to be aware of when they have not made a change and should `None` when that is the case. |