Browse Source

perf: use sentinel value for Presence._offline()

pull/10109/head
dolfies 5 months ago
parent
commit
e9452cf5ca
  1. 14
      discord/state.py

14
discord/state.py

@ -30,6 +30,7 @@ import copy
import datetime
import logging
from typing import (
ClassVar,
Dict,
Final,
Optional,
@ -894,6 +895,8 @@ class ClientStatus:
class Presence:
__slots__ = ('client_status', 'activities')
_OFFLINE: ClassVar[Self] = MISSING
def __init__(self, data: gw.BasePresenceUpdate, state: ConnectionState, /) -> None:
self.client_status: ClientStatus = ClientStatus(data['status'], data.get('client_status'))
self.activities: Tuple[ActivityTypes, ...] = tuple(create_activity(d, state) for d in data['activities'])
@ -922,10 +925,13 @@ class Presence:
@classmethod
def _offline(cls) -> Self:
self = cls.__new__(cls) # bypass __init__
self.client_status = ClientStatus()
self.activities = ()
return self
if cls._OFFLINE is MISSING:
self = cls.__new__(cls) # bypass __init__
self.client_status = ClientStatus()
self.activities = ()
cls._OFFLINE = self
return cls._OFFLINE
@classmethod
def _copy(cls, presence: Self, /) -> Self:

Loading…
Cancel
Save