from abc import ABCMeta, abstractmethod

from nperipherals_core.model.device import Device


class WriterDevice(Device):
    __metaclass__ = ABCMeta

    @abstractmethod
    def write(self, data):
        # type: (unicode) -> None
        raise NotImplementedError()

    @abstractmethod
    def get_write_retries(self):
        # type: () -> int
        raise NotImplementedError()

    @abstractmethod
    def get_write_retry_sleep_in_seconds(self):
        # type: () -> float
        raise NotImplementedError()
