Skip to content

Commit 8c1b18f

Browse files
committed
fix W1203: Use lazy % formatting in logging functions
1 parent 3048360 commit 8c1b18f

File tree

1 file changed

+42
-42
lines changed

1 file changed

+42
-42
lines changed

dspace_rest_client/client.py

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def parse_json(response):
4444
try:
4545
response_json = response.json()
4646
except ValueError as err:
47-
logging.error(f'Error parsing response JSON: {err}. Body text: {response.text}')
47+
logging.error('Error parsing response JSON: %s. Body text: %s', err, response.text)
4848
return response_json
4949

5050

@@ -170,7 +170,7 @@ def authenticate(self, retry=False):
170170
# After speaking in #dev it seems that these do need occasional refreshes but I suspect
171171
# it's happening too often for me, so check for accidentally triggering it
172172
if retry:
173-
logging.error(f'Too many retries updating token: {r.status_code}: {r.text}')
173+
logging.error('Too many retries updating token: %s: %s', r.status_code, r.text)
174174
return False
175175
else:
176176
logging.debug("Retrying request with updated CSRF token")
@@ -179,7 +179,7 @@ def authenticate(self, retry=False):
179179
if r.status_code == 401:
180180
# 401 Unauthorized
181181
# If we get a 401, this means a general authentication failure
182-
logging.error(f'Authentication failure: invalid credentials for user {self.USERNAME}')
182+
logging.error('Authentication failure: invalid credentials for user %s', self.USERNAME)
183183
return False
184184

185185
# Update headers with new bearer token if present
@@ -191,7 +191,7 @@ def authenticate(self, retry=False):
191191
if r.status_code == 200:
192192
r_json = parse_json(r)
193193
if 'authenticated' in r_json and r_json['authenticated'] is True:
194-
logging.info(f'Authenticated successfully as {self.USERNAME}')
194+
logging.info('Authenticated successfully as %s', self.USERNAME)
195195
return r_json['authenticated']
196196

