diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -154,7 +154,7 @@ bytechr = struct.Struct('>B').pack byterepr = b'%r'.__mod__ - class bytestr(bytes): + class bytestr(bytes): # type: Callable[[Union[bytes, str], bytestr] """A bytes which mostly acts as a Python 2 str >>> bytestr(), bytestr(bytearray(b'foo')), bytestr(u'ascii'), bytestr(1) @@ -208,7 +208,7 @@ """ def __new__(cls, s=b''): - if isinstance(s, bytestr): + if isinstance(s, _bytestr): return s if not isinstance( s, (bytes, bytearray) @@ -398,7 +398,7 @@ unicode = unicode bytechr = chr byterepr = repr - bytestr = str + bytestr = str # type: Callable[[Union[bytes, str], bytestr] iterbytestr = iter maybebytestr = identity sysbytes = identity @@ -504,3 +504,12 @@ return tempfile.NamedTemporaryFile( mode, bufsize, suffix=suffix, prefix=prefix, dir=dir, delete=delete ) + + +try: + if ispy3: + import typing + + typing.Union +except ImportError: + pass