from abc import ( ABC, abstractmethod, ) class IMultiselectCommunicator(ABC): """ Communicator helper class that ensures both the client and multistream module will follow the same multistream protocol, which is necessary for them to work. """ @abstractmethod async def write(self, msg_str: str) -> None: """ Write message to stream. :param msg_str: message to write """ @abstractmethod async def read(self) -> str: """Reads message from stream until EOF."""