197197
# Default, return false
@@ -241,7 +241,7 @@ def api_post(self, url, params, json, retry=False):
241241
r_json = parse_json(r)
242242
if 'message' in r_json and 'CSRF token' in r_json['message']:
243243
if retry:
244-
logging.warning(f'Too many retries updating token: {r.status_code}: {r.text}')
244+
logging.warning('Too many retries updating token: %s: %s', r.status_code, r.text)
245245
else:
246246
logging.debug("Retrying request with updated CSRF token")
247247
return self.api_post(url, params=params, json=json, retry=True)
@@ -269,7 +269,7 @@ def api_post_uri(self, url, params, uri_list, retry=False):
269269
r_json = r.json()
270270
if 'message' in r_json and 'CSRF token' in r_json['message']:
271271
if retry:
272-
logging.warning(f'Too many retries updating token: {r.status_code}: {r.text}')
272+
logging.warning('Too many retries updating token: %s: %s', r.status_code, r.text)
273273
else:
274274
logging.debug("Retrying request with updated CSRF token")
275275
return self.api_post_uri(url, params=params, uri_list=uri_list, retry=True)
@@ -299,7 +299,7 @@ def api_put(self, url, params, json, retry=False):
299299
r_json = parse_json(r)
300300
if 'message' in r_json and 'CSRF token' in r_json['message']:
301301
if retry:
302-
logging.warning(f'Too many retries updating token: {r.status_code}: {r.text}')
302+
logging.warning('Too many retries updating token: %s: %s', r.status_code, r.text)
303303
else:
304304
logging.debug("Retrying request with updated CSRF token")
305305
return self.api_put(url, params=params, json=json, retry=True)
@@ -328,7 +328,7 @@ def api_delete(self, url, params, retry=False):
328328
r_json = parse_json(r)
329329
if 'message' in r_json and 'CSRF token' in r_json['message']:
330330
if retry:
331-
logging.warning(f'Too many retries updating token: {r.status_code}: {r.text}')
331+
logging.warning('Too many retries updating token: %s: %s', r.status_code, r.text)
332332
else:
333333
logging.debug("Retrying request with updated CSRF token")
334334
return self.api_delete(url, params=params, retry=True)
@@ -346,15 +346,15 @@ def api_patch(self, url, operation, path, value, retry=False):
346346
@see https://github.com/DSpace/RestContract/blob/main/metadata-patch.md
347347
"""
348348
if url is None:
349-
logging.error(f'Missing required URL argument')
349+
logging.error('Missing required URL argument')
350350
return None
351351
if path is None:
352-
logging.error(f'Need valid path eg. /withdrawn or /metadata/dc.title/0/language')
352+
logging.error('Need valid path eg. /withdrawn or /metadata/dc.title/0/language')
353353
return None
354354
if (operation == self.PatchOperation.ADD or operation == self.PatchOperation.REPLACE
355355
or operation == self.PatchOperation.MOVE) and value is None:
356356
# missing value required for add/replace/move operations
357-
logging.error(f'Missing required "value" argument for add/replace/move operations')
357+
logging.error('Missing required "value" argument for add/replace/move operations')
358358
return None
359359

360360
# compile patch data
@@ -382,13 +382,13 @@ def api_patch(self, url, operation, path, value, retry=False):
382382
r_json = parse_json(r)
383383
if 'message' in r_json and 'CSRF token' in r_json['message']:
384384
if retry:
385-
logging.warning(f'Too many retries updating token: {r.status_code}: {r.text}')
385+
logging.warning('Too many retries updating token: %s: %s', r.status_code, r.text)
386386
else:
387387
logging.debug("Retrying request with updated CSRF token")
388388
return self.api_patch(url, operation, path, value, True)
389389
elif r.status_code == 200:
390390
# 200 Success
391-
logging.info(f'successful patch update to {r.json()["type"]} {r.json()["id"]}')
391+
logging.info('successful patch update to %s %s', r.json()["type"], r.json()["id"])
392392

393393
# Return the raw API response
394394
return r
@@ -435,7 +435,7 @@ def search_objects(self, query=None, scope=None, filters=None, page=0, size=20,
435435
dso = SimpleDSpaceObject(resource)
436436
dsos.append(dso)
437437
except (TypeError, ValueError) as err:
438-
logging.error(f'error parsing search result json {err}')
438+
logging.error('error parsing search result json %s', err)
439439

440440
return dsos
441441

@@ -479,7 +479,7 @@ def fetch_resource(self, url, params=None):
479479
"""
480480
r = self.api_get(url, params, None)
481481
if r.status_code != 200:
482-
logging.error(f'Error encountered fetching resource: {r.text}')
482+
logging.error('Error encountered fetching resource: %s', r.text)
483483
return None
484484
# ValueError / JSON handling moved to static method
485485
return parse_json(r)
@@ -498,7 +498,7 @@ def get_dso(self, url, uuid):
498498
url = f'{url}/{uuid}'
499499
return self.api_get(url, None, None)
500500
except ValueError:
501-
logging.error(f'Invalid DSO UUID: {uuid}')
501+
logging.error('Invalid DSO UUID: %s', uuid)
502502
return None
503503

504504
def create_dso(self, url, params, data):
@@ -515,9 +515,9 @@ def create_dso(self, url, params, data):
515515
if r.status_code == 201:
516516
# 201 Created - success!
517517
new_dso = parse_json(r)
518-
logging.info(f'{new_dso["type"]} {new_dso["uuid"]} created successfully!')
518+
logging.info('%s %s created successfully!', new_dso["type"], new_dso["uuid"])
519519
else:
520-
logging.error(f'create operation failed: {r.status_code}: {r.text} ({url})')
520+
logging.error('create operation failed: %s: %s (%s)', r.status_code, r.text, url)
521521
return r
522522

