Browse Source

Typehint AllowedMentions

pull/6987/head
Rapptz 4 years ago
parent
commit
5a68d3a561
  1. 32
      discord/mentions.py

32
discord/mentions.py

@ -22,10 +22,17 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
"""
from __future__ import annotations
from typing import Type, TypeVar, Union, List, TYPE_CHECKING, Any, Union
__all__ = (
'AllowedMentions',
)
if TYPE_CHECKING:
from .types.message import AllowedMentions as AllowedMentionsPayload
from .abc import Snowflake
class _FakeBool:
def __repr__(self):
@ -38,7 +45,9 @@ class _FakeBool:
return True
default = _FakeBool()
default: Any = _FakeBool()
A = TypeVar('A', bound='AllowedMentions')
class AllowedMentions:
@ -73,14 +82,21 @@ class AllowedMentions:
__slots__ = ('everyone', 'users', 'roles', 'replied_user')
def __init__(self, *, everyone=default, users=default, roles=default, replied_user=default):
def __init__(
self,
*,
everyone: bool = default,
users: Union[bool, List[Snowflake]] = default,
roles: Union[bool, List[Snowflake]] = default,
replied_user: bool = default,
):
self.everyone = everyone
self.users = users
self.roles = roles
self.replied_user = replied_user
@classmethod
def all(cls):
def all(cls: Type[A]) -> A:
"""A factory method that returns a :class:`AllowedMentions` with all fields explicitly set to ``True``
.. versionadded:: 1.5
@ -88,14 +104,14 @@ class AllowedMentions:
return cls(everyone=True, users=True, roles=True, replied_user=True)
@classmethod
def none(cls):
def none(cls: Type[A]) -> A:
"""A factory method that returns a :class:`AllowedMentions` with all fields set to ``False``
.. versionadded:: 1.5
"""
return cls(everyone=False, users=False, roles=False, replied_user=False)
def to_dict(self):
def to_dict(self) -> AllowedMentionsPayload:
parse = []
data = {}
@ -116,9 +132,9 @@ class AllowedMentions:
data['replied_user'] = True
data['parse'] = parse
return data
return data # type: ignore
def merge(self, other):
def merge(self, other: AllowedMentions) -> AllowedMentions:
# Creates a new AllowedMentions by merging from another one.
# Merge is done by using the 'self' values unless explicitly
# overridden by the 'other' values.
@ -128,7 +144,7 @@ class AllowedMentions:
replied_user = self.replied_user if other.replied_user is default else other.replied_user
return AllowedMentions(everyone=everyone, roles=roles, users=users, replied_user=replied_user)
def __repr__(self):
def __repr__(self) -> str:
return (
f'{self.__class__.__name__}(everyone={self.everyone}, '
f'users={self.users}, roles={self.roles}, replied_user={self.replied_user})'

Loading…
Cancel
Save