D4545: error: ensure ProgrammingError message is always a str
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Wed Sep 12 15:40:04 UTC 2018
durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Since this error is internal-only and a runtime error, let's give it a
treatment that makes it behave identically when repr()d on both Python
2 and Python 3.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4545
AFFECTED FILES
mercurial/error.py
CHANGE DETAILS
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -215,6 +215,16 @@
class ProgrammingError(Hint, RuntimeError):
"""Raised if a mercurial (core or extension) developer made a mistake"""
+
+ def __init__(self, msg):
+ if not isinstance(msg, str):
+ # This means we're on Python 3, because we got a
+ # bytes. Turn the message back into a string since this is
+ # an internal-only error that won't be printed except in a
+ # stack traces.
+ msg = msg.decode('utf8')
+ super(ProgrammingError, self).__init__(msg)
+
__bytes__ = _tobytes
class WdirUnsupported(Exception):
To: durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list