523523
def update_dso(self, dso, params=None):
@@ -533,8 +533,8 @@ def update_dso(self, dso, params=None):
533533
return None
534534
dso_type = type(dso)
535535
if not isinstance(dso, SimpleDSpaceObject):
536-
logging.error(f'Only SimpleDSpaceObject types (eg Item, Collection, Community) '
537-
f'are supported by generic update_dso PUT.')
536+
logging.error('Only SimpleDSpaceObject types (eg Item, Collection, Community) '
537+
'are supported by generic update_dso PUT.')
538538
return dso
539539
try:
540540
# Get self URI from HAL links
@@ -558,13 +558,13 @@ def update_dso(self, dso, params=None):
558558
if r.status_code == 200:
559559
# 200 OK - success!
560560
updated_dso = dso_type(parse_json(r))
561-
logging.info(f'{updated_dso.type} {updated_dso.uuid} updated sucessfully!')
561+
logging.info('%s %s updated successfully!', updated_dso.type, updated_dso.uuid)
562562
return updated_dso
563563
else:
564-
logging.error(f'update operation failed: {r.status_code}: {r.text} ({url})')
564+
logging.error('update operation failed: %s: %s (%s)', r.status_code, r.text, url)
565565
return None
566566

567-
except ValueError as e:
567+
except ValueError:
568568
logging.error("Error parsing DSO response", exc_info=True)
569569
return None
570570

@@ -580,12 +580,12 @@ def delete_dso(self, dso=None, url=None, params=None):
580580
"""
581581
if dso is None:
582582
if url is None:
583-
logging.error(f'Need a DSO or a URL to delete')
583+
logging.error('Need a DSO or a URL to delete')
584584
return None
585585
else:
586586
if not isinstance(dso, SimpleDSpaceObject):
587-
logging.error(f'Only SimpleDSpaceObject types (eg Item, Collection, Community, EPerson) '
588-
f'are supported by generic update_dso PUT.')
587+
logging.error('Only SimpleDSpaceObject types (eg Item, Collection, Community, EPerson) '
588+
'are supported by generic update_dso PUT.')
589589
return dso
590590
# Get self URI from HAL links
591591
url = dso.links['self']['href']
@@ -594,13 +594,13 @@ def delete_dso(self, dso=None, url=None, params=None):
594594
r = self.api_delete(url, params=params)
595595
if r.status_code == 204:
596596
# 204 No Content - success!
597-
logging.info(f'{url} was deleted sucessfully!')
597+
logging.info('%s was deleted successfully!', url)
598598
return r
599599
else:
600-
logging.error(f'update operation failed: {r.status_code}: {r.text} ({url})')
600+
logging.error('update operation failed: %s: %s (%s)', r.status_code, r.text, url)
601601
return None
602602
except ValueError as e:
603-
logging.error(f'Error deleting DSO {dso.uuid}: {e}')
603+
logging.error('Error deleting DSO %s: %s', dso.uuid, e)
604604
return None
605605

606606
# PAGINATION
@@ -639,7 +639,7 @@ def get_bundles(self, parent=None, uuid=None, page=0, size=20, sort=None):
639639
for resource in resources:
640640
bundles.append(Bundle(resource))
641641
except ValueError as err:
642-
logging.error(f'error parsing bundle results: {err}')
642+
logging.error('error parsing bundle results: %s', err)
643643

644644
return bundles
645645

@@ -690,7 +690,7 @@ def get_bitstreams(self, uuid=None, bundle=None, page=0, size=20, sort=None):
690690
url = bundle.links['bitstreams']['href']
691691
else:
692692
url = f'{self.API_ENDPOINT}/core/bundles/{bundle.uuid}/bitstreams'
693-
logging.warning(f'Cannot find bundle bitstream links, will try to construct manually: {url}')
693+
logging.warning('Cannot find bundle bitstream links, will try to construct manually: %s', url)
694694
# Perform the actual request. By now, our URL and parameter should be properly set
695695
params = {}
696696
if size is not None:
@@ -718,7 +718,7 @@ def get_bitstreams_iter(do_paginate, self, bundle, sort=None):
718718
url = bundle.links['bitstreams']['href']
719719
else:
720720
url = f'{self.API_ENDPOINT}/core/bundles/{bundle.uuid}/bitstreams'
721-
logging.warning(f'Cannot find bundle bitstream links, will try to construct manually: {url}')
721+
logging.warning('Cannot find bundle bitstream links, will try to construct manually: %s', url)
722722
params = {}
723723
if sort is not None:
724724
params['sort'] = sort
@@ -759,7 +759,7 @@ def create_bitstream(self, bundle=None, name=None, path=None, mime=None, metadat
759759
r = self.session.send(prepared_req)
760760
if 'DSPACE-XSRF-TOKEN' in r.headers:
761761
t = r.headers['DSPACE-XSRF-TOKEN']
762-
logging.debug('Updating token to ' + t)
762+
logging.debug('Updating token to %s', t)
763763
self.session.headers.update({'X-XSRF-Token': t})
764764
self.session.cookies.update({'X-XSRF-Token': t})
765765
if r.status_code == 403:
@@ -775,7 +775,7 @@ def create_bitstream(self, bundle=None, name=None, path=None, mime=None, metadat
775775
# Success
776776
return Bitstream(api_resource=parse_json(r))
777777
else:
778-
logging.error(f'Error creating bitstream: {r.status_code}: {r.text}')
778+
logging.error('Error creating bitstream: %s: %s', r.status_code, r.text)
779779
return None
780780

781781
def download_bitstream(self, uuid=None):
@@ -816,14 +816,14 @@ def get_communities(self, uuid=None, page=0, size=20, sort=None, top=False):
816816
url = f'{url}/{uuid}'
817817
params = None
818818
except ValueError:
819-
logging.error(f'Invalid community UUID: {uuid}')
819+
logging.error('Invalid community UUID: %s', uuid)
820820
return None
821821

822822
if top:
823823
# Set new URL
824824
url = f'{url}/search/top'
825825

826-
logging.debug(f'Performing get on {url}')
826+
logging.debug('Performing get on %s', url)
827827
# Perform actual get
828828
r_json = self.fetch_resource(url, params)
829829
# Empty list
@@ -897,7 +897,7 @@ def get_collections(self, uuid=None, community=None, page=0, size=20, sort=None)
897897
url = f'{url}/{uuid}'
898898
params = None
899899
except ValueError:
900-
logging.error(f'Invalid collection UUID: {uuid}')
900+
logging.error('Invalid collection UUID: %s', uuid)
901901
return None
902902

903903
if community is not None:
@@ -964,7 +964,7 @@ def get_item(self, uuid):
964964
url = f'{url}/{uuid}'
965965
return self.api_get(url, None, None)
966966
except ValueError:
967-
logging.error(f'Invalid item UUID: {uuid}')
967+
logging.error('Invalid item UUID: %s', uuid)
968968
return None
969969

970970
def get_items(self):
@@ -1030,11 +1030,11 @@ def create_item_version(self, item_uuid, summary=None):
10301030
if response.status_code == 201:
10311031
# 201 Created - Success
10321032
new_version = parse_json(response)
1033-
logging.info(f"Created new version for item {item_uuid}")
1033+
logging.info("Created new version for item %s", item_uuid)
10341034
return new_version
10351035
else:
10361036
logging.error(
1037-
f"Error creating item version: {response.status_code} {response.text}"
1037+
"Error creating item version: %s %s", response.status_code, response.text
10381038
)
10391039

10401040
return None
@@ -1106,7 +1106,7 @@ def create_user(self, user, token=None):
11061106

11071107
def delete_user(self, user):
11081108
if not isinstance(user, User):
1109-
logging.error(f'Must be a valid user')
1109+
logging.error('Must be a valid user')
11101110
return None
11111111
return self.delete_dso(user)
11121112

@@ -1181,7 +1181,7 @@ def update_token(self, r):
11811181
self.session = requests.Session()
11821182
if 'DSPACE-XSRF-TOKEN' in r.headers:
11831183
t = r.headers['DSPACE-XSRF-TOKEN']
1184-
logging.debug(f'Updating XSRF token to {t}')
1184+
logging.debug('Updating XSRF token to %s', t)
11851185
# Update headers and cookies
11861186
self.session.headers.update({'X-XSRF-Token': t})
11871187
self.session.cookies.update({'X-XSRF-Token': t})

0 commit comments

Comments
 (0)