LINUX.ORG.RU

История изменений

Исправление qaqa, (текущая версия) :

По файлу _base_op.py

Вместо

    @classmethod
    @abc.abstractmethod
    def op_code(cls) -> OpCode:
        pass

    @classmethod
    @abc.abstractmethod
    def has_reply(cls) -> bool:
        """
        True if operation is expected to return something
        """
        pass

Достаточно

    op_code: OpCode
    has_reply: bool

Далее

    @classmethod
    def from_data(cls, op_code: OpCode, data: io.BytesIO) -> 'BaseOp':
        """
        Deserialize operation from bytes
        :raises KeyError: If operation has unknown OpCode
        """

KeyError очень не рекомендую использовать, особенно для таких случаев. Так как он часто используемый, то может быть отловлен в самых неожиданных местах, если забудут обернуть вызов from_data в try-except. Стоит объявить и использовать отдельный класс исключения.

Исходная версия qaqa, :

По файлу _base_op.py

Вместо

    @classmethod
    @abc.abstractmethod
    def op_code(cls) -> OpCode:
        pass

    @classmethod
    @abc.abstractmethod
    def has_reply(cls) -> bool:
        """
        True if operation is expected to return something
        """
        pass

Достаточно

    op_code: OpCode
    has_reply: bool

    @classmethod
    def from_data(cls, op_code: OpCode, data: io.BytesIO) -> 'BaseOp':
        """
        Deserialize operation from bytes
        :raises KeyError: If operation has unknown OpCode
        """

KeyError очень не рекомендую использовать, особенно для таких случаев. Так как он часто используемый, то может быть отловлен в самых неожиданных местах, если забудут обернуть вызов from_data в try-except. Стоит объявить и использовать отдельный класс исключения.