Code Duplication    Length = 23-26 lines in 2 locations

pyof/v0x04/common/action.py 1 location

@@ 120-145 (lines=26) @@
117
            return ceil(current_size / 8) * 8
118
        raise ValueError(f'Invalid value "{value}" for Action*.get_size()')
119
120
    def unpack(self, buff, offset=0):
121
        """Unpack a binary message into this object's attributes.
122
123
        Unpack the binary value *buff* and update this object attributes based
124
        on the results.
125
126
        Args:
127
            buff (bytes): Binary data package to be unpacked.
128
            offset (int): Where to begin unpacking.
129
130
        Raises:
131
            Exception: If there is a struct unpacking error.
132
133
        """
134
        self.action_type = UBInt16(enum_ref=ActionType)
135
        self.action_type.unpack(buff, offset)
136
137
        self.length = UBInt16()
138
        self.length.unpack(buff, offset=offset+2)
139
140
        for cls in ActionHeader.__subclasses__():
141
            if self.action_type.value in cls.get_allowed_types():
142
                self.__class__ = cls
143
                break
144
145
        super().unpack(buff[:offset+self.length], offset)
146
147
    @classmethod
148
    def get_allowed_types(cls):

pyof/v0x01/common/action.py 1 location

@@ 79-101 (lines=23) @@
76
        self.action_type = action_type
77
        self.length = length
78
79
    def unpack(self, buff, offset=0):
80
        """Unpack a binary message into this object's attributes.
81
82
        Unpack the binary value *buff* and update this object attributes based
83
        on the results.
84
85
        Args:
86
            buff (bytes): Binary data package to be unpacked.
87
            offset (int): Where to begin unpacking.
88
89
        Raises:
90
            Exception: If there is a struct unpacking error.
91
92
        """
93
        self.action_type = UBInt16(enum_ref=ActionType)
94
        self.action_type.unpack(buff, offset)
95
96
        for cls in ActionHeader.__subclasses__():
97
            if self.action_type.value in cls.get_allowed_types():
98
                self.__class__ = cls
99
                break
100
101
        super().unpack(buff, offset)
102
103
    @classmethod
104
    def get_allowed_types(cls):