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
--- 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"""