summaryrefslogtreecommitdiff
path: root/Lib/tempfile.py
diff options
context:
space:
mode:
authorsth <sth.dev@tejp.de>2018-05-23 07:07:01 +0200
committerSerhiy Storchaka <storchaka@gmail.com>2018-05-23 08:07:01 +0300
commit825aab95fde959541859383f8ea7e7854ebfd49f (patch)
tree727aafb15e3d3054ccd279f732b715aae74f899d /Lib/tempfile.py
parent0e61dffdbaf39ac5916ce431ff3b37db8faa1d2d (diff)
downloadcpython-git-825aab95fde959541859383f8ea7e7854ebfd49f.tar.gz
bpo-27300: Add the errors parameter to tempfile classes. (GH-6696)
Diffstat (limited to 'Lib/tempfile.py')
-rw-r--r--Lib/tempfile.py35
1 files changed, 16 insertions, 19 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 2143224169..e6fb3c8e9a 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -519,7 +519,7 @@ class _TemporaryFileWrapper:
def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
newline=None, suffix=None, prefix=None,
- dir=None, delete=True):
+ dir=None, delete=True, *, errors=None):
"""Create and return a temporary file.
Arguments:
'prefix', 'suffix', 'dir' -- as for mkstemp.
@@ -528,6 +528,7 @@ def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
'encoding' -- the encoding argument to io.open (default None)
'newline' -- the newline argument to io.open (default None)
'delete' -- whether the file is deleted on close (default True).
+ 'errors' -- the errors argument to io.open (default None)
The file is created as mkstemp() would do it.
Returns an object with a file-like interface; the name of the file
@@ -547,7 +548,7 @@ def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
(fd, name) = _mkstemp_inner(dir, prefix, suffix, flags, output_type)
try:
file = _io.open(fd, mode, buffering=buffering,
- newline=newline, encoding=encoding)
+ newline=newline, encoding=encoding, errors=errors)
return _TemporaryFileWrapper(file, name, delete)
except BaseException:
@@ -568,7 +569,7 @@ else:
def TemporaryFile(mode='w+b', buffering=-1, encoding=None,
newline=None, suffix=None, prefix=None,
- dir=None):
+ dir=None, *, errors=None):
"""Create and return a temporary file.
Arguments:
'prefix', 'suffix', 'dir' -- as for mkstemp.
@@ -576,6 +577,7 @@ else:
'buffering' -- the buffer size argument to io.open (default -1).
'encoding' -- the encoding argument to io.open (default None)
'newline' -- the newline argument to io.open (default None)
+ 'errors' -- the errors argument to io.open (default None)
The file is created as mkstemp() would do it.
Returns an object with a file-like interface. The file has no
@@ -609,7 +611,8 @@ else:
else:
try:
return _io.open(fd, mode, buffering=buffering,
- newline=newline, encoding=encoding)
+ newline=newline, encoding=encoding,
+ errors=errors)
except:
_os.close(fd)
raise
@@ -619,7 +622,7 @@ else:
try:
_os.unlink(name)
return _io.open(fd, mode, buffering=buffering,
- newline=newline, encoding=encoding)
+ newline=newline, encoding=encoding, errors=errors)
except:
_os.close(fd)
raise
@@ -633,7 +636,7 @@ class SpooledTemporaryFile:
def __init__(self, max_size=0, mode='w+b', buffering=-1,
encoding=None, newline=None,
- suffix=None, prefix=None, dir=None):
+ suffix=None, prefix=None, dir=None, *, errors=None):
if 'b' in mode:
self._file = _io.BytesIO()
else:
@@ -646,7 +649,7 @@ class SpooledTemporaryFile:
self._TemporaryFileArgs = {'mode': mode, 'buffering': buffering,
'suffix': suffix, 'prefix': prefix,
'encoding': encoding, 'newline': newline,
- 'dir': dir}
+ 'dir': dir, 'errors': errors}
def _check(self, file):
if self._rolled: return
@@ -692,12 +695,11 @@ class SpooledTemporaryFile:
@property
def encoding(self):
- try:
- return self._file.encoding
- except AttributeError:
- if 'b' in self._TemporaryFileArgs['mode']:
- raise
- return self._TemporaryFileArgs['encoding']
+ return self._file.encoding
+
+ @property
+ def errors(self):
+ return self._file.errors
def fileno(self):
self.rollover()
@@ -725,12 +727,7 @@ class SpooledTemporaryFile:
@property
def newlines(self):
- try:
- return self._file.newlines
- except AttributeError:
- if 'b' in self._TemporaryFileArgs['mode']:
- raise
- return self._TemporaryFileArgs['newline']
+ return self._file.newlines
def read(self, *args):
return self._file.read(*args)