|
3 | 3 | A simple Python wrapper for the last version of the Amazon Product Advertising API. |
4 | 4 | """ |
5 | 5 |
|
| 6 | +from __future__ import annotations |
| 7 | + |
6 | 8 | import time |
7 | | -from typing import Any, List, Optional, Union |
| 9 | +from typing import TYPE_CHECKING, Any |
8 | 10 |
|
9 | 11 | from . import models |
10 | 12 | from .errors import InvalidArgument |
11 | 13 | from .helpers import arguments, requests |
12 | 14 | from .helpers.generators import get_list_chunks |
13 | 15 | from .helpers.items import sort_items |
14 | | -from .models.regions import CountryCode |
15 | 16 | from .sdk.api.default_api import DefaultApi |
16 | 17 |
|
| 18 | +if TYPE_CHECKING: |
| 19 | + from .models.regions import CountryCode |
| 20 | + |
17 | 21 |
|
18 | 22 | class AmazonApi: |
19 | 23 | """Provides methods to get information from Amazon using your API credentials. |
@@ -61,14 +65,14 @@ def __init__( |
61 | 65 |
|
62 | 66 | def get_items( |
63 | 67 | self, |
64 | | - items: Union[str, List[str]], |
| 68 | + items: str | list[str], |
65 | 69 | condition: models.Condition = None, |
66 | 70 | merchant: models.Merchant = None, |
67 | | - currency_of_preference: Optional[str] = None, |
68 | | - languages_of_preference: Optional[List[str]] = None, |
| 71 | + currency_of_preference: str | None = None, |
| 72 | + languages_of_preference: list[str] | None = None, |
69 | 73 | include_unavailable: bool = False, |
70 | 74 | **kwargs: Any, |
71 | | - ) -> List[models.Item]: |
| 75 | + ) -> list[models.Item]: |
72 | 76 | """Get items information from Amazon. |
73 | 77 |
|
74 | 78 | Args: |
@@ -116,30 +120,30 @@ def get_items( |
116 | 120 | items_response = requests.get_items_response(self, request) |
117 | 121 | results.extend(items_response) |
118 | 122 |
|
119 | | - return sort_items(results, items_ids, include_unavailable) |
| 123 | + return sort_items(results, items_ids, include_unavailable=include_unavailable) |
120 | 124 |
|
121 | 125 | def search_items( |
122 | 126 | self, # NOSONAR |
123 | | - item_count: Optional[int] = None, |
124 | | - item_page: Optional[int] = None, |
125 | | - actor: Optional[str] = None, |
126 | | - artist: Optional[str] = None, |
127 | | - author: Optional[str] = None, |
128 | | - brand: Optional[str] = None, |
129 | | - keywords: Optional[str] = None, |
130 | | - title: Optional[str] = None, |
| 127 | + item_count: int | None = None, |
| 128 | + item_page: int | None = None, |
| 129 | + actor: str | None = None, |
| 130 | + artist: str | None = None, |
| 131 | + author: str | None = None, |
| 132 | + brand: str | None = None, |
| 133 | + keywords: str | None = None, |
| 134 | + title: str | None = None, |
131 | 135 | availability: models.Availability = None, |
132 | | - browse_node_id: Optional[str] = None, |
| 136 | + browse_node_id: str | None = None, |
133 | 137 | condition: models.Condition = None, |
134 | | - currency_of_preference: Optional[str] = None, |
135 | | - delivery_flags: Optional[List[str]] = None, |
136 | | - languages_of_preference: Optional[List[str]] = None, |
| 138 | + currency_of_preference: str | None = None, |
| 139 | + delivery_flags: list[str] | None = None, |
| 140 | + languages_of_preference: list[str] | None = None, |
137 | 141 | merchant: models.Merchant = None, |
138 | | - max_price: Optional[int] = None, |
139 | | - min_price: Optional[int] = None, |
140 | | - min_saving_percent: Optional[int] = None, |
141 | | - min_reviews_rating: Optional[int] = None, |
142 | | - search_index: Optional[str] = None, |
| 142 | + max_price: int | None = None, |
| 143 | + min_price: int | None = None, |
| 144 | + min_saving_percent: int | None = None, |
| 145 | + min_reviews_rating: int | None = None, |
| 146 | + search_index: str | None = None, |
143 | 147 | sort_by: models.SortBy = None, |
144 | 148 | **kwargs: Any, |
145 | 149 | ) -> models.SearchResult: |
@@ -238,11 +242,11 @@ def search_items( |
238 | 242 | def get_variations( |
239 | 243 | self, |
240 | 244 | asin: str, |
241 | | - variation_count: Optional[int] = None, |
242 | | - variation_page: Optional[int] = None, |
| 245 | + variation_count: int | None = None, |
| 246 | + variation_page: int | None = None, |
243 | 247 | condition: models.Condition = None, |
244 | | - currency_of_preference: Optional[str] = None, |
245 | | - languages_of_preference: Optional[List[str]] = None, |
| 248 | + currency_of_preference: str | None = None, |
| 249 | + languages_of_preference: list[str] | None = None, |
246 | 250 | merchant: models.Merchant = None, |
247 | 251 | **kwargs: Any, |
248 | 252 | ) -> models.VariationsResult: |
@@ -300,10 +304,10 @@ def get_variations( |
300 | 304 |
|
301 | 305 | def get_browse_nodes( |
302 | 306 | self, |
303 | | - browse_node_ids: List[str], |
304 | | - languages_of_preference: Optional[List[str]] = None, |
| 307 | + browse_node_ids: list[str], |
| 308 | + languages_of_preference: list[str] | None = None, |
305 | 309 | **kwargs: Any, |
306 | | - ) -> List[models.BrowseNode]: |
| 310 | + ) -> list[models.BrowseNode]: |
307 | 311 | """Return the specified browse node's information. |
308 | 312 |
|
309 | 313 | Information includes name, children, and ancestors. |
|
0 commit comments