mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
#11175: argparse.FileType now accepts encoding and errors arguments.
Patch by Lucas Maystre.
This commit is contained in:
parent
09bb89b8cf
commit
74d6c250e1
5 changed files with 60 additions and 12 deletions
|
@ -1140,11 +1140,17 @@ class FileType(object):
|
|||
same values as the builtin open() function.
|
||||
- bufsize -- The file's desired buffer size. Accepts the same values as
|
||||
the builtin open() function.
|
||||
- encoding -- The file's encoding. Accepts the same values as the
|
||||
the builtin open() function.
|
||||
- errors -- A string indicating how encoding and decoding errors are to
|
||||
be handled. Accepts the same value as the builtin open() function.
|
||||
"""
|
||||
|
||||
def __init__(self, mode='r', bufsize=-1):
|
||||
def __init__(self, mode='r', bufsize=-1, encoding=None, errors=None):
|
||||
self._mode = mode
|
||||
self._bufsize = bufsize
|
||||
self._encoding = encoding
|
||||
self._errors = errors
|
||||
|
||||
def __call__(self, string):
|
||||
# the special argument "-" means sys.std{in,out}
|
||||
|
@ -1159,14 +1165,18 @@ class FileType(object):
|
|||
|
||||
# all other arguments are used as file names
|
||||
try:
|
||||
return open(string, self._mode, self._bufsize)
|
||||
return open(string, self._mode, self._bufsize, self._encoding,
|
||||
self._errors)
|
||||
except IOError as e:
|
||||
message = _("can't open '%s': %s")
|
||||
raise ArgumentTypeError(message % (string, e))
|
||||
|
||||
def __repr__(self):
|
||||
args = self._mode, self._bufsize
|
||||
args_str = ', '.join(repr(arg) for arg in args if arg != -1)
|
||||
kwargs = [('encoding', self._encoding), ('errors', self._errors)]
|
||||
args_str = ', '.join([repr(arg) for arg in args if arg != -1] +
|
||||
['%s=%r' % (kw, arg) for kw, arg in kwargs
|
||||
if arg is not None])
|
||||
return '%s(%s)' % (type(self).__name__, args_str)
|
||||
|
||||
# ===========================
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue