summaryrefslogtreecommitdiffstats
path: root/Lib/lib2to3
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-06-16 06:59:01 (GMT)
committerGitHub <noreply@github.com>2017-06-16 06:59:01 (GMT)
commit272d888c7b58aff5e1614e3b12e8198b92054835 (patch)
tree9514cfb06bace475f466f9c8222fb318e8966ee2 /Lib/lib2to3
parentfaa63d1e84b273f75d94fe6e66f67a13e4c97f5e (diff)
downloadcpython-272d888c7b58aff5e1614e3b12e8198b92054835.zip
cpython-272d888c7b58aff5e1614e3b12e8198b92054835.tar.gz
cpython-272d888c7b58aff5e1614e3b12e8198b92054835.tar.bz2
bpo-29783: Replace codecs.open() with io.open() (#599)
Diffstat (limited to 'Lib/lib2to3')
-rw-r--r--Lib/lib2to3/pgen2/driver.py5
-rw-r--r--Lib/lib2to3/refactor.py36
2 files changed, 11 insertions, 30 deletions
diff --git a/Lib/lib2to3/pgen2/driver.py b/Lib/lib2to3/pgen2/driver.py
index a27b9cb..e5e4824 100644
--- a/Lib/lib2to3/pgen2/driver.py
+++ b/Lib/lib2to3/pgen2/driver.py
@@ -94,11 +94,8 @@ class Driver(object):
def parse_file(self, filename, encoding=None, debug=False):
"""Parse a file and return the syntax tree."""
- stream = codecs.open(filename, "r", encoding)
- try:
+ with io.open(filename, "r", encoding=encoding) as stream:
return self.parse_stream(stream, debug)
- finally:
- stream.close()
def parse_string(self, text, debug=False):
"""Parse a string and return the syntax tree."""
diff --git a/Lib/lib2to3/refactor.py b/Lib/lib2to3/refactor.py
index 70b2a00..db2e38d 100644
--- a/Lib/lib2to3/refactor.py
+++ b/Lib/lib2to3/refactor.py
@@ -12,12 +12,12 @@ __author__ = "Guido van Rossum <guido@python.org>"
# Python imports
+import io
import os
import sys
import logging
import operator
import collections
-import io
from itertools import chain
# Local imports
@@ -107,22 +107,6 @@ def get_fixers_from_package(pkg_name):
def _identity(obj):
return obj
-if sys.version_info < (3, 0):
- import codecs
- _open_with_encoding = codecs.open
- # codecs.open doesn't translate newlines sadly.
- def _from_system_newlines(input):
- return input.replace("\r\n", "\n")
- def _to_system_newlines(input):
- if os.linesep != "\n":
- return input.replace("\n", os.linesep)
- else:
- return input
-else:
- _open_with_encoding = open
- _from_system_newlines = _identity
- _to_system_newlines = _identity
-
def _detect_future_features(source):
have_docstring = False
@@ -330,8 +314,8 @@ class RefactoringTool(object):
encoding = tokenize.detect_encoding(f.readline)[0]
finally:
f.close()
- with _open_with_encoding(filename, "r", encoding=encoding) as f:
- return _from_system_newlines(f.read()), encoding
+ with io.open(filename, "r", encoding=encoding) as f:
+ return f.read(), encoding
def refactor_file(self, filename, write=False, doctests_only=False):
"""Refactors a file."""
@@ -530,16 +514,16 @@ class RefactoringTool(object):
set.
"""
try:
- f = _open_with_encoding(filename, "w", encoding=encoding)
+ fp = io.open(filename, "w", encoding=encoding)
except OSError as err:
self.log_error("Can't create %s: %s", filename, err)
return
- try:
- f.write(_to_system_newlines(new_text))
- except OSError as err:
- self.log_error("Can't write %s: %s", filename, err)
- finally:
- f.close()
+
+ with fp:
+ try:
+ fp.write(new_text)
+ except OSError as err:
+ self.log_error("Can't write %s: %s", filename, err)
self.log_debug("Wrote changes to %s", filename)
self.wrote = True