From patchwork Sat May 26 04:47:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,3] py3: wrap tempfile.mkdtemp() to use bytes path From: Yuya Nishihara X-Patchwork-Id: 31883 Message-Id: <7fb141e660f0e83b9838.1527310033@mimosa> To: mercurial-devel@mercurial-scm.org Date: Sat, 26 May 2018 13:47:13 +0900 # HG changeset patch # User Yuya Nishihara # Date 1527304836 -32400 # Sat May 26 12:20:36 2018 +0900 # Node ID 7fb141e660f0e83b98388f1fdaf3480b548b2ce8 # Parent 15be905498df86a8ff372e822a22262289f115da py3: wrap tempfile.mkdtemp() to use bytes path This also flips the default to use a bytes path on Python 3. diff --git a/hgext/convert/darcs.py b/hgext/convert/darcs.py --- a/hgext/convert/darcs.py +++ b/hgext/convert/darcs.py @@ -10,10 +10,11 @@ import errno import os import re import shutil -import tempfile + from mercurial.i18n import _ from mercurial import ( error, + pycompat, util, ) from mercurial.utils import dateutil @@ -76,7 +77,7 @@ class darcs_source(common.converter_sour self.ui.warn(_('failed to detect repository format!')) def before(self): - self.tmppath = tempfile.mkdtemp( + self.tmppath = pycompat.mkdtemp( prefix='convert-' + os.path.basename(self.path) + '-') output, status = self.run('init', repodir=self.tmppath) self.checkexit(status) diff --git a/hgext/extdiff.py b/hgext/extdiff.py --- a/hgext/extdiff.py +++ b/hgext/extdiff.py @@ -71,7 +71,7 @@ import os import re import shutil import stat -import tempfile + from mercurial.i18n import _ from mercurial.node import ( nullid, @@ -210,7 +210,7 @@ def dodiff(ui, repo, cmdline, pats, opts if not common: return 0 - tmproot = tempfile.mkdtemp(prefix='extdiff.') + tmproot = pycompat.mkdtemp(prefix='extdiff.') try: if not opts.get('patch'): # Always make a copy of node1a (and node1b, if applicable) diff --git a/hgext/keyword.py b/hgext/keyword.py --- a/hgext/keyword.py +++ b/hgext/keyword.py @@ -87,7 +87,6 @@ from __future__ import absolute_import import os import re -import tempfile import weakref from mercurial.i18n import _ @@ -434,7 +433,7 @@ def demo(ui, repo, *args, **opts): ui.write('%s = %s\n' % (k, v)) fn = 'demo.txt' - tmpdir = tempfile.mkdtemp('', 'kwdemo.') + tmpdir = pycompat.mkdtemp('', 'kwdemo.') ui.note(_('creating temporary repository at %s\n') % tmpdir) if repo is None: baseui = ui diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py --- a/hgext/patchbomb.py +++ b/hgext/patchbomb.py @@ -79,7 +79,6 @@ import email.utils as eutil import errno import os import socket -import tempfile from mercurial.i18n import _ from mercurial import ( @@ -317,7 +316,7 @@ def _getbundle(repo, dest, **opts): The bundle is a returned as a single in-memory binary blob. """ ui = repo.ui - tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-') + tmpdir = pycompat.mkdtemp(prefix='hg-email-bundle-') tmpfn = os.path.join(tmpdir, 'bundle') btype = ui.config('patchbomb', 'bundletype') if btype: diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py --- a/mercurial/bundlerepo.py +++ b/mercurial/bundlerepo.py @@ -15,7 +15,6 @@ from __future__ import absolute_import import os import shutil -import tempfile from .i18n import _ from .node import nullid @@ -270,7 +269,7 @@ class bundlerepository(localrepo.localre try: localrepo.localrepository.__init__(self, ui, repopath) except error.RepoError: - self._tempparent = tempfile.mkdtemp() + self._tempparent = pycompat.mkdtemp() localrepo.instance(ui, self._tempparent, 1) localrepo.localrepository.__init__(self, ui, self._tempparent) self.ui.setconfig('phases', 'publish', False, 'bundlerepo') diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -11,7 +11,6 @@ import contextlib import os import re import shutil -import tempfile from .i18n import _ from .node import nullid, short @@ -713,7 +712,7 @@ def _maketempfiles(repo, fco, fca, local tmproot = None tmprootprefix = repo.ui.config('experimental', 'mergetempdirprefix') if tmprootprefix: - tmproot = tempfile.mkdtemp(prefix=tmprootprefix) + tmproot = pycompat.mkdtemp(prefix=tmprootprefix) def maketempfrompath(prefix, path): fullbase, ext = os.path.splitext(path) diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -18,7 +18,6 @@ import os import posixpath import re import shutil -import tempfile import zlib from .i18n import _ @@ -573,7 +572,7 @@ class filestore(object): self.size += len(data) else: if self.opener is None: - root = tempfile.mkdtemp(prefix='hg-patch-') + root = pycompat.mkdtemp(prefix='hg-patch-') self.opener = vfsmod.vfs(root) # Avoid filename issues with these simple names fn = '%d' % self.created diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -386,6 +386,9 @@ def getoptb(args, shortlist, namelist): def gnugetoptb(args, shortlist, namelist): return _getoptbwrapper(getopt.gnu_getopt, args, shortlist, namelist) +def mkdtemp(suffix=b'', prefix=b'tmp', dir=None): + return tempfile.mkdtemp(suffix, prefix, dir) + # 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) diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py --- a/mercurial/upgrade.py +++ b/mercurial/upgrade.py @@ -8,7 +8,6 @@ from __future__ import absolute_import import stat -import tempfile from .i18n import _ from . import ( @@ -18,6 +17,7 @@ from . import ( hg, localrepo, manifest, + pycompat, revlog, scmutil, util, @@ -657,7 +657,7 @@ def _upgraderepo(ui, srcrepo, dstrepo, r ui.write(_('data fully migrated to temporary repository\n')) - backuppath = tempfile.mkdtemp(prefix='upgradebackup.', dir=srcrepo.path) + backuppath = pycompat.mkdtemp(prefix='upgradebackup.', dir=srcrepo.path) backupvfs = vfsmod.vfs(backuppath) # Make a backup of requires file first, as it is the first to be modified. @@ -842,7 +842,7 @@ def upgraderepo(ui, repo, run=False, opt # data. There are less heavyweight ways to do this, but it is easier # to create a new repo object than to instantiate all the components # (like the store) separately. - tmppath = tempfile.mkdtemp(prefix='upgrade.', dir=repo.path) + tmppath = pycompat.mkdtemp(prefix='upgrade.', dir=repo.path) backuppath = None try: ui.write(_('creating temporary repository to stage migrated '