summaryrefslogtreecommitdiffstats
path: root/Lib/tempfile.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-08-28 03:29:45 (GMT)
committerGuido van Rossum <guido@python.org>2007-08-28 03:29:45 (GMT)
commitf0c7416157f471dbb8ac88aa72202cc984c02700 (patch)
tree946b3cf149cf4b8bdf3c3b798e6386ca4ed08371 /Lib/tempfile.py
parenta1a68521db007c55668ed7d7c31fb629804105a8 (diff)
downloadcpython-f0c7416157f471dbb8ac88aa72202cc984c02700.zip
cpython-f0c7416157f471dbb8ac88aa72202cc984c02700.tar.gz
cpython-f0c7416157f471dbb8ac88aa72202cc984c02700.tar.bz2
Patch # 1033 by Adam Hupp:
1) tempfile.TemporaryFile, NamedTemporaryFile, and SpooledTemporaryFile now pass newline and encoding to the underlying io.open call. 2) test_tempfile is updated 3) test_csv is updated to use the new arguments.
Diffstat (limited to 'Lib/tempfile.py')
-rw-r--r--Lib/tempfile.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index c71cebc..b6b3b96 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -406,13 +406,16 @@ class _TemporaryFileWrapper:
def __del__(self):
self.close()
-def NamedTemporaryFile(mode='w+b', bufsize=-1, suffix="",
- prefix=template, dir=None, delete=True):
+def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
+ newline=None, suffix="", prefix=template,
+ dir=None, delete=True):
"""Create and return a temporary file.
Arguments:
'prefix', 'suffix', 'dir' -- as for mkstemp.
- 'mode' -- the mode argument to os.fdopen (default "w+b").
- 'bufsize' -- the buffer size argument to os.fdopen (default -1).
+ 'mode' -- the mode argument to io.open (default "w+b").
+ '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)
'delete' -- whether the file is deleted on close (default True).
The file is created as mkstemp() would do it.
@@ -435,7 +438,9 @@ def NamedTemporaryFile(mode='w+b', bufsize=-1, suffix="",
flags |= _os.O_TEMPORARY
(fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
- file = _io.open(fd, mode, bufsize)
+ file = _io.open(fd, mode, buffering=buffering,
+ newline=newline, encoding=encoding)
+
return _TemporaryFileWrapper(file, name, delete)
if _os.name != 'posix' or _os.sys.platform == 'cygwin':
@@ -444,13 +449,16 @@ if _os.name != 'posix' or _os.sys.platform == 'cygwin':
TemporaryFile = NamedTemporaryFile
else:
- def TemporaryFile(mode='w+b', bufsize=-1, suffix="",
- prefix=template, dir=None):
+ def TemporaryFile(mode='w+b', buffering=-1, encoding=None,
+ newline=None, suffix="", prefix=template,
+ dir=None):
"""Create and return a temporary file.
Arguments:
'prefix', 'suffix', 'dir' -- as for mkstemp.
- 'mode' -- the mode argument to os.fdopen (default "w+b").
- 'bufsize' -- the buffer size argument to os.fdopen (default -1).
+ 'mode' -- the mode argument to io.open (default "w+b").
+ '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)
The file is created as mkstemp() would do it.
Returns an object with a file-like interface. The file has no
@@ -468,7 +476,8 @@ else:
(fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
try:
_os.unlink(name)
- return _io.open(fd, mode, bufsize)
+ return _io.open(fd, mode, buffering=buffering,
+ newline=newline, encoding=encoding)
except:
_os.close(fd)
raise
@@ -480,15 +489,19 @@ class SpooledTemporaryFile:
"""
_rolled = False
- def __init__(self, max_size=0, mode='w+b', bufsize=-1,
+ def __init__(self, max_size=0, mode='w+b', buffering=-1,
+ encoding=None, newline=None,
suffix="", prefix=template, dir=None):
if 'b' in mode:
self._file = _io.BytesIO()
else:
- self._file = _io.StringIO()
+ self._file = _io.StringIO(encoding=encoding, newline=newline)
self._max_size = max_size
self._rolled = False
- self._TemporaryFileArgs = (mode, bufsize, suffix, prefix, dir)
+ self._TemporaryFileArgs = {'mode': mode, 'buffering': buffering,
+ 'suffix': suffix, 'prefix': prefix,
+ 'encoding': encoding, 'newline': newline,
+ 'dir': dir}
def _check(self, file):
if self._rolled: return
@@ -499,7 +512,7 @@ class SpooledTemporaryFile:
def rollover(self):
if self._rolled: return
file = self._file
- newfile = self._file = TemporaryFile(*self._TemporaryFileArgs)
+ newfile = self._file = TemporaryFile(**self._TemporaryFileArgs)
del self._TemporaryFileArgs
newfile.write(file.getvalue())