error: make hintable exceptions reject unknown keyword arguments (API)
authorYuya Nishihara <yuya@tcha.org>
Mon, 11 Jul 2016 21:40:02 +0900
changeset 29510 19205a0e2bf1
parent 29509 945b4c14c570
child 29511 540c01a18bb7
error: make hintable exceptions reject unknown keyword arguments (API) Previously they would accept any typos of the hint keyword.
mercurial/error.py
mercurial/subrepo.py
--- a/mercurial/error.py	Sat Jul 09 14:28:30 2016 +0900
+++ b/mercurial/error.py	Mon Jul 11 21:40:02 2016 +0900
@@ -18,12 +18,12 @@
 class Hint(object):
     """Mix-in to provide a hint of an error
 
-    This should come first in the inheritance list to consume **kw and pass
-    only *args to the exception class.
+    This should come first in the inheritance list to consume a hint and
+    pass remaining arguments to the exception class.
     """
     def __init__(self, *args, **kw):
-        super(Hint, self).__init__(*args)
-        self.hint = kw.get('hint')
+        self.hint = kw.pop('hint', None)
+        super(Hint, self).__init__(*args, **kw)
 
 class RevlogError(Hint, Exception):
     pass
--- a/mercurial/subrepo.py	Sat Jul 09 14:28:30 2016 +0900
+++ b/mercurial/subrepo.py	Mon Jul 11 21:40:02 2016 +0900
@@ -56,9 +56,9 @@
 class SubrepoAbort(error.Abort):
     """Exception class used to avoid handling a subrepo error more than once"""
     def __init__(self, *args, **kw):
+        self.subrepo = kw.pop('subrepo', None)
+        self.cause = kw.pop('cause', None)
         error.Abort.__init__(self, *args, **kw)
-        self.subrepo = kw.get('subrepo')
-        self.cause = kw.get('cause')
 
 def annotatesubrepoerror(func):
     def decoratedmethod(self, *args, **kargs):