# HG changeset patch # User Matt Harbison # Date 1632150226 14400 # Node ID 406a7e62994674e4292ef5b49d8d60e612e15675 # Parent 8655a77dce9470e6912e1d4c45c1df9d7a9bcab9 archival: force a `CompressionError` to bytes before passing to `error.Abort` I'm not sure what changed before pytype 09-09-2021 (from 04-15-2021), but this started getting flagged. This fixes: File "/mnt/c/Users/Matt/hg/mercurial/archival.py", line 199, in taropen: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: tarfile.CompressionError) Attributes of protocol Iterable[int] are not implemented on tarfile.CompressionError: __iter__ Differential Revision: https://phab.mercurial-scm.org/D11472 diff -r 8655a77dce94 -r 406a7e629946 mercurial/archival.py --- a/mercurial/archival.py Mon Sep 20 10:59:26 2021 -0400 +++ b/mercurial/archival.py Mon Sep 20 11:03:46 2021 -0400 @@ -29,6 +29,8 @@ vfs as vfsmod, ) +from .utils import stringutil + stringio = util.stringio # from unzip source code: @@ -196,7 +198,7 @@ name, pycompat.sysstr(mode + kind), fileobj ) except tarfile.CompressionError as e: - raise error.Abort(pycompat.bytestr(e)) + raise error.Abort(stringutil.forcebytestr(e)) if isinstance(dest, bytes): self.z = taropen(b'w:', name=dest)