[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 05/19] qapi/schema: make c_type() and json_type() abstract me
|
From: |
Daniel P . Berrangé |
|
Subject: |
Re: [PATCH 05/19] qapi/schema: make c_type() and json_type() abstract methods |
|
Date: |
Tue, 21 Nov 2023 13:43:32 +0000 |
|
User-agent: |
Mutt/2.2.10 (2023-03-25) |
On Tue, Nov 21, 2023 at 02:36:54PM +0100, Markus Armbruster wrote:
> John Snow <jsnow@redhat.com> writes:
>
> > These methods should always return a str, it's only the default abstract
> > implementation that doesn't. They can be marked "abstract" by raising
> > NotImplementedError(), which requires subclasses to override the method
> > with the proper return type.
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
> > ---
> > scripts/qapi/schema.py | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
> > index c5fdd625452..4600a566005 100644
> > --- a/scripts/qapi/schema.py
> > +++ b/scripts/qapi/schema.py
> > @@ -233,8 +233,8 @@ def visit(self, visitor):
> > class QAPISchemaType(QAPISchemaEntity):
> > # Return the C type for common use.
> > # For the types we commonly box, this is a pointer type.
> > - def c_type(self):
> > - pass
> > + def c_type(self) -> str:
> > + raise NotImplementedError()
> >
> > # Return the C type to be used in a parameter list.
> > def c_param_type(self):
> > @@ -244,8 +244,8 @@ def c_param_type(self):
> > def c_unboxed_type(self):
> > return self.c_type()
> >
> > - def json_type(self):
> > - pass
> > + def json_type(self) -> str:
> > + raise NotImplementedError()
> >
> > def alternate_qtype(self):
> > json2qtype = {
>
> I wish abstract methods could be done in a more concise way.
The canonical way would be to use the 'abc' module:
from abc import ABCMeta, abstractmethod
class A(metaclass=ABCMeta):
@abstractmethod
def foo(self): pass
Not sure if the @abstractmethod decorator is enough to keep the static
typing checker happy about a 'str' return type, when there is no body
impl
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- Re: [PATCH 06/19] qapi/schema: adjust type narrowing for mypy's benefit, (continued)
[PATCH 10/19] qapi/schema: make QAPISchemaArrayType.element_type non-Optional, John Snow, 2023/11/15
[PATCH 05/19] qapi/schema: make c_type() and json_type() abstract methods, John Snow, 2023/11/15
[PATCH 09/19] qapi/schema: assert info is present when necessary, John Snow, 2023/11/15
[PATCH 11/19] qapi/schema: fix QAPISchemaArrayType.check's call to resolve_type, John Snow, 2023/11/15