import abc from typing import NewType EncryptedStr = NewType("EncryptedStr", str) class Encrypter(abc.ABC): @abc.abstractmethod def encrypt(self, value: str) -> EncryptedStr: ... @abc.abstractmethod def decrypt(self, value: EncryptedStr) -> str: ... class DummyEncrypter(Encrypter): def encrypt(self, value: str) -> EncryptedStr: return EncryptedStr(value) def decrypt(self, value: EncryptedStr) -> str: return str(value)