util: handle fileno() on Python 3 throwing io.UnsupportedOperation
authorAugie Fackler <augie@google.com>
Mon, 26 Feb 2018 00:51:41 -0500
changeset 36432 1ca4e86c7265
parent 36431 ec43960b03e8
child 36433 433cfad4bc46
util: handle fileno() on Python 3 throwing io.UnsupportedOperation Fortunately, the exception exists on Python 2 so we don't have to do something weirder than this. Differential Revision: https://phab.mercurial-scm.org/D2450
mercurial/util.py
--- a/mercurial/util.py	Mon Feb 26 00:50:57 2018 -0500
+++ b/mercurial/util.py	Mon Feb 26 00:51:41 2018 -0500
@@ -26,6 +26,7 @@
 import gc
 import hashlib
 import imp
+import io
 import itertools
 import mmap
 import os
@@ -1178,7 +1179,10 @@
 
 def _isstdout(f):
     fileno = getattr(f, 'fileno', None)
-    return fileno and fileno() == sys.__stdout__.fileno()
+    try:
+        return fileno and fileno() == sys.__stdout__.fileno()
+    except io.UnsupportedOperation:
+        return False # fileno() raised UnsupportedOperation
 
 def shellenviron(environ=None):
     """return environ with optional override, useful for shelling out"""