11"""Module with helper functions for creating requests."""
22
3+ from __future__ import annotations
4+
35import inspect
4- from typing import List , NoReturn , cast
6+ from typing import TYPE_CHECKING , Any , List , NoReturn , cast
7+
8+ if TYPE_CHECKING :
9+ from amazon_paapi .api import AmazonApi
10+ from amazon_paapi .sdk .rest import ApiException as ApiExceptionType
511
612from amazon_paapi .errors import (
713 AssociateValidationError ,
2733from amazon_paapi .sdk .rest import ApiException
2834
2935
30- def get_items_request (amazon_api , asin_chunk : List [str ], ** kwargs ) -> GetItemsRequest :
36+ def get_items_request (
37+ amazon_api : AmazonApi ,
38+ asin_chunk : list [str ],
39+ ** kwargs : Any ,
40+ ) -> GetItemsRequest :
3141 """Create a GetItemsRequest for the Amazon API."""
3242 try :
3343 return GetItemsRequest (
@@ -43,7 +53,7 @@ def get_items_request(amazon_api, asin_chunk: List[str], **kwargs) -> GetItemsRe
4353 raise MalformedRequest (msg ) from exc
4454
4555
46- def get_items_response (amazon_api , request : GetItemsRequest ) -> List [Item ]:
56+ def get_items_response (amazon_api : AmazonApi , request : GetItemsRequest ) -> list [Item ]:
4757 """Execute a GetItemsRequest and return the list of items."""
4858 try :
4959 response = amazon_api .api .get_items (request )
@@ -57,7 +67,10 @@ def get_items_response(amazon_api, request: GetItemsRequest) -> List[Item]:
5767 return cast (List [Item ], response .items_result .items )
5868
5969
60- def get_search_items_request (amazon_api , ** kwargs ) -> SearchItemsRequest :
70+ def get_search_items_request (
71+ amazon_api : AmazonApi ,
72+ ** kwargs : Any ,
73+ ) -> SearchItemsRequest :
6174 """Create a SearchItemsRequest for the Amazon API."""
6275 try :
6376 return SearchItemsRequest (
@@ -72,7 +85,9 @@ def get_search_items_request(amazon_api, **kwargs) -> SearchItemsRequest:
7285 raise MalformedRequest (msg ) from exc
7386
7487
75- def get_search_items_response (amazon_api , request : SearchItemsRequest ) -> SearchResult :
88+ def get_search_items_response (
89+ amazon_api : AmazonApi , request : SearchItemsRequest
90+ ) -> SearchResult :
7691 """Execute a SearchItemsRequest and return the search result."""
7792 try :
7893 response = amazon_api .api .search_items (request )
@@ -86,7 +101,10 @@ def get_search_items_response(amazon_api, request: SearchItemsRequest) -> Search
86101 return cast (SearchResult , response .search_result )
87102
88103
89- def get_variations_request (amazon_api , ** kwargs ) -> GetVariationsRequest :
104+ def get_variations_request (
105+ amazon_api : AmazonApi ,
106+ ** kwargs : Any ,
107+ ) -> GetVariationsRequest :
90108 """Create a GetVariationsRequest for the Amazon API."""
91109 try :
92110 return GetVariationsRequest (
@@ -102,7 +120,7 @@ def get_variations_request(amazon_api, **kwargs) -> GetVariationsRequest:
102120
103121
104122def get_variations_response (
105- amazon_api , request : GetVariationsRequest
123+ amazon_api : AmazonApi , request : GetVariationsRequest
106124) -> VariationsResult :
107125 """Execute a GetVariationsRequest and return the variations result."""
108126 try :
@@ -117,7 +135,10 @@ def get_variations_response(
117135 return cast (VariationsResult , response .variations_result )
118136
119137
120- def get_browse_nodes_request (amazon_api , ** kwargs ) -> GetBrowseNodesRequest :
138+ def get_browse_nodes_request (
139+ amazon_api : AmazonApi ,
140+ ** kwargs : Any ,
141+ ) -> GetBrowseNodesRequest :
121142 """Create a GetBrowseNodesRequest for the Amazon API."""
122143 try :
123144 return GetBrowseNodesRequest (
@@ -133,8 +154,8 @@ def get_browse_nodes_request(amazon_api, **kwargs) -> GetBrowseNodesRequest:
133154
134155
135156def get_browse_nodes_response (
136- amazon_api , request : GetBrowseNodesRequest
137- ) -> List [BrowseNode ]:
157+ amazon_api : AmazonApi , request : GetBrowseNodesRequest
158+ ) -> list [BrowseNode ]:
138159 """Execute a GetBrowseNodesRequest and return the list of browse nodes."""
139160 try :
140161 response = amazon_api .api .get_browse_nodes (request )
@@ -148,13 +169,13 @@ def get_browse_nodes_response(
148169 return cast (List [BrowseNode ], response .browse_nodes_result .browse_nodes )
149170
150171
151- def _get_request_resources (resources ) -> List [str ]:
172+ def _get_request_resources (resources : type [ object ] ) -> list [str ]:
152173 """Extract all resource strings from a resource class."""
153174 resources = inspect .getmembers (resources , lambda a : not inspect .isroutine (a ))
154175 return [x [- 1 ] for x in resources if isinstance (x [- 1 ], str ) and x [0 ][0 :2 ] != "__" ]
155176
156177
157- def _manage_response_exceptions (error ) -> NoReturn :
178+ def _manage_response_exceptions (error : ApiExceptionType ) -> NoReturn :
158179 """Handle API exceptions and raise appropriate custom exceptions."""
159180 error_status = getattr (error , "status" , None )
160181 error_body = getattr (error , "body" , "" ) or ""
0 commit comments