Skip to content

Commit 3cb92b0

Browse files
committed
Added black checks to pipeline
1 parent 2d5f4e3 commit 3cb92b0

3 files changed

Lines changed: 80 additions & 76 deletions

File tree

.github/workflows/lint-and-test.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,15 @@ jobs:
1616
uses: actions/checkout@v2
1717
- name: Check imports order
1818
run: ./scripts/check_isort
19+
20+
black:
21+
runs-on: ubuntu-latest
22+
container:
23+
image: sergioteula/pytools
24+
volumes:
25+
- ${{github.workspace}}:/code
26+
steps:
27+
- name: Check out code
28+
uses: actions/checkout@v2
29+
- name: Check code format
30+
run: ./scripts/check_black

amazon_paapi/helpers/requests.py

Lines changed: 45 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,14 @@
3030

3131
def get_items_request(amazon_api, asin_chunk: List[str], **kwargs) -> GetItemsRequest:
3232
try:
33-
return GetItemsRequest(
34-
resources=_get_request_resources(GetItemsResource),
35-
partner_type=PartnerType.ASSOCIATES,
36-
marketplace=amazon_api._marketplace,
37-
partner_tag=amazon_api._tag,
38-
item_ids=asin_chunk,
39-
**kwargs
40-
)
33+
return GetItemsRequest(resources=_get_request_resources(GetItemsResource),
34+
partner_type=PartnerType.ASSOCIATES,
35+
marketplace=amazon_api._marketplace,
36+
partner_tag=amazon_api._tag,
37+
item_ids=asin_chunk,
38+
**kwargs)
4139
except TypeError as e:
42-
raise MalformedRequestException(
43-
"Parameters for get_items request are not correct: " + str(e)
44-
)
40+
raise MalformedRequestException('Parameters for get_items request are not correct: ' + str(e))
4541

4642

4743
def get_items_response(amazon_api, request: GetItemsRequest) -> List[Item]:
@@ -51,24 +47,20 @@ def get_items_response(amazon_api, request: GetItemsRequest) -> List[Item]:
5147
_manage_response_exceptions(e)
5248

5349
if response.items_result == None:
54-
raise ItemsNotFoundException("No items have been found")
50+
raise ItemsNotFoundException('No items have been found')
5551

5652
return response.items_result.items
5753

5854

5955
def get_search_items_request(amazon_api, **kwargs) -> SearchItemsRequest:
6056
try:
61-
return SearchItemsRequest(
62-
resources=_get_request_resources(SearchItemsResource),
63-
partner_type=PartnerType.ASSOCIATES,
64-
marketplace=amazon_api._marketplace,
65-
partner_tag=amazon_api._tag,
66-
**kwargs
67-
)
57+
return SearchItemsRequest(resources=_get_request_resources(SearchItemsResource),
58+
partner_type=PartnerType.ASSOCIATES,
59+
marketplace=amazon_api._marketplace,
60+
partner_tag=amazon_api._tag,
61+
**kwargs)
6862
except TypeError as e:
69-
raise MalformedRequestException(
70-
"Parameters for search_items request are not correct: " + str(e)
71-
)
63+
raise MalformedRequestException('Parameters for search_items request are not correct: ' + str(e))
7264

7365

7466
def get_search_items_response(amazon_api, request: SearchItemsRequest) -> SearchResult:
@@ -78,97 +70,74 @@ def get_search_items_response(amazon_api, request: SearchItemsRequest) -> Search
7870
_manage_response_exceptions(e)
7971

8072
if response.search_result == None:
81-
raise ItemsNotFoundException("No items have been found")
73+
raise ItemsNotFoundException('No items have been found')
8274

8375
return response.search_result
8476

8577

8678
def get_variations_request(amazon_api, **kwargs) -> GetVariationsRequest:
8779
try:
88-
return GetVariationsRequest(
89-
resources=_get_request_resources(GetVariationsResource),
90-
partner_type=PartnerType.ASSOCIATES,
91-
marketplace=amazon_api._marketplace,
92-
partner_tag=amazon_api._tag,
93-
**kwargs
94-
)
80+
return GetVariationsRequest(resources=_get_request_resources(GetVariationsResource),
81+
partner_type=PartnerType.ASSOCIATES,
82+
marketplace=amazon_api._marketplace,
83+
partner_tag=amazon_api._tag,
84+
**kwargs)
9585
except TypeError as e:
96-
raise MalformedRequestException(
97-
"Parameters for get_variations request are not correct: " + str(e)
98-
)
86+
raise MalformedRequestException('Parameters for get_variations request are not correct: ' + str(e))
9987

10088

101-
def get_variations_response(
102-
amazon_api, request: GetVariationsRequest
103-
) -> VariationsResult:
89+
def get_variations_response(amazon_api, request: GetVariationsRequest) -> VariationsResult:
10490
try:
10591
response = amazon_api._api.get_variations(request)
10692
except ApiException as e:
10793
_manage_response_exceptions(e)
10894

10995
if response.variations_result == None:
110-
raise ItemsNotFoundException("No variation items have been found")
96+
raise ItemsNotFoundException('No variation items have been found')
11197

11298
return response.variations_result
11399

114100

115101
def get_browse_nodes_request(amazon_api, **kwargs) -> GetBrowseNodesRequest:
116102
try:
117-
return GetBrowseNodesRequest(
118-
resources=_get_request_resources(GetBrowseNodesResource),
119-
partner_type=PartnerType.ASSOCIATES,
120-
marketplace=amazon_api._marketplace,
121-
partner_tag=amazon_api._tag,
122-
**kwargs
123-
)
103+
return GetBrowseNodesRequest(resources=_get_request_resources(GetBrowseNodesResource),
104+
partner_type=PartnerType.ASSOCIATES,
105+
marketplace=amazon_api._marketplace,
106+
partner_tag=amazon_api._tag,
107+
**kwargs)
124108
except TypeError as e:
125-
raise MalformedRequestException(
126-
"Parameters for get_browse_nodes request are not correct: " + str(e)
127-
)
109+
raise MalformedRequestException('Parameters for get_browse_nodes request are not correct: ' + str(e))
128110

129111

130-
def get_browse_nodes_response(
131-
amazon_api, request: GetBrowseNodesRequest
132-
) -> List[BrowseNode]:
112+
def get_browse_nodes_response(amazon_api, request: GetBrowseNodesRequest) -> List[BrowseNode]:
133113
try:
134114
response = amazon_api._api.get_browse_nodes(request)
135115
except ApiException as e:
136116
_manage_response_exceptions(e)
137117

138118
if response.browse_nodes_result == None:
139-
raise ItemsNotFoundException("No browse nodes have been found")
119+
raise ItemsNotFoundException('No browse nodes have been found')
140120

141121
return response.browse_nodes_result.browse_nodes
142122

143123

144124
def _get_request_resources(resources) -> List[str]:
145-
resources = inspect.getmembers(resources, lambda a: not (inspect.isroutine(a)))
146-
resources = [
147-
x[-1] for x in resources if isinstance(x[-1], str) and x[0][0:2] != "__"
148-
]
125+
resources = inspect.getmembers(resources, lambda a:not(inspect.isroutine(a)))
126+
resources = [x[-1] for x in resources if isinstance(x[-1], str) and x[0][0:2] != '__']
149127
return resources
150128

151-
152129
def _manage_response_exceptions(error) -> None:
153130
if isinstance(error, ApiException):
154131
if error.status == 429:
155-
raise TooManyRequestsException(
156-
"Requests limit reached, try increasing throttling or wait before"
157-
" trying again"
158-
)
159-
160-
elif "InvalidParameterValue" in error.body:
161-
raise InvalidArgumentException(
162-
"The value provided in the request for atleast one parameter is"
163-
" invalid."
164-
)
165-
166-
elif "InvalidPartnerTag" in error.body:
167-
raise InvalidArgumentException("The partner tag is invalid or not present.")
168-
169-
elif "InvalidAssociate" in error.body:
170-
raise AssociateValidationException(
171-
"Used credentials are not valid for the selected country."
172-
)
173-
174-
raise ApiRequestException("Request failed: " + str(error.reason))
132+
raise TooManyRequestsException('Requests limit reached, try increasing throttling or wait before trying again')
133+
134+
elif 'InvalidParameterValue' in error.body:
135+
raise InvalidArgumentException('The value provided in the request for atleast one parameter is invalid.')
136+
137+
elif 'InvalidPartnerTag' in error.body:
138+
raise InvalidArgumentException('The partner tag is invalid or not present.')
139+
140+
elif 'InvalidAssociate' in error.body:
141+
raise AssociateValidationException('Used credentials are not valid for the selected country.')
142+
143+
raise ApiRequestException('Request failed: ' + str(error.reason))

scripts/check_black

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#! /bin/bash
2+
3+
ROOT_DIR="$(git rev-parse --show-toplevel)"
4+
source "${ROOT_DIR}/scripts/helpers"
5+
6+
header "Checking code format with black"
7+
8+
if [ -n "$(check_if_installed docker)" ]; then
9+
docker run -v "${PWD}:/code" sergioteula/pytools black --check --diff --color .
10+
elif [ -n "$(check_if_installed black)" ]; then
11+
black --check --diff --color .
12+
else
13+
error "black is not installed"
14+
exit 1
15+
fi
16+
17+
EXIT_CODE="$?"
18+
if [ "$EXIT_CODE" = "0" ]; then
19+
success "Code is correctly formatted"
20+
else
21+
error "Code should be formatted using black"
22+
exit 1
23+
fi

0 commit comments

Comments
 (0)