Skip to content

Commit

Permalink
Add missing typehints to template.py
Browse files Browse the repository at this point in the history
  • Loading branch information
StockerMC authored Aug 18, 2021
1 parent 79bae47 commit e79a648
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions discord/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

from __future__ import annotations

from typing import Any, Optional, TYPE_CHECKING, overload
from typing import Any, Optional, TYPE_CHECKING
from .utils import parse_time, _get_as_snowflake, _bytes_to_base64_data, MISSING
from .enums import VoiceRegion
from .guild import Guild
Expand All @@ -34,7 +34,10 @@
)

if TYPE_CHECKING:
import datetime
from .types.template import Template as TemplatePayload
from .state import ConnectionState
from .user import User


class _FriendlyHttpAttributeErrorHelper:
Expand Down Expand Up @@ -77,7 +80,7 @@ def _get_message(self, id):
def _get_guild(self, id):
return self.__state._get_guild(id)

async def query_members(self, **kwargs):
async def query_members(self, **kwargs: Any):
return []

def __getattr__(self, attr):
Expand Down Expand Up @@ -127,20 +130,20 @@ class Template:
'_state',
)

def __init__(self, *, state, data: TemplatePayload):
def __init__(self, *, state: ConnectionState, data: TemplatePayload) -> None:
self._state = state
self._store(data)

def _store(self, data: TemplatePayload):
self.code = data['code']
self.uses = data['usage_count']
self.name = data['name']
self.description = data['description']
def _store(self, data: TemplatePayload) -> None:
self.code: str = data['code']
self.uses: int = data['usage_count']
self.name: str = data['name']
self.description: Optional[str] = data['description']
creator_data = data.get('creator')
self.creator = None if creator_data is None else self._state.create_user(creator_data)
self.creator: Optional[User] = None if creator_data is None else self._state.create_user(creator_data)

self.created_at = parse_time(data.get('created_at'))
self.updated_at = parse_time(data.get('updated_at'))
self.created_at: Optional[datetime.datetime] = parse_time(data.get('created_at'))
self.updated_at: Optional[datetime.datetime] = parse_time(data.get('updated_at'))

id = _get_as_snowflake(data, 'source_guild_id')

Expand All @@ -150,18 +153,18 @@ def _store(self, data: TemplatePayload):
source_serialised = data['serialized_source_guild']
source_serialised['id'] = id
state = _PartialTemplateState(state=self._state)
guild = Guild(data=source_serialised, state=state) # type: ignore
guild = Guild(data=source_serialised, state=state) # type: ignore - Guild expects a ConnectionState, we're passing a _PartialTemplateState

self.source_guild = guild
self.is_dirty = data.get('is_dirty', None)
self.source_guild: Guild = guild # type: ignore - source_guild_id is a required field on the discord API docs
self.is_dirty: Optional[bool] = data.get('is_dirty', None)

def __repr__(self) -> str:
return (
f'<Template code={self.code!r} uses={self.uses} name={self.name!r}'
f' creator={self.creator!r} source_guild={self.source_guild!r} is_dirty={self.is_dirty}>'
)

async def create_guild(self, name: str, region: Optional[VoiceRegion] = None, icon: Any = None):
async def create_guild(self, name: str, region: Optional[VoiceRegion] = None, icon: Any = None) -> Guild:
"""|coro|
Creates a :class:`.Guild` using the template.
Expand Down

0 comments on commit e79a648

Please sign in to comment.