diff --git a/Github/objects/objects.py b/Github/objects/objects.py index 9118bd2..0ede485 100644 --- a/Github/objects/objects.py +++ b/Github/objects/objects.py @@ -21,7 +21,7 @@ class APIOBJECT: 'session' ) - def __init__(self, response: dict[str, str | int], session: aiohttp.ClientSession) -> None: + def __init__(self, response: dict[str, str | int | dict[str, str | int]], session: aiohttp.ClientSession) -> None: self._response = response self.session = session diff --git a/Github/objects/repo.py b/Github/objects/repo.py index c896543..c4acd34 100644 --- a/Github/objects/repo.py +++ b/Github/objects/repo.py @@ -36,28 +36,26 @@ class Repository(APIOBJECT): keys = {key: value for key,value in self._response.items() if key in tmp} for key, value in keys.items(): if key == 'owner': - setattr(self, key, PartialUser(value, session)) - return + setattr(self, key, PartialUser(value, session)) + continue if key == 'name': setattr(self, key, value) - return + continue if '_at' in key and value is not None: setattr(self, key, dt_formatter(value)) - return - + continue + else: setattr(self, key, value) continue - setattr(self, key, value) - def __repr__(self) -> str: - return f'' + return f'' @classmethod - async def repo_from_name(cls, session: aiohttp.ClientSession,owner: str, repo_name: str) -> 'Repository': + async def from_name(cls, session: aiohttp.ClientSession,owner: str, repo_name: str) -> 'Repository': """Fetch a repository from its name.""" response = await http.get_repo_from_name(session, owner, repo_name) return Repository(response, session) diff --git a/Github/objects/user.py b/Github/objects/user.py index 4877ed0..a1c15dc 100644 --- a/Github/objects/user.py +++ b/Github/objects/user.py @@ -38,7 +38,7 @@ class User(_BaseUser): def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: super().__init__(response, session) tmp = self.__slots__ + _BaseUser.__slots__ - keys = {key: value for key,value in self.items() if key in tmp} + keys = {key: value for key,value in self._response.items() if key in tmp} for key, value in keys.items(): if '_at' in key and value is not None: setattr(self, key, dt_formatter(value)) @@ -47,9 +47,7 @@ class User(_BaseUser): setattr(self, key, value) continue - setattr(self, key, value) - - def __repr__(self): + def __repr__(self) -> str: return f'' @classmethod @@ -62,7 +60,7 @@ class PartialUser(_BaseUser): __slots__ = ( 'site_admin', 'html_url', - 'created_at', + 'avatar_url', ) + _BaseUser.__slots__ def __init__(self, response: dict, session: aiohttp.ClientSession) -> None: @@ -71,11 +69,10 @@ class PartialUser(_BaseUser): self.html_url = response.get('html_url') self.avatar_url = response.get('avatar_url') + def __repr__(self) -> str: + return f'' - def __repr__(self): - return f'' - - async def _get_user(self): + async def _get_user(self) -> User: """Upgrades the PartialUser to a User object.""" response = await http.get_user(self.session, self.login) return User(response, self.session) \ No newline at end of file