[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