[PATCH 2 of 2 V3] error: make hintable exceptions reject unknown keyword arguments (API)

Augie Fackler raf at durin42.com
Tue Jul 12 12:44:51 EDT 2016


On Tue, Jul 12, 2016 at 09:39:25AM +0000, Kostia Balytskyi wrote:
> These 2 patches look good to me. Once they are accepted I will introduce MercurialException and replace Exception -> MercurialException here. My goal is not related to dispatch.runcommand(), but more to unshelve’s shelvedstate.load exception-catching, but I think it’s generally a good thing to do.

Queued these, thanks

>
> On 7/11/16, 3:28 PM, "Mercurial-devel on behalf of Yuya Nishihara" <mercurial-devel-bounces at mercurial-scm.org on behalf of yuya at tcha.org> wrote:
>
> ># HG changeset patch
> ># User Yuya Nishihara <yuya at tcha.org>
> ># Date 1468240802 -32400
> >#      Mon Jul 11 21:40:02 2016 +0900
> ># Node ID 292f0845baa57737bc9b8ce9d21d124dba157cc2
> ># Parent  5a15266e4b16eb9dba59fa561a2c3b6d3214db4b
> >error: make hintable exceptions reject unknown keyword arguments (API)
> >
> >Previously they would accept any typos of the hint keyword.
> >
> >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):
> >_______________________________________________
> >Mercurial-devel mailing list
> >Mercurial-devel at mercurial-scm.org
> >https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=CwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=Pp-gQYFgs4tKlSFPF5kfCw&m=u1Nss-4AcSzhEtnaLykilc2S5_VePcD0L3v978GuwAY&s=WL4gb7tLHGfce7tTDtoJJ-ERGlP8-5tBIJS5xa4eSWE&e=
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list