|
3 | 3 | import logging |
4 | 4 | from collections import namedtuple |
5 | 5 | from enum import Enum, IntEnum, StrEnum |
| 6 | +from typing import Self |
6 | 7 |
|
7 | 8 | _LOGGER = logging.getLogger(__name__) |
8 | 9 | completed_warnings = set() |
@@ -56,30 +57,30 @@ class RoborockModeEnum(StrEnum): |
56 | 57 |
|
57 | 58 | code: int |
58 | 59 |
|
59 | | - def __new__(cls, value: str, code: int) -> RoborockModeEnum: |
| 60 | + def __new__(cls, value: str, code: int) -> Self: |
60 | 61 | """Creates a new enum member.""" |
61 | 62 | member = str.__new__(cls, value) |
62 | 63 | member._value_ = value |
63 | 64 | member.code = code |
64 | 65 | return member |
65 | 66 |
|
66 | 67 | @classmethod |
67 | | - def from_code(cls, code: int) -> RoborockModeEnum: |
| 68 | + def from_code(cls, code: int) -> Self: |
68 | 69 | for member in cls: |
69 | 70 | if member.code == code: |
70 | 71 | return member |
71 | 72 | raise ValueError(f"{code} is not a valid code for {cls.__name__}") |
72 | 73 |
|
73 | 74 | @classmethod |
74 | | - def from_value(cls, value: str) -> RoborockModeEnum: |
| 75 | + def from_value(cls, value: str) -> Self: |
75 | 76 | """Find enum member by string value (case-insensitive).""" |
76 | 77 | for member in cls: |
77 | 78 | if member.value.lower() == value.lower(): |
78 | 79 | return member |
79 | 80 | raise ValueError(f"{value} is not a valid value for {cls.__name__}") |
80 | 81 |
|
81 | 82 | @classmethod |
82 | | - def from_name(cls, name: str) -> RoborockModeEnum: |
| 83 | + def from_name(cls, name: str) -> Self: |
83 | 84 | """Find enum member by name (case-insensitive).""" |
84 | 85 | for member in cls: |
85 | 86 | if member.name.lower() == name.lower(): |
|
0 commit comments