shelve: fix conversion of exceptions to strings flagged by pytype
I've seen this done several ways and don't know what's correct. But pytype was
unhappy about the previous way:
FAILED: /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi
/usr/bin/python3.6 -m pytype.single --imports_info /mnt/c/Users/Matt/hg/tests/.pytype/imports/mercurial.shelve.imports --module-name mercurial.shelve -V 3.6 -o /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi --analyze-annotated --nofail --quick /mnt/c/Users/Matt/hg/mercurial/shelve.py
File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 244, in _verifyandtransform: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Union[KeyError, TypeError, ValueError])
File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 253, in _getversion: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: ValueError)
The following methods aren't implemented on ValueError:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10122
--- a/mercurial/shelve.py Sat Mar 06 06:32:25 2021 +0100
+++ b/mercurial/shelve.py Sat Mar 06 15:08:22 2021 -0500
@@ -241,7 +241,7 @@
bin(h) for h in d[b'nodestoremove'].split(b' ')
]
except (ValueError, TypeError, KeyError) as err:
- raise error.CorruptedState(pycompat.bytestr(err))
+ raise error.CorruptedState(stringutil.forcebytestr(err))
@classmethod
def _getversion(cls, repo):
@@ -250,7 +250,7 @@
try:
version = int(fp.readline().strip())
except ValueError as err:
- raise error.CorruptedState(pycompat.bytestr(err))
+ raise error.CorruptedState(stringutil.forcebytestr(err))
finally:
fp.close()
return version