D4545: error: ensure ProgrammingError message is always a str

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Wed Sep 12 12:35:19 EDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG921aeb9ac508: error: ensure ProgrammingError message is always a str (authored by durin42, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D4545?vs=10958&id=10959

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, *args, **kwargs):
+        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, *args, **kwargs)
+
     __bytes__ = _tobytes
 
 class WdirUnsupported(Exception):



To: durin42, #hg-reviewers, pulkit
Cc: mercurial-devel


More information about the Mercurial-devel mailing list