diff options
author | Victor Stinner <vstinner@python.org> | 2021-09-17 18:12:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-17 18:12:25 (GMT) |
commit | c5a677da9e7b2b2aa43b0b6dfb3813c0212379c0 (patch) | |
tree | 9b854c73182d5a4274358a956974f0431648f260 /Tools | |
parent | 778b07565e38cc94aa90318eb47b9cd09716756a (diff) | |
download | cpython-c5a677da9e7b2b2aa43b0b6dfb3813c0212379c0.zip cpython-c5a677da9e7b2b2aa43b0b6dfb3813c0212379c0.tar.gz cpython-c5a677da9e7b2b2aa43b0b6dfb3813c0212379c0.tar.bz2 |
bpo-45231: update_file.py preserves end of line (GH-28411)
The update_file.py tool now preserves the end of line of the updated
file. Fix the "make regen-frozen" command: it no longer changes the
end of line of PCbuild/ files on Unix. Git changes the end of line
depending on the platform.
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/scripts/update_file.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Tools/scripts/update_file.py b/Tools/scripts/update_file.py index cfc4e2b..5e22486 100644 --- a/Tools/scripts/update_file.py +++ b/Tools/scripts/update_file.py @@ -28,7 +28,19 @@ def updating_file_with_tmpfile(filename, tmpfile=None): elif os.path.isdir(tmpfile): tmpfile = os.path.join(tmpfile, filename + '.tmp') - with open(tmpfile, 'w') as outfile: + with open(filename, 'rb') as infile: + line = infile.readline() + + if line.endswith(b'\r\n'): + newline = "\r\n" + elif line.endswith(b'\r'): + newline = "\r" + elif line.endswith(b'\n'): + newline = "\n" + else: + raise ValueError(f"unknown end of line: {filename}: {line!a}") + + with open(tmpfile, 'w', newline=newline) as outfile: with open(filename) as infile: yield infile, outfile update_file_with_tmpfile(filename, tmpfile) |