Python 3.6: Signature of {method} incompatible with super type {Class}
@abstractmethod
def deliver(self, *args: Any, **kwargs: Any) -> bool:
raise NotImplementedError
This declaration doesn't mean subclasses can give deliver
any signature they want. Subclass deliver
methods must be ready to accept any arguments the superclass deliver
method would accept, so your subclass deliver
has to be ready to accept arbitrary positional or keyword arguments:
# omitting annotations
def deliver(self, *args, **kwargs):
...
Your subclass's deliver
does not have that signature.
If all subclasses are supposed to have the same deliver
signature you've written for MyImplementation
, then you should give MyClass.deliver
the same signature too. If your subclasses are going to have different deliver
signatures, maybe this method shouldn't really be in the superclass, or maybe you need to rethink your class hierarchy, or give them the same signature.