Comments
Patch
@@ -120,6 +120,8 @@ class externalbundlestore(abstractbundle
def write(self, data):
# Won't work on windows because you can't open file second time without
# closing it
+ # TODO: rewrite without str.format() and replace NamedTemporaryFile()
+ # with pycompat.namedtempfile()
with NamedTemporaryFile() as temp:
temp.write(data)
temp.flush()
@@ -142,6 +144,8 @@ class externalbundlestore(abstractbundle
def read(self, handle):
# Won't work on windows because you can't open file second time without
# closing it
+ # TODO: rewrite without str.format() and replace NamedTemporaryFile()
+ # with pycompat.namedtempfile()
with NamedTemporaryFile() as temp:
formatted_args = [arg.format(filename=temp.name, handle=handle)
for arg in self.get_args]
@@ -21,7 +21,6 @@ import stat
import string
import subprocess
import sys
-import tempfile
import time
from .i18n import _
@@ -970,7 +969,7 @@ def debugfsinfo(ui, path="."):
ui.write(('hardlink: %s\n') % (util.checknlink(path) and 'yes' or 'no'))
casesensitive = '(unknown)'
try:
- with tempfile.NamedTemporaryFile(prefix='.debugfsinfo', dir=path) as f:
+ with pycompat.namedtempfile(prefix='.debugfsinfo', dir=path) as f:
casesensitive = util.fscasesensitive(f.name) and 'yes' or 'no'
except OSError:
pass
@@ -249,16 +249,15 @@ def checklink(path):
else:
checkdir = path
cachedir = None
- fscheckdir = pycompat.fsdecode(checkdir)
- name = tempfile.mktemp(dir=fscheckdir,
+ name = tempfile.mktemp(dir=pycompat.fsdecode(checkdir),
prefix=r'checklink-')
name = pycompat.fsencode(name)
try:
fd = None
if cachedir is None:
- fd = tempfile.NamedTemporaryFile(dir=fscheckdir,
- prefix=r'hg-checklink-')
- target = pycompat.fsencode(os.path.basename(fd.name))
+ fd = pycompat.namedtempfile(dir=checkdir,
+ prefix='hg-checklink-')
+ target = os.path.basename(fd.name)
else:
# create a fixed file to link to; doesn't matter if it
# already exists.
@@ -392,3 +392,11 @@ def mkdtemp(suffix=b'', prefix=b'tmp', d
# 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)