[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
attached.


More information about the Mercurial-devel mailing list