diff --git a/mercurial/error.py b/mercurial/error.py --- a/mercurial/error.py +++ b/mercurial/error.py @@ -18,12 +18,12 @@ from __future__ import absolute_import 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 diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -56,9 +56,9 @@ def _getstorehashcachename(remotepath): 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):