diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2016-12-20 12:14:52 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2016-12-21 17:18:39 -0800 |
commit | 7b6eb3007c135cad4c7a873a92816bb540afb171 (patch) | |
tree | c57cd43a37923511fb13bc7ef53615c2bb9a76c8 /alot/account.py | |
parent | 41ef1f14636caf213e7c25dc3eeb3d911418ee72 (diff) |
Use abc module to signal abstract base classes
The Completer class is abastract, and it's complete method is also
abstract. Using ABCMeta achieve two thing, first it will cause an error
if a developer doesn't overwrite the method in a subclass. And second
that it tells the static analysis tools to ignore the unused arguments
in the signature, since this is the definition of a signature, not an
actual function.
By the same logic addressbook.AddressBook, and account.Account have been
extended to use ABCMeta as their metaclass and have had their abstract
methods decorated with the abstract method attribute.
Diffstat (limited to 'alot/account.py')
-rw-r--r-- | alot/account.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/alot/account.py b/alot/account.py index 912380e3..5e66e9bf 100644 --- a/alot/account.py +++ b/alot/account.py @@ -1,6 +1,7 @@ # Copyright (C) 2011-2012 Patrick Totzke <patricktotzke@gmail.com> # This file is released under the GNU GPL, version 3 or a later revision. # For further details see the COPYING file +import abc import glob import logging import mailbox @@ -29,6 +30,8 @@ class Account(object): command to send out mails. """ + __metaclass__ = abc.ABCMeta + address = None """this accounts main email address""" aliases = [] @@ -159,6 +162,7 @@ class Account(object): if self.draft_box is not None: return self.store_mail(self.draft_box, mail) + @abc.abstractmethod def send_mail(self, mail): """ sends given mail @@ -168,7 +172,7 @@ class Account(object): :returns: a `Deferred` that errs back with a class:`SendingMailFailed`, containing a reason string if an error occured. """ - raise NotImplementedError + pass class SendmailAccount(Account): |