> On Jun 2, 2020, at 14:07, Manuel Jacob <m...@manueljacob.de> wrote:
> 
> # HG changeset patch
> # User Manuel Jacob <m...@manueljacob.de>
> # Date 1591120869 -7200
> #      Tue Jun 02 20:01:09 2020 +0200
> # Branch stable
> # Node ID ebbc45544673c33ea3beb887ed4d5230b015102a
> # Parent  91e509a12dbc4cd6cf2dcb9dae3ed383932132ac
> py3: always flush ui streams on Python 3
> 
> On Python 2, we rely on that stdout and stderr are line buffered. Python 3’s
> io module doesn’t offer line buffered binary streams.

We use the underlying non-buffer thing though for std{err, out} though, or so I 
thought. Are you observing  behavior that this corrects?

> 
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -1198,9 +1198,14 @@ class ui(object):
>                     label = opts.get('label', b'')
>                     msg = self.label(msg, label)
>                 dest.write(msg)
> +            # On Python 2, stdout and stderr are usually line buffered, but
>             # stderr may be buffered under win32 when redirected to files,
>             # including stdout.
> -            if dest is self._ferr and not getattr(self._ferr, 'closed', 
> False):
> +            # On Python 3, we use the underlying binary buffer, which does 
> not
> +            # support line buffering.
> +            if (pycompat.ispy3 or dest is self._ferr) and not getattr(
> +                self._ferr, 'closed', False
> +            ):
>                 dest.flush()
>         except IOError as err:
>             if dest is self._ferr and err.errno in (
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to