"""Adapters module.""" import abc class EmailSender(metaclass=abc.ABCMeta): @abc.abstractmethod def send(self, to: str, body: str) -> None: ... class SmtpEmailSender: def send(self, to: str, body: str) -> None: print(f"Sending an email to {to} over SMTP, body=\"{body}\"") class EchoEmailSender: def send(self, to: str, body: str) -> None: print(f"Fake sending an email to {to}, body=\"{body}\"")