diff mercurial/pycompat.py @ 38199:cc9aa88792fe

py3: wrap tempfile.NamedTemporaryFile() to return bytes fp.name Unlike its name, tempfile.NamedTemporaryFile is not a class, so I renamed the pycompat version to look like a plain function. Since temp.name uses in the infinitepush extension aren't bytes-safe, this patch leaves them unmodified. Another weird thing is tempfile.mktemp(), which does not accept bytes suffix nor prefix. Sigh.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 26 May 2018 12:38:07 +0900
parents 2ce60954b1b7
children 79dd61a4554f
line wrap: on
line diff
--- a/mercurial/pycompat.py	Sat May 26 12:20:36 2018 +0900
+++ b/mercurial/pycompat.py	Sat May 26 12:38:07 2018 +0900
@@ -392,3 +392,11 @@
 # text=True is not supported; use util.from/tonativeeol() instead
 def mkstemp(suffix=b'', prefix=b'tmp', dir=None):
     return tempfile.mkstemp(suffix, prefix, dir)
+
+# mode must include 'b'ytes as encoding= is not supported
+def namedtempfile(mode=b'w+b', bufsize=-1, suffix=b'', prefix=b'tmp', dir=None,
+                  delete=True):
+    mode = sysstr(mode)
+    assert r'b' in mode
+    return tempfile.NamedTemporaryFile(mode, bufsize, suffix=suffix,
+                                       prefix=prefix, dir=dir, delete=delete)