use print() instead of sys.stdout.write()
We're relying on sys.stdout.write() to flush its buffer which isn't
guaranteed, and is not the case in Python 3. Change to use print()
everywhere to be standard, and utilize the end= keyword to get the
EOL semantics we need.
We can't use print's flush= keyword as that's only in Python 3.
Leave behind a TODO to clean it up when we can drop Python 2.
Bug: https://crbug.com/gerrit/10418
Change-Id: I562128c7f1e6d154f4a6ecdf33a70fa2811dc2af
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/230392
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
diff --git a/subcmds/init.py b/subcmds/init.py
index 6c8b1dd..1c809ab 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -294,7 +294,9 @@
sys.exit(1)
def _Prompt(self, prompt, value):
- sys.stdout.write('%-10s [%s]: ' % (prompt, value))
+ print('%-10s [%s]: ' % (prompt, value), end='')
+ # TODO: When we require Python 3, use flush=True w/print above.
+ sys.stdout.flush()
a = sys.stdin.readline().strip()
if a == '':
return value
@@ -328,7 +330,9 @@
print()
print('Your identity is: %s <%s>' % (name, email))
- sys.stdout.write('is this correct [y/N]? ')
+ print('is this correct [y/N]? ', end='')
+ # TODO: When we require Python 3, use flush=True w/print above.
+ sys.stdout.flush()
a = sys.stdin.readline().strip().lower()
if a in ('yes', 'y', 't', 'true'):
break
@@ -370,7 +374,9 @@
out.printer(fg='black', attr=c)(' %-6s ', c)
out.nl()
- sys.stdout.write('Enable color display in this user account (y/N)? ')
+ print('Enable color display in this user account (y/N)? ', end='')
+ # TODO: When we require Python 3, use flush=True w/print above.
+ sys.stdout.flush()
a = sys.stdin.readline().strip().lower()
if a in ('y', 'yes', 't', 'true', 'on'):
gc.SetString('color.ui', 'auto')