diff --git a/hgext/chgserver.py b/hgext/chgserver.py --- a/hgext/chgserver.py +++ b/hgext/chgserver.py @@ -232,7 +232,7 @@ def _newchgui(srcui, csystem): # these situations and will behave differently (write to stdout). if (any(s[1] for s in self._bufferstates) or not util.safehasattr(self.fout, 'fileno') - or self.fout.fileno() != sys.stdout.fileno()): + or self.fout.fileno() != util.stdout.fileno()): return super(chgui, self).system(cmd, environ, cwd, onerr, errprefix) # copied from mercurial/util.py:system() diff --git a/hgext/pager.py b/hgext/pager.py --- a/hgext/pager.py +++ b/hgext/pager.py @@ -84,19 +84,19 @@ testedwith = 'ships-with-hg-core' def _runpager(ui, p): pager = subprocess.Popen(p, shell=True, bufsize=-1, close_fds=util.closefds, stdin=subprocess.PIPE, - stdout=sys.stdout, stderr=sys.stderr) + stdout=util.stdout, stderr=util.stderr) # back up original file objects and descriptors olduifout = ui.fout - oldstdout = sys.stdout - stdoutfd = os.dup(sys.stdout.fileno()) - stderrfd = os.dup(sys.stderr.fileno()) + oldstdout = util.stdout + stdoutfd = os.dup(util.stdout.fileno()) + stderrfd = os.dup(util.stderr.fileno()) # create new line-buffered stdout so that output can show up immediately - ui.fout = sys.stdout = newstdout = os.fdopen(sys.stdout.fileno(), 'wb', 1) - os.dup2(pager.stdin.fileno(), sys.stdout.fileno()) - if ui._isatty(sys.stderr): - os.dup2(pager.stdin.fileno(), sys.stderr.fileno()) + ui.fout = util.stdout = newstdout = os.fdopen(util.stdout.fileno(), 'wb', 1) + os.dup2(pager.stdin.fileno(), util.stdout.fileno()) + if ui._isatty(util.stderr): + os.dup2(pager.stdin.fileno(), util.stderr.fileno()) @atexit.register def killpager(): @@ -104,13 +104,13 @@ def _runpager(ui, p): signal.signal(signal.SIGINT, signal.SIG_IGN) pager.stdin.close() ui.fout = olduifout - sys.stdout = oldstdout + util.stdout = oldstdout # close new stdout while it's associated with pager; otherwise stdout # fd would be closed when newstdout is deleted newstdout.close() # restore original fds: stdout is open again - os.dup2(stdoutfd, sys.stdout.fileno()) - os.dup2(stderrfd, sys.stderr.fileno()) + os.dup2(stdoutfd, util.stdout.fileno()) + os.dup2(stderrfd, util.stderr.fileno()) pager.wait() def uisetup(ui): diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -888,8 +888,8 @@ def service(opts, parentfn=None, initfn= raise error.Abort(_('invalid value for --daemon-postexec: %s') % inst) util.hidewindow() - sys.stdout.flush() - sys.stderr.flush() + util.stdout.flush() + util.stderr.flush() nullfd = os.open(os.devnull, os.O_RDWR) logfilefd = nullfd diff --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -15,7 +15,6 @@ import select import signal import socket import struct -import sys import traceback from .i18n import _ @@ -304,8 +303,8 @@ def _protectio(ui): ui.flush() newfiles = [] nullfd = os.open(os.devnull, os.O_RDWR) - for f, sysf, mode in [(ui.fin, sys.stdin, 'rb'), - (ui.fout, sys.stdout, 'wb')]: + for f, sysf, mode in [(ui.fin, util.stdin, 'rb'), + (ui.fout, util.stdout, 'wb')]: if f is sysf: newfd = os.dup(f.fileno()) os.dup2(nullfd, f.fileno()) diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -97,7 +97,7 @@ def dispatch(req): elif req.ui: ferr = req.ui.ferr else: - ferr = sys.stderr + ferr = util.stderr try: if not req.ui: diff --git a/mercurial/hgweb/wsgicgi.py b/mercurial/hgweb/wsgicgi.py --- a/mercurial/hgweb/wsgicgi.py +++ b/mercurial/hgweb/wsgicgi.py @@ -11,7 +11,6 @@ from __future__ import absolute_import import os -import sys from .. import ( util, @@ -22,8 +21,8 @@ from . import ( ) def launch(application): - util.setbinary(sys.stdin) - util.setbinary(sys.stdout) + util.setbinary(util.stdin) + util.setbinary(util.stdout) environ = dict(os.environ.iteritems()) environ.setdefault('PATH_INFO', '') @@ -33,12 +32,12 @@ def launch(application): if environ['PATH_INFO'].startswith(scriptname): environ['PATH_INFO'] = environ['PATH_INFO'][len(scriptname):] - stdin = sys.stdin + stdin = util.stdin if environ.get('HTTP_EXPECT', '').lower() == '100-continue': - stdin = common.continuereader(stdin, sys.stdout.write) + stdin = common.continuereader(stdin, util.stdout.write) environ['wsgi.input'] = stdin - environ['wsgi.errors'] = sys.stderr + environ['wsgi.errors'] = util.stderr environ['wsgi.version'] = (1, 0) environ['wsgi.multithread'] = False environ['wsgi.multiprocess'] = True @@ -51,7 +50,7 @@ def launch(application): headers_set = [] headers_sent = [] - out = sys.stdout + out = util.stdout def write(data): if not headers_set: diff --git a/mercurial/hook.py b/mercurial/hook.py --- a/mercurial/hook.py +++ b/mercurial/hook.py @@ -209,11 +209,11 @@ def runhooks(ui, repo, name, hooks, thro for hname, cmd in hooks: if oldstdout == -1 and _redirect: try: - stdoutno = sys.stdout.fileno() - stderrno = sys.stderr.fileno() + stdoutno = util.stdout.fileno() + stderrno = util.stderr.fileno() # temporarily redirect stdout to stderr, if possible if stdoutno >= 0 and stderrno >= 0: - sys.stdout.flush() + util.stdout.flush() oldstdout = os.dup(stdoutno) os.dup2(stderrno, stdoutno) except (OSError, AttributeError): @@ -255,10 +255,10 @@ def runhooks(ui, repo, name, hooks, thro # The stderr is fully buffered on Windows when connected to a pipe. # A forcible flush is required to make small stderr data in the # remote side available to the client immediately. - sys.stderr.flush() + util.stderr.flush() finally: if _redirect and oldstdout >= 0: - sys.stdout.flush() # write hook output to stderr fd + util.stdout.flush() # write hook output to stderr fd os.dup2(oldstdout, stdoutno) os.close(oldstdout) diff --git a/mercurial/keepalive.py b/mercurial/keepalive.py --- a/mercurial/keepalive.py +++ b/mercurial/keepalive.py @@ -660,14 +660,14 @@ def continuity(url): def comp(N, url): print(' making %i connections to:\n %s' % (N, url)) - sys.stdout.write(' first using the normal urllib handlers') + util.stdout.write(' first using the normal urllib handlers') # first use normal opener opener = urlreq.buildopener() urlreq.installopener(opener) t1 = fetch(N, url) print(' TIME: %.3f s' % t1) - sys.stdout.write(' now using the keepalive handler ') + util.stdout.write(' now using the keepalive handler ') # now install the keepalive handler and try again opener = urlreq.buildopener(HTTPHandler()) urlreq.installopener(opener) @@ -712,11 +712,11 @@ def test_timeout(url): i = 20 print(" waiting %i seconds for the server to close the connection" % i) while i > 0: - sys.stdout.write('\r %2i' % i) - sys.stdout.flush() + util.stdout.write('\r %2i' % i) + util.stdout.flush() time.sleep(1) i -= 1 - sys.stderr.write('\r') + util.stderr.write('\r') print(" fetching the file a second time") fo = urlreq.urlopen(url) diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -130,9 +130,9 @@ class ui(object): self.httppasswordmgrdb = src.httppasswordmgrdb else: - self.fout = sys.stdout - self.ferr = sys.stderr - self.fin = sys.stdin + self.fout = util.stdout + self.ferr = util.stderr + self.fin = util.stdin # shared read-only environment self.environ = os.environ diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -986,7 +986,7 @@ def system(cmd, environ=None, cwd=None, if environ is None: environ = {} try: - sys.stdout.flush() + stdout.flush() except Exception: pass def py2shell(val): @@ -2759,9 +2759,9 @@ def timed(func): finally: elapsed = time.time() - start _timenesting[0] -= indent - sys.stderr.write('%s%s: %s\n' % - (' ' * _timenesting[0], func.__name__, - timecount(elapsed))) + stderr.write('%s%s: %s\n' % + (' ' * _timenesting[0], func.__name__, + timecount(elapsed))) return wrapper _sizeunits = (('m', 2**20), ('k', 2**10), ('g', 2**30), @@ -2826,7 +2826,7 @@ def getstackframes(skip=0, line=' %-*s i else: yield line % (fnmax, fnln, func) -def debugstacktrace(msg='stacktrace', skip=0, f=sys.stderr, otherf=sys.stdout): +def debugstacktrace(msg='stacktrace', skip=0, f=stderr, otherf=stdout): '''Writes a message to f (stderr) with a nicely formatted stacktrace. Skips the 'skip' last entries. By default it will flush stdout first. It can be used everywhere and intentionally does not require an ui object. diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py --- a/mercurial/wireproto.py +++ b/mercurial/wireproto.py @@ -10,7 +10,6 @@ from __future__ import absolute_import import hashlib import itertools import os -import sys import tempfile from .i18n import _ @@ -575,8 +574,8 @@ def options(cmd, keys, others): opts[k] = others[k] del others[k] if others: - sys.stderr.write("warning: %s ignored unexpected arguments %s\n" - % (cmd, ",".join(others))) + util.stderr.write("warning: %s ignored unexpected arguments %s\n" + % (cmd, ",".join(others))) return opts def bundle1allowed(repo, action): @@ -907,11 +906,11 @@ def unbundle(repo, proto, heads): try: raise except error.Abort: - # The old code we moved used sys.stderr directly. + # The old code we moved used util.stderr directly. # We did not change it to minimise code change. # This need to be moved to something proper. # Feel free to do it. - sys.stderr.write("abort: %s\n" % exc) + util.stderr.write("abort: %s\n" % exc) return pushres(0) except error.PushRaced: return pusherr(str(exc))