> 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