Mercurial > hg
changeset 45056:9694895749ad
pycompat: remove pycompat.{stdin,stdout,stderr}
All users have been changed to use procutil.{stdin,stdout,stderr}, which provide
consistent behavior across platforms and Python versions.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Mon, 06 Jul 2020 17:51:18 +0200 |
parents | 4c1b4805db57 |
children | d6e99a446eea |
files | mercurial/pycompat.py mercurial/utils/procutil.py |
diffstat | 2 files changed, 10 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/pycompat.py Mon Jul 06 17:44:25 2020 +0200 +++ b/mercurial/pycompat.py Mon Jul 06 17:51:18 2020 +0200 @@ -142,17 +142,6 @@ long = int - # Warning: sys.stdout.buffer and sys.stderr.buffer do not necessarily have - # the same buffering behavior as sys.stdout and sys.stderr. The interpreter - # initializes them with block-buffered streams or unbuffered streams (when - # the -u option or the PYTHONUNBUFFERED environment variable is set), never - # with a line-buffered stream. - # TODO: .buffer might not exist if std streams were replaced; we'll need - # a silly wrapper to make a bytes stream backed by a unicode one. - stdin = sys.stdin.buffer - stdout = sys.stdout.buffer - stderr = sys.stderr.buffer - if getattr(sys, 'argv', None) is not None: # On POSIX, the char** argv array is converted to Python str using # Py_DecodeLocale(). The inverse of this is Py_EncodeLocale(), which @@ -476,9 +465,6 @@ osaltsep = os.altsep osdevnull = os.devnull long = long - stdin = sys.stdin - stdout = sys.stdout - stderr = sys.stderr if getattr(sys, 'argv', None) is not None: sysargv = sys.argv sysplatform = sys.platform
--- a/mercurial/utils/procutil.py Mon Jul 06 17:44:25 2020 +0200 +++ b/mercurial/utils/procutil.py Mon Jul 06 17:51:18 2020 +0200 @@ -80,9 +80,16 @@ return LineBufferedWrapper(stream) -stderr = pycompat.stderr -stdin = pycompat.stdin -stdout = pycompat.stdout +if pycompat.ispy3: + # TODO: .buffer might not exist if std streams were replaced; we'll need + # a silly wrapper to make a bytes stream backed by a unicode one. + stdin = sys.stdin.buffer + stdout = sys.stdout.buffer + stderr = sys.stderr.buffer +else: + stdin = sys.stdin + stdout = sys.stdout + stderr = sys.stderr if pycompat.iswindows: stdout = platform.winstdout(stdout)