Skip to content

Commit cebfb6b

Browse files
Merge pull request #2464 from VWS-Python/more-kwargs
Use named arguments in more places
2 parents da49e79 + fd2124c commit cebfb6b

36 files changed

+181
-137
lines changed

admin/create_secrets_files.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def main() -> None:
108108
""",
109109
)
110110

111-
file.write_text(file_contents)
111+
file.write_text(data=file_contents)
112112
sys.stdout.write(f"Created database {file.name}\n")
113113
files_to_create.pop()
114114

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
# This method of getting the release from the version goes hand in hand with
4444
# the ``post-release`` versioning scheme chosen in the ``setuptools-scm``
4545
# configuration.
46-
release = version.split(".post")[0]
46+
release = version.split(sep=".post")[0]
4747

4848

4949
project_metadata = importlib.metadata.metadata(distribution_name=project)

src/mock_vws/_database_matchers.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@ def get_database_matching_client_keys(
3535
Raises:
3636
ValueError: No database matches the given request.
3737
"""
38-
content_type = request_headers.get("Content-Type", "").split(sep=";")[0]
39-
auth_header = request_headers.get("Authorization")
40-
date = request_headers.get("Date", "")
38+
request_headers_dict = dict(request_headers)
39+
content_type = request_headers_dict.get("Content-Type", "").split(sep=";")[
40+
0
41+
]
42+
auth_header = request_headers_dict.get("Authorization")
43+
date = request_headers_dict.get("Date", "")
4144

4245
for database in databases:
4346
expected_authorization_header = authorization_header(
@@ -80,9 +83,11 @@ def get_database_matching_server_keys(
8083
Raises:
8184
ValueError: No database matches the given request.
8285
"""
83-
content_type = request_headers.get("Content-Type", "").split(sep=";")[0]
84-
auth_header = request_headers.get("Authorization")
85-
date = request_headers.get("Date", "")
86+
request_headers_dict = dict(request_headers)
87+
content_type_header = request_headers_dict.get("Content-Type", "")
88+
content_type = content_type_header.split(sep=";")[0]
89+
auth_header = request_headers_dict.get("Authorization")
90+
date = request_headers_dict.get("Date", "")
8691

8792
for database in databases:
8893
expected_authorization_header = authorization_header(

src/mock_vws/_flask_server/healthcheck.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ def flask_app_healthy(port: int) -> bool:
1515
"""
1616
Check if the Flask app is healthy.
1717
"""
18-
conn = http.client.HTTPConnection("localhost", port)
18+
conn = http.client.HTTPConnection(host="localhost", port=port)
1919
try:
20-
conn.request("GET", "/some-random-endpoint")
20+
conn.request(method="GET", url="/some-random-endpoint")
2121
response = conn.getresponse()
2222
except (TimeoutError, http.client.HTTPException, socket.gaierror):
2323
return False

src/mock_vws/_flask_server/target_manager.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class TargetManagerSettings(BaseSettings):
6666

6767

6868
@TARGET_MANAGER_FLASK_APP.route(
69-
"/databases/<string:database_name>",
69+
rule="/databases/<string:database_name>",
7070
methods=[HTTPMethod.DELETE],
7171
)
7272
@beartype
@@ -88,7 +88,7 @@ def delete_database(database_name: str) -> Response:
8888
return Response(response="", status=HTTPStatus.OK)
8989

9090

91-
@TARGET_MANAGER_FLASK_APP.route("/databases", methods=[HTTPMethod.GET])
91+
@TARGET_MANAGER_FLASK_APP.route(rule="/databases", methods=[HTTPMethod.GET])
9292
@beartype
9393
def get_databases() -> Response:
9494
"""
@@ -101,7 +101,7 @@ def get_databases() -> Response:
101101
)
102102

103103

104-
@TARGET_MANAGER_FLASK_APP.route("/databases", methods=[HTTPMethod.POST])
104+
@TARGET_MANAGER_FLASK_APP.route(rule="/databases", methods=[HTTPMethod.POST])
105105
@beartype
106106
def create_database() -> Response:
107107
"""Create a new database.
@@ -184,7 +184,7 @@ def create_database() -> Response:
184184
TARGET_MANAGER.add_database(database=database)
185185
except ValueError as exc:
186186
return Response(
187-
response=str(exc),
187+
response=str(object=exc),
188188
status=HTTPStatus.CONFLICT,
189189
)
190190

@@ -195,7 +195,7 @@ def create_database() -> Response:
195195

196196

197197
@TARGET_MANAGER_FLASK_APP.route(
198-
"/databases/<string:database_name>/targets",
198+
rule="/databases/<string:database_name>/targets",
199199
methods=[HTTPMethod.POST],
200200
)
201201
@beartype
@@ -233,7 +233,7 @@ def create_target(database_name: str) -> Response:
233233

234234

235235
@TARGET_MANAGER_FLASK_APP.route(
236-
"/databases/<string:database_name>/targets/<string:target_id>",
236+
rule="/databases/<string:database_name>/targets/<string:target_id>",
237237
methods={HTTPMethod.DELETE},
238238
)
239239
@beartype
@@ -258,7 +258,7 @@ def delete_target(database_name: str, target_id: str) -> Response:
258258

259259

260260
@TARGET_MANAGER_FLASK_APP.route(
261-
"/databases/<string:database_name>/targets/<string:target_id>",
261+
rule="/databases/<string:database_name>/targets/<string:target_id>",
262262
methods=[HTTPMethod.PUT],
263263
)
264264
def update_target(database_name: str, target_id: str) -> Response:

src/mock_vws/_flask_server/vwq.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def set_terminate_wsgi_input() -> None:
109109
request.environ["wsgi.input_terminated"] = True
110110

111111

112-
@CLOUDRECO_FLASK_APP.errorhandler(ValidatorError)
112+
@CLOUDRECO_FLASK_APP.errorhandler(code_or_exception=ValidatorError)
113113
def handle_exceptions(exc: ValidatorError) -> Response:
114114
"""
115115
Return the error response associated with the given exception.
@@ -125,7 +125,7 @@ def handle_exceptions(exc: ValidatorError) -> Response:
125125
return response
126126

127127

128-
@CLOUDRECO_FLASK_APP.route("/v1/query", methods=[HTTPMethod.POST])
128+
@CLOUDRECO_FLASK_APP.route(rule="/v1/query", methods=[HTTPMethod.POST])
129129
def query() -> Response:
130130
"""
131131
Perform an image recognition query.

src/mock_vws/_flask_server/vws.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def validate_request() -> None:
140140
)
141141

142142

143-
@VWS_FLASK_APP.errorhandler(ValidatorError)
143+
@VWS_FLASK_APP.errorhandler(code_or_exception=ValidatorError)
144144
def handle_exceptions(exc: ValidatorError) -> Response:
145145
"""
146146
Return the error response associated with the given exception.
@@ -156,7 +156,7 @@ def handle_exceptions(exc: ValidatorError) -> Response:
156156
return response
157157

158158

159-
@VWS_FLASK_APP.route("/targets", methods=[HTTPMethod.POST])
159+
@VWS_FLASK_APP.route(rule="/targets", methods=[HTTPMethod.POST])
160160
@beartype
161161
def add_target() -> Response:
162162
"""Add a target.
@@ -228,7 +228,9 @@ def add_target() -> Response:
228228
)
229229

230230

231-
@VWS_FLASK_APP.route("/targets/<string:target_id>", methods=[HTTPMethod.GET])
231+
@VWS_FLASK_APP.route(
232+
rule="/targets/<string:target_id>", methods=[HTTPMethod.GET]
233+
)
232234
@beartype
233235
def get_target(target_id: str) -> Response:
234236
"""Get details of a target.
@@ -283,7 +285,7 @@ def get_target(target_id: str) -> Response:
283285

284286

285287
@VWS_FLASK_APP.route(
286-
"/targets/<string:target_id>",
288+
rule="/targets/<string:target_id>",
287289
methods=[HTTPMethod.DELETE],
288290
)
289291
def delete_target(target_id: str) -> Response:
@@ -337,7 +339,7 @@ def delete_target(target_id: str) -> Response:
337339
)
338340

339341

340-
@VWS_FLASK_APP.route("/summary", methods=[HTTPMethod.GET])
342+
@VWS_FLASK_APP.route(rule="/summary", methods=[HTTPMethod.GET])
341343
@beartype
342344
def database_summary() -> Response:
343345
"""Get a database summary report.
@@ -390,7 +392,10 @@ def database_summary() -> Response:
390392
)
391393

392394

393-
@VWS_FLASK_APP.route("/summary/<string:target_id>", methods=[HTTPMethod.GET])
395+
@VWS_FLASK_APP.route(
396+
rule="/summary/<string:target_id>",
397+
methods=[HTTPMethod.GET],
398+
)
394399
def target_summary(target_id: str) -> Response:
395400
"""Get a summary report for a target.
396401
@@ -415,7 +420,7 @@ def target_summary(target_id: str) -> Response:
415420
"result_code": ResultCodes.SUCCESS.value,
416421
"database_name": database.database_name,
417422
"target_name": target.name,
418-
"upload_date": target.upload_date.strftime("%Y-%m-%d"),
423+
"upload_date": target.upload_date.strftime(format="%Y-%m-%d"),
419424
"active_flag": target.active_flag,
420425
"tracking_rating": target.tracking_rating,
421426
"total_recos": target.total_recos,
@@ -441,7 +446,7 @@ def target_summary(target_id: str) -> Response:
441446

442447

443448
@VWS_FLASK_APP.route(
444-
"/duplicates/<string:target_id>",
449+
rule="/duplicates/<string:target_id>",
445450
methods=[HTTPMethod.GET],
446451
)
447452
@beartype
@@ -503,7 +508,7 @@ def get_duplicates(target_id: str) -> Response:
503508
)
504509

505510

506-
@VWS_FLASK_APP.route("/targets", methods=[HTTPMethod.GET])
511+
@VWS_FLASK_APP.route(rule="/targets", methods=[HTTPMethod.GET])
507512
def target_list() -> Response:
508513
"""Get a list of all targets.
509514
@@ -543,7 +548,9 @@ def target_list() -> Response:
543548
)
544549

545550

546-
@VWS_FLASK_APP.route("/targets/<string:target_id>", methods=[HTTPMethod.PUT])
551+
@VWS_FLASK_APP.route(
552+
rule="/targets/<string:target_id>", methods=[HTTPMethod.PUT]
553+
)
547554
def update_target(target_id: str) -> Response:
548555
"""Update a target.
549556

src/mock_vws/_query_tools.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,11 @@ def get_query_match_response_text(
5454
content_length=len(request_body),
5555
)
5656

57-
max_num_results = fields.get("max_num_results", "1")
58-
include_target_data = fields.get("include_target_data", "top").lower()
57+
max_num_results = fields.get(key="max_num_results", default="1")
58+
include_target_data = fields.get(
59+
key="include_target_data",
60+
default="top",
61+
).lower()
5962

6063
image_part = files["image"]
6164
image_value = image_part.stream.read()

src/mock_vws/_query_validators/content_type_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ def validate_content_type_header(
3838
NoContentTypeError: The content type header is either empty or not
3939
given.
4040
"""
41-
content_type_header = request_headers.get("Content-Type", "")
41+
request_headers_dict = dict(request_headers)
42+
content_type_header = request_headers_dict.get("Content-Type", "")
4243
if not content_type_header:
4344
_LOGGER.warning(msg="The content type header is empty.")
4445
raise NoContentTypeError

src/mock_vws/_query_validators/date_validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def validate_date_in_range(*, request_headers: Mapping[str, str]) -> None:
8888
date_header = request_headers["Date"]
8989
gmt = ZoneInfo(key="GMT")
9090

91-
date = datetime.datetime.fromtimestamp(0, tz=gmt)
91+
date = datetime.datetime.fromtimestamp(timestamp=0, tz=gmt)
9292
for date_format in _accepted_date_formats():
9393
with contextlib.suppress(ValueError):
9494
date = datetime.datetime.strptime(

0 commit comments

Comments
 (0)