From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>,
Michael Roth <michael.roth@amd.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH v2 1/8] qapi/error: Repurpose QAPIError as a generic exception base class
Date: Fri, 16 Apr 2021 08:04:50 +0200 [thread overview]
Message-ID: <87im4mrchp.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <662c4eae-f704-37b4-9d89-f3bbf9108ec2@redhat.com> (John Snow's message of "Thu, 15 Apr 2021 11:28:33 -0400")
John Snow <jsnow@redhat.com> writes:
> On 4/15/21 2:44 AM, Markus Armbruster wrote:
>> John Snow <jsnow@redhat.com> writes:
>>
>>> Rename QAPIError to QAPISourceError, and then create a new QAPIError
>>> class that serves as the basis for all of our other custom exceptions.
>>
>> Isn't the existing QAPIError such a base class already? Peeking
>> ahead... aha, your new base class is abstract. Can you explain why we
>> that's useful?
>>
>
> Sure. The existing QAPIError class assumes that it's an error that has a
> source location, but not all errors will. The idea is that an abstract
> error class can be used as the ancestor for all other errors in a
> type-safe way, such that:
>
> try:
> qapi.something_or_other()
> except QAPIError as err:
> err.some_sort_of_method()
>
> (1) This is a type-safe construct, and
> (2) This is sufficient to catch all errors that originate from within
> the library, regardless of their exact type.
>
> Primarily, it's a ploy to get the SourceInfo stuff out of the
> common/root exception for type safety reasons.
>
> (Later in the series, you'll see there's a few places where we try to
> fake SourceInfo stuff in order to use QAPIError, by shuffling this
> around, we allow ourselves to raise exceptions that don't need this
> hackery.)
I think you're conflating a real issue with a non-issue.
The real issue: you want to get rid of fake QAPISourceInfo. This isn't
terribly important, but small cleanups count, too. I can't see the "few
places where we try to fake" in this series, though. Is it in a later
part, or am I just blind?
The non-issue: wanting a common base class. Yes, we want one, but we
already got one: QAPIError.
I think the commit message should explain the real issue more clearly,
without confusing readers with the non-issue.
Makes sense?
next prev parent reply other threads:[~2021-04-16 6:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-30 17:18 [PATCH v2 0/8] qapi: static typing conversion, pt4 John Snow
2021-03-30 17:18 ` [PATCH v2 1/8] qapi/error: Repurpose QAPIError as a generic exception base class John Snow
2021-04-15 6:44 ` Markus Armbruster
2021-04-15 15:28 ` John Snow
2021-04-16 6:04 ` Markus Armbruster [this message]
2021-04-16 17:59 ` John Snow
2021-03-30 17:18 ` [PATCH v2 2/8] qapi/error: Use Python3-style super() John Snow
2021-04-15 6:47 ` Markus Armbruster
2021-03-30 17:18 ` [PATCH v2 3/8] qapi/error: Make QAPISourceError 'col' parameter optional John Snow
2021-03-30 17:18 ` [PATCH v2 4/8] qapi/error: Change assertion John Snow
2021-04-08 15:31 ` John Snow
2021-04-15 7:00 ` Markus Armbruster
2021-04-15 15:44 ` John Snow
2021-04-16 6:17 ` Markus Armbruster
2021-04-16 18:24 ` John Snow
2021-04-17 12:10 ` Markus Armbruster
2021-03-30 17:18 ` [PATCH v2 5/8] qapi/error.py: move QAPIParseError to parser.py John Snow
2021-03-30 17:18 ` [PATCH v2 6/8] qapi/error.py: enable pylint checks John Snow
2021-03-30 17:18 ` [PATCH v2 7/8] qapi/error: Add type hints John Snow
2021-04-15 7:15 ` Markus Armbruster
2021-04-15 15:52 ` John Snow
2021-03-30 17:18 ` [PATCH v2 8/8] qapi/error.py: enable mypy checks John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87im4mrchp.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=jsnow@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=michael.roth@amd.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.