comparison mercurial/pycompat.py @ 45727:d4c4391aa7f2

pycompat: add an entry for unnamedtmpfile I am going to use unnamed temporary files to pass arbitrarily large input data to worker creating bundles. To do so, I need a unified API that work on py2 and py3. Differential Revision: https://phab.mercurial-scm.org/D9211
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 14 Oct 2020 17:51:56 +0200
parents d1072cba8aff
children e3d595b7fbaa
comparison
equal deleted inserted replaced
45726:d1072cba8aff 45727:d4c4391aa7f2
504 # text=True is not supported; use util.from/tonativeeol() instead 504 # text=True is not supported; use util.from/tonativeeol() instead
505 def mkstemp(suffix=b'', prefix=b'tmp', dir=None): 505 def mkstemp(suffix=b'', prefix=b'tmp', dir=None):
506 return tempfile.mkstemp(suffix, prefix, dir) 506 return tempfile.mkstemp(suffix, prefix, dir)
507 507
508 508
509 # TemporaryFile does not support an "encoding=" argument on python2.
510 # This wrapper file are always open in byte mode.
511 def unnamedtempfile(mode=None, *args, **kwargs):
512 if mode is None:
513 mode = b'w+b'
514 else:
515 mode = sysstr(mode)
516 assert 'b' in mode
517 return tempfile.TemporaryFile(mode, *args, **kwargs)
518
519
509 # NamedTemporaryFile does not support an "encoding=" argument on python2. 520 # NamedTemporaryFile does not support an "encoding=" argument on python2.
510 # This wrapper file are always open in byte mode. 521 # This wrapper file are always open in byte mode.
511 def namedtempfile( 522 def namedtempfile(
512 mode=b'w+b', bufsize=-1, suffix=b'', prefix=b'tmp', dir=None, delete=True 523 mode=b'w+b', bufsize=-1, suffix=b'', prefix=b'tmp', dir=None, delete=True
513 ): 524 ):