[PATCH 1 of 2] py3: keep stdout as defined by pycompat in procutil

Yuya Nishihara yuya at tcha.org
Thu Oct 10 10:53:17 EDT 2019

On Thu, 10 Oct 2019 16:16:25 +0200, Denis Laxalde wrote:
> # HG changeset patch
> # User Denis Laxalde <denis.laxalde at logilab.fr>
> # Date 1570716002 -7200
> #      Thu Oct 10 16:00:02 2019 +0200
> # Node ID 63da27176ab9d0ac5dd58e0a6037469ce4bf5435
> # Parent  b0238700551593257f293fd838f2ac030d00cede
> py3: keep stdout as defined by pycompat in procutil
> According to https://docs.python.org/3/library/functions.html#open, it's
> not possible to use 1 as buffering argument value in binary mode. This
> is probably why line buffering does not work well in python3.
> On the other hand, sys.stdout.buffer appears to be line-buffered already
> on python3. So by not replacing it, there should be no behavior change.

Can you check if it's still true under pager?

  (for example)
  $ hg log -k mpm
  ... will print f2fe7cf4ebb6 immediately, and more changesets with
  ... some delay.
  ... to test glibc behavior on py2, no output should be made before
  ... pager is attached. I have no idea about py3.

stdout is also line-buffered by default on Python 2, but it isn't under
pager because the buffering mode can be determined after the pager is

More information about the Mercurial-devel mailing list