|
3 | 3 | import enum
|
4 | 4 | import typing
|
5 | 5 |
|
| 6 | +import zigpy.types as zigpy_t |
| 7 | + |
6 | 8 | from zigpy_znp.types.cstruct import CStruct
|
7 | 9 |
|
8 | 10 |
|
@@ -264,30 +266,6 @@ def deserialize(cls, data: bytes, *, align=False) -> tuple[CompleteList, bytes]:
|
264 | 266 | return r, data
|
265 | 267 |
|
266 | 268 |
|
267 |
| -def enum_flag_factory(int_type: FixedIntType) -> enum.Flag: |
268 |
| - """ |
269 |
| - Mixins are broken by Python 3.8.6 so we must dynamically create the enum with the |
270 |
| - appropriate methods but with only one non-Enum parent class. |
271 |
| - """ |
272 |
| - |
273 |
| - class _NewEnum(int_type, enum.Flag): # type:ignore[misc,valid-type] |
274 |
| - # Rebind classmethods to our own class |
275 |
| - _missing_ = classmethod(enum.IntFlag._missing_.__func__) |
276 |
| - _create_pseudo_member_ = classmethod( |
277 |
| - enum.IntFlag._create_pseudo_member_.__func__ |
278 |
| - ) |
279 |
| - |
280 |
| - __or__ = enum.IntFlag.__or__ |
281 |
| - __and__ = enum.IntFlag.__and__ |
282 |
| - __xor__ = enum.IntFlag.__xor__ |
283 |
| - __ror__ = enum.IntFlag.__ror__ |
284 |
| - __rand__ = enum.IntFlag.__rand__ |
285 |
| - __rxor__ = enum.IntFlag.__rxor__ |
286 |
| - __invert__ = enum.IntFlag.__invert__ |
287 |
| - |
288 |
| - return _NewEnum # type:ignore[return-value] |
289 |
| - |
290 |
| - |
291 | 269 | class enum_uint8(uint8_t, enum.Enum):
|
292 | 270 | pass
|
293 | 271 |
|
@@ -320,33 +298,33 @@ class enum_uint64(uint64_t, enum.Enum):
|
320 | 298 | pass
|
321 | 299 |
|
322 | 300 |
|
323 |
| -class enum_flag_uint8(enum_flag_factory(uint8_t)): # type:ignore[misc] |
| 301 | +class enum_flag_uint8(zigpy_t.bitmap_factory(uint8_t)): # type:ignore[misc] |
324 | 302 | pass
|
325 | 303 |
|
326 | 304 |
|
327 |
| -class enum_flag_uint16(enum_flag_factory(uint16_t)): # type:ignore[misc] |
| 305 | +class enum_flag_uint16(zigpy_t.bitmap_factory(uint16_t)): # type:ignore[misc] |
328 | 306 | pass
|
329 | 307 |
|
330 | 308 |
|
331 |
| -class enum_flag_uint24(enum_flag_factory(uint24_t)): # type:ignore[misc] |
| 309 | +class enum_flag_uint24(zigpy_t.bitmap_factory(uint24_t)): # type:ignore[misc] |
332 | 310 | pass
|
333 | 311 |
|
334 | 312 |
|
335 |
| -class enum_flag_uint32(enum_flag_factory(uint32_t)): # type:ignore[misc] |
| 313 | +class enum_flag_uint32(zigpy_t.bitmap_factory(uint32_t)): # type:ignore[misc] |
336 | 314 | pass
|
337 | 315 |
|
338 | 316 |
|
339 |
| -class enum_flag_uint40(enum_flag_factory(uint40_t)): # type:ignore[misc] |
| 317 | +class enum_flag_uint40(zigpy_t.bitmap_factory(uint40_t)): # type:ignore[misc] |
340 | 318 | pass
|
341 | 319 |
|
342 | 320 |
|
343 |
| -class enum_flag_uint48(enum_flag_factory(uint48_t)): # type:ignore[misc] |
| 321 | +class enum_flag_uint48(zigpy_t.bitmap_factory(uint48_t)): # type:ignore[misc] |
344 | 322 | pass
|
345 | 323 |
|
346 | 324 |
|
347 |
| -class enum_flag_uint56(enum_flag_factory(uint56_t)): # type:ignore[misc] |
| 325 | +class enum_flag_uint56(zigpy_t.bitmap_factory(uint56_t)): # type:ignore[misc] |
348 | 326 | pass
|
349 | 327 |
|
350 | 328 |
|
351 |
| -class enum_flag_uint64(enum_flag_factory(uint64_t)): # type:ignore[misc] |
| 329 | +class enum_flag_uint64(zigpy_t.bitmap_factory(uint64_t)): # type:ignore[misc] |
352 | 330 | pass
|
0 commit comments