From 9a2889702b66004845b41816c0f00f15fcbef01d Mon Sep 17 00:00:00 2001 From: VarMonke Date: Sun, 27 Mar 2022 17:15:14 +0530 Subject: [PATCH] Objects --- Github/objects.py | 68 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 4 deletions(-) diff --git a/Github/objects.py b/Github/objects.py index f639da8..ee0f49e 100644 --- a/Github/objects.py +++ b/Github/objects.py @@ -7,7 +7,7 @@ import aiohttp from . import http __all__ = ( - 'User', + 'User' ) def dt_formatter(time_str): @@ -68,8 +68,6 @@ class User(_BaseUser): else: setattr(self, key, value) continue - - setattr(self, key, value) @@ -80,4 +78,66 @@ class User(_BaseUser): async def get_user(cls, session: aiohttp.ClientSession, username: str) -> 'User': """Returns a User object from the username, with the mentions slots.""" response = await http.get_user(session, username) - return User(response, session) \ No newline at end of file + return User(response, session) + +class PartialUser(_BaseUser): + __slots__ = ( + 'site_admin', + 'html_url', + 'created_at', + ) + _BaseUser.__slots__ + + def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: + super().__init__(response, session) + self.site_admin = response.get('site_admin') + self.html_url = response.get('html_url') + self.avatar_url = response.get('avatar_url') + + + def __repr__(self): + return f'' + + async def _get_user(self): + """Upgrades the PartialUser to a User object.""" + response = await http.get_user(self.session, self.login) + return User(response, self.session) + + +class Repository(APIOBJECT): + __slots__ = ( + 'id', + 'name', + 'owner', + 'size' + 'created_at', + 'url', + 'html_url', + 'archived', + 'disabled', + 'updated_at', + 'open_issues_count', + 'default_branch', + 'clone_url', + 'stargazers_count', + 'watchers_count', + 'forks', + 'license' + ) + def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: + super().__init__(response, session) + tmp = self.__slots__ + keys = {key: value for key,value in self.response.items() if key in tmp} + for key, value in key.items(): + if key == 'owner': + self.owner = PartialUser(value, self.session) + return + + if '_at' in key and value is not None: + setattr(self, key, dt_formatter(value)) + return + + setattr(self, key, value) + + def __repr__(self) -> str: + return f'' +