diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py --- a/mercurial/pycompat.py +++ b/mercurial/pycompat.py @@ -48,6 +48,17 @@ f.set_exception(exc_info[0]) +if not globals(): # hide this from non-pytype users + from typing import ( + Callable, + Union, + ) + + # keep pyflakes happy + for t in (Callable, Union): + assert t + + def identity(a): return a @@ -154,7 +165,7 @@ bytechr = struct.Struct('>B').pack byterepr = b'%r'.__mod__ - class bytestr(bytes): + class _bytestr(bytes): """A bytes which mostly acts as a Python 2 str >>> bytestr(), bytestr(bytearray(b'foo')), bytestr(u'ascii'), bytestr(1) @@ -291,6 +302,8 @@ return w + bytestr = _bytestr # Callable[[Union[bytes, str]], bytestr] + # these wrappers are automagically imported by hgloader delattr = _wrapattrfunc(builtins.delattr) getattr = _wrapattrfunc(builtins.getattr) @@ -398,7 +411,7 @@ unicode = unicode bytechr = chr byterepr = repr - bytestr = str + bytestr = str # type: Callable[[Union[bytes, str]], bytestr] iterbytestr = iter maybebytestr = identity sysbytes = identity