Message307865
This issue affected me today. I'm editing a codebase that has mixed line endings in different files. I'd like to patch for Python 3 support without changing line endings. Even invoking a single fixer (print), the line endings mutate. Since I'm running on macOS, the files with CRLF get LF line endings.
Answers [in this question](https://stackoverflow.com/questions/39028517/2to3-how-to-keep-newline-characters-from-input-file) suggest the mutation can be suppressed by altering the _to_system_newlines function, but the proposed fix has no effect on the Python 3.6 version of this routine.
I thought I'd encountered this issue before, but I realized after searching that I was thinking of issue10639, which may present a model for retaining the newlines when refactoring the code.
I found I was able to work around the issue by putting lib2to3-clean.py in my current directory:
import lib2to3.refactor
import runpy
import functools
if __name__ == '__main__':
lib2to3.refactor._open_with_encoding = functools.partial(open, newline='')
runpy.run_module('lib2to3')
And invoking `python -m lib2to3-clean` instead of `-m lib2to3`. The addition of newline='' follows the [guidance in the docs](https://docs.python.org/release/3.2/library/functions.html#open) on how to avoid mutating newlines.
I've released this functionality in [jaraco.develop 4.0](https://pypi.org/project/jaraco.develop) so others can readily invoke it with `rwt jaraco.develop -- -m jaraco.develop.lib2to3`. |
|
Date |
User |
Action |
Args |
2017-12-08 19:25:24 | jaraco | set | recipients:
+ jaraco, bialix, benjamin.peterson, eric.araujo |
2017-12-08 19:25:24 | jaraco | set | messageid: <1512761124.13.0.213398074469.issue11594@psf.upfronthosting.co.za> |
2017-12-08 19:25:24 | jaraco | link | issue11594 messages |
2017-12-08 19:25:24 | jaraco | create | |
|