Fix some typing errors and reformat enums.py
This commit is contained in:
parent
828e47d83f
commit
5d798aa5e6
@ -24,7 +24,7 @@ DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import types
|
||||
from collections import namedtuple
|
||||
from typing import Any, Dict, Optional, TYPE_CHECKING, Type, TypeVar
|
||||
from typing import Any, ClassVar, Dict, List, Optional, TYPE_CHECKING, Type, TypeVar
|
||||
|
||||
__all__ = (
|
||||
'Enum',
|
||||
@ -56,16 +56,25 @@ __all__ = (
|
||||
'NSFWLevel',
|
||||
)
|
||||
|
||||
|
||||
def _create_value_cls(name):
|
||||
cls = namedtuple('_EnumValue_' + name, 'name value')
|
||||
cls.__repr__ = lambda self: f'<{name}.{self.name}: {self.value!r}>'
|
||||
cls.__str__ = lambda self: f'{name}.{self.name}'
|
||||
return cls
|
||||
|
||||
|
||||
def _is_descriptor(obj):
|
||||
return hasattr(obj, '__get__') or hasattr(obj, '__set__') or hasattr(obj, '__delete__')
|
||||
|
||||
|
||||
class EnumMeta(type):
|
||||
if TYPE_CHECKING:
|
||||
__name__: ClassVar[str]
|
||||
_enum_member_names_: ClassVar[List[str]]
|
||||
_enum_member_map_: ClassVar[Dict[str, Any]]
|
||||
_enum_value_map_: ClassVar[Dict[Any, Any]]
|
||||
|
||||
def __new__(cls, name, bases, attrs):
|
||||
value_mapping = {}
|
||||
member_mapping = {}
|
||||
@ -101,7 +110,7 @@ class EnumMeta(type):
|
||||
attrs['_enum_member_names_'] = member_names
|
||||
attrs['_enum_value_cls_'] = value_cls
|
||||
actual_cls = super().__new__(cls, name, bases, attrs)
|
||||
value_cls._actual_enum_cls_ = actual_cls
|
||||
value_cls._actual_enum_cls_ = actual_cls # type: ignore
|
||||
return actual_cls
|
||||
|
||||
def __iter__(cls):
|
||||
@ -143,9 +152,11 @@ class EnumMeta(type):
|
||||
except AttributeError:
|
||||
return False
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from enum import Enum
|
||||
else:
|
||||
|
||||
class Enum(metaclass=EnumMeta):
|
||||
@classmethod
|
||||
def try_value(cls, value):
|
||||
@ -154,6 +165,7 @@ else:
|
||||
except (KeyError, TypeError):
|
||||
return value
|
||||
|
||||
|
||||
class ChannelType(Enum):
|
||||
text = 0
|
||||
private = 1
|
||||
@ -170,6 +182,7 @@ class ChannelType(Enum):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class MessageType(Enum):
|
||||
default = 0
|
||||
recipient_add = 1
|
||||
@ -195,6 +208,7 @@ class MessageType(Enum):
|
||||
thread_starter_message = 21
|
||||
guild_invite_reminder = 22
|
||||
|
||||
|
||||
class VoiceRegion(Enum):
|
||||
us_west = 'us-west'
|
||||
us_east = 'us-east'
|
||||
@ -223,6 +237,7 @@ class VoiceRegion(Enum):
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class SpeakingState(Enum):
|
||||
none = 0
|
||||
voice = 1
|
||||
@ -235,6 +250,7 @@ class SpeakingState(Enum):
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class VerificationLevel(Enum):
|
||||
none = 0
|
||||
low = 1
|
||||
@ -245,6 +261,7 @@ class VerificationLevel(Enum):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ContentFilter(Enum):
|
||||
disabled = 0
|
||||
no_role = 1
|
||||
@ -253,6 +270,7 @@ class ContentFilter(Enum):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Status(Enum):
|
||||
online = 'online'
|
||||
offline = 'offline'
|
||||
@ -264,6 +282,7 @@ class Status(Enum):
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class DefaultAvatar(Enum):
|
||||
blurple = 0
|
||||
grey = 1
|
||||
@ -275,16 +294,20 @@ class DefaultAvatar(Enum):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class NotificationLevel(Enum):
|
||||
all_messages = 0
|
||||
only_mentions = 1
|
||||
|
||||
|
||||
class AuditLogActionCategory(Enum):
|
||||
create = 1
|
||||
delete = 2
|
||||
update = 3
|
||||
|
||||
|
||||
class AuditLogAction(Enum):
|
||||
# fmt: off
|
||||
guild_update = 1
|
||||
channel_create = 10
|
||||
channel_update = 11
|
||||
@ -323,9 +346,11 @@ class AuditLogAction(Enum):
|
||||
stage_instance_create = 83
|
||||
stage_instance_update = 84
|
||||
stage_instance_delete = 85
|
||||
# fmt: on
|
||||
|
||||
@property
|
||||
def category(self) -> Optional[AuditLogActionCategory]:
|
||||
# fmt: off
|
||||
lookup: Dict[AuditLogAction, Optional[AuditLogActionCategory]] = {
|
||||
AuditLogAction.guild_update: AuditLogActionCategory.update,
|
||||
AuditLogAction.channel_create: AuditLogActionCategory.create,
|
||||
@ -366,6 +391,7 @@ class AuditLogAction(Enum):
|
||||
AuditLogAction.stage_instance_update: AuditLogActionCategory.update,
|
||||
AuditLogAction.stage_instance_delete: AuditLogActionCategory.delete,
|
||||
}
|
||||
# fmt: on
|
||||
return lookup[self]
|
||||
|
||||
@property
|
||||
@ -396,6 +422,7 @@ class AuditLogAction(Enum):
|
||||
elif v < 90:
|
||||
return 'stage_instance'
|
||||
|
||||
|
||||
class UserFlags(Enum):
|
||||
staff = 1
|
||||
partner = 2
|
||||
@ -415,6 +442,7 @@ class UserFlags(Enum):
|
||||
verified_bot_developer = 131072
|
||||
discord_certified_moderator = 262144
|
||||
|
||||
|
||||
class ActivityType(Enum):
|
||||
unknown = -1
|
||||
playing = 0
|
||||
@ -427,36 +455,44 @@ class ActivityType(Enum):
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class TeamMembershipState(Enum):
|
||||
invited = 1
|
||||
accepted = 2
|
||||
|
||||
|
||||
class WebhookType(Enum):
|
||||
incoming = 1
|
||||
channel_follower = 2
|
||||
application = 3
|
||||
|
||||
|
||||
class ExpireBehaviour(Enum):
|
||||
remove_role = 0
|
||||
kick = 1
|
||||
|
||||
|
||||
ExpireBehavior = ExpireBehaviour
|
||||
|
||||
|
||||
class StickerType(Enum):
|
||||
png = 1
|
||||
apng = 2
|
||||
lottie = 3
|
||||
|
||||
|
||||
class InviteTarget(Enum):
|
||||
unknown = 0
|
||||
stream = 1
|
||||
embedded_application = 2
|
||||
|
||||
|
||||
class InteractionType(Enum):
|
||||
ping = 1
|
||||
application_command = 2
|
||||
component = 3
|
||||
|
||||
|
||||
class InteractionResponseType(Enum):
|
||||
pong = 1
|
||||
# ack = 2 (deprecated)
|
||||
@ -466,6 +502,7 @@ class InteractionResponseType(Enum):
|
||||
deferred_message_update = 6 # for components
|
||||
message_update = 7 # for components
|
||||
|
||||
|
||||
class VideoQualityMode(Enum):
|
||||
auto = 1
|
||||
full = 2
|
||||
@ -473,6 +510,7 @@ class VideoQualityMode(Enum):
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class ComponentType(Enum):
|
||||
action_row = 1
|
||||
button = 2
|
||||
@ -481,6 +519,7 @@ class ComponentType(Enum):
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class ButtonStyle(Enum):
|
||||
primary = 1
|
||||
secondary = 2
|
||||
@ -499,24 +538,29 @@ class ButtonStyle(Enum):
|
||||
def __int__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class StagePrivacyLevel(Enum):
|
||||
public = 1
|
||||
closed = 2
|
||||
guild_only = 2
|
||||
|
||||
|
||||
class NSFWLevel(Enum):
|
||||
default = 0
|
||||
explicit = 1
|
||||
safe = 2
|
||||
age_restricted = 3
|
||||
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
def create_unknown_value(cls: Type[T], val: Any) -> T:
|
||||
value_cls = cls._enum_value_cls_ # type: ignore
|
||||
name = f'unknown_{val}'
|
||||
return value_cls(name=name, value=val)
|
||||
|
||||
|
||||
def try_enum(cls: Type[T], val: Any) -> T:
|
||||
"""A function that tries to turn the value into enum ``cls``.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user