diff --git a/seerapi/_client.pyi b/seerapi/_client.pyi index c9411e9..7f68768 100644 --- a/seerapi/_client.pyi +++ b/seerapi/_client.pyi @@ -28,6 +28,24 @@ class SeerAPI: async def __aexit__(self, exc_type, exc_val, exc_tb) -> None: ... async def aclose(self) -> None: ... @overload + async def get( + self, resource_name: Literal['achievement'], id: int + ) -> M.Achievement: ... + @overload + async def get( + self, resource_name: Literal['achievement_branch'], id: int + ) -> M.AchievementBranch: ... + @overload + async def get( + self, resource_name: Literal['achievement_category'], id: int + ) -> M.AchievementCategory: ... + @overload + async def get( + self, resource_name: Literal['achievement_type'], id: int + ) -> M.AchievementType: ... + @overload + async def get(self, resource_name: Literal['title'], id: int) -> M.Title: ... + @overload async def get( self, resource_name: Literal['battle_effect'], id: int ) -> M.BattleEffect: ... @@ -200,6 +218,26 @@ class SeerAPI: self, resource_name: ResourceRef[T_ModelInstance] ) -> T_ModelInstance: ... @overload + async def paginated_list( + self, resource_name: Literal['achievement'], page_info: PageInfo + ) -> PagedResponse[M.Achievement]: ... + @overload + async def paginated_list( + self, resource_name: Literal['achievement_branch'], page_info: PageInfo + ) -> PagedResponse[M.AchievementBranch]: ... + @overload + async def paginated_list( + self, resource_name: Literal['achievement_category'], page_info: PageInfo + ) -> PagedResponse[M.AchievementCategory]: ... + @overload + async def paginated_list( + self, resource_name: Literal['achievement_type'], page_info: PageInfo + ) -> PagedResponse[M.AchievementType]: ... + @overload + async def paginated_list( + self, resource_name: Literal['title'], page_info: PageInfo + ) -> PagedResponse[M.Title]: ... + @overload async def paginated_list( self, resource_name: Literal['battle_effect'], page_info: PageInfo ) -> PagedResponse[M.BattleEffect]: ... @@ -388,6 +426,26 @@ class SeerAPI: self, resource_name: type[T_ModelInstance], page_info: PageInfo ) -> PagedResponse[T_ModelInstance]: ... @overload + async def list( + self, resource_name: Literal['achievement'] + ) -> AsyncGenerator[M.Achievement, None]: ... + @overload + async def list( + self, resource_name: Literal['achievement_branch'] + ) -> AsyncGenerator[M.AchievementBranch, None]: ... + @overload + async def list( + self, resource_name: Literal['achievement_category'] + ) -> AsyncGenerator[M.AchievementCategory, None]: ... + @overload + async def list( + self, resource_name: Literal['achievement_type'] + ) -> AsyncGenerator[M.AchievementType, None]: ... + @overload + async def list( + self, resource_name: Literal['title'] + ) -> AsyncGenerator[M.Title, None]: ... + @overload async def list( self, resource_name: Literal['battle_effect'] ) -> AsyncGenerator[M.BattleEffect, None]: ... @@ -576,6 +634,26 @@ class SeerAPI: self, resource_name: type[T_ModelInstance] ) -> AsyncGenerator[T_ModelInstance, None]: ... @overload + async def get_by_name( + self, resource_name: Literal['achievement'], name: str + ) -> NamedData[M.Achievement]: ... + @overload + async def get_by_name( + self, resource_name: Literal['achievement_branch'], name: str + ) -> NamedData[M.AchievementBranch]: ... + @overload + async def get_by_name( + self, resource_name: Literal['achievement_category'], name: str + ) -> NamedData[M.AchievementCategory]: ... + @overload + async def get_by_name( + self, resource_name: Literal['achievement_type'], name: str + ) -> NamedData[M.AchievementType]: ... + @overload + async def get_by_name( + self, resource_name: Literal['title'], name: str + ) -> NamedData[M.Title]: ... + @overload async def get_by_name( self, resource_name: Literal['battle_effect'], name: str ) -> NamedData[M.BattleEffect]: ... diff --git a/seerapi/_model_map.py b/seerapi/_model_map.py index 1b60c8f..f33e793 100644 --- a/seerapi/_model_map.py +++ b/seerapi/_model_map.py @@ -1,9 +1,14 @@ from typing import Literal, TypeAlias, TypeVar import seerapi_models as M -from seerapi_models.common import BaseResModel +from seerapi_models.build_model import BaseResModel NamedModelName: TypeAlias = Literal[ + 'achievement', + 'achievement_branch', + 'achievement_category', + 'achievement_type', + 'title', 'battle_effect', 'battle_effect_type', 'pet_effect', @@ -59,7 +64,12 @@ ModelInstance: TypeAlias = BaseResModel NamedModelInstance: TypeAlias = ( - M.BattleEffect + M.Achievement + | M.AchievementBranch + | M.AchievementCategory + | M.AchievementType + | M.Title + | M.BattleEffect | M.BattleEffectCategory | M.PetEffect | M.PetEffectGroup @@ -102,6 +112,11 @@ T_NamedModelInstance = TypeVar('T_NamedModelInstance', bound=NamedModelInstance) MODEL_MAP: dict[ModelName, ModelType] = { + 'achievement': M.Achievement, + 'achievement_branch': M.AchievementBranch, + 'achievement_category': M.AchievementCategory, + 'achievement_type': M.AchievementType, + 'title': M.Title, 'battle_effect': M.BattleEffect, 'battle_effect_type': M.BattleEffectCategory, 'pet_effect': M.PetEffect,