[PATCH 3 of 4] progress: obtain stderr from ui
Gregory Szorc
gregory.szorc at gmail.com
Tue Nov 8 10:31:31 EST 2016
> On Nov 8, 2016, at 06:47, Yuya Nishihara <yuya at tcha.org> wrote:
>
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1476969168 -32400
> # Thu Oct 20 22:12:48 2016 +0900
> # Node ID 2d4f257e45ea19cc71912f285a090036deeacb40
> # Parent e9cec005658fc72458c49965e8c52b4b5ede0309
> progress: obtain stderr from ui
>
> This will help Python 3 porting.
>
> diff --git a/mercurial/progress.py b/mercurial/progress.py
> --- a/mercurial/progress.py
> +++ b/mercurial/progress.py
> @@ -7,7 +7,6 @@
>
> from __future__ import absolute_import
>
> -import sys
> import threading
> import time
>
> @@ -19,7 +18,7 @@ def spacejoin(*args):
>
> def shouldprint(ui):
> return not (ui.quiet or ui.plain('progress')) and (
> - ui._isatty(sys.stderr) or ui.configbool('progress', 'assume-tty'))
> + ui._isatty(ui.ferr) or ui.configbool('progress', 'assume-tty'))
This is the only part of the series I could see as problematic. But as long as ferr is always a file descriptor and not some proxy object, this should be fine.
>
> def fmtremaining(seconds):
> """format a number of remaining seconds in human readable way
> @@ -158,14 +157,14 @@ class progbar(object):
> out = spacejoin(head, prog, tail)
> else:
> out = spacejoin(head, tail)
> - sys.stderr.write('\r' + encoding.trim(out, termwidth))
> + self.ui.ferr.write('\r' + encoding.trim(out, termwidth))
> self.lasttopic = topic
> - sys.stderr.flush()
> + self.ui.ferr.flush()
>
> def clear(self):
> if not self.printed or not self.lastprint or not shouldprint(self.ui):
> return
> - sys.stderr.write('\r%s\r' % (' ' * self.width()))
> + self.ui.ferr.write('\r%s\r' % (' ' * self.width()))
> if self.printed:
> # force immediate re-paint of progress bar
> self.lastprint = 0
> @@ -176,8 +175,8 @@ class progbar(object):
> if self.ui.configbool('progress', 'clear-complete', default=True):
> self.clear()
> else:
> - sys.stderr.write('\n')
> - sys.stderr.flush()
> + self.ui.ferr.write('\n')
> + self.ui.ferr.flush()
>
> def width(self):
> tw = self.ui.termwidth()
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list