@@ -68,16 +68,16 @@ def _get_ydimension(self):
68
68
return self .reader .size ().height ()
69
69
70
70
def __getitem__ (self , key : str ) -> Tuple [str , str , str ]:
71
- """Intrypoint to extract the key of the image at _path.
71
+ """Entrypoint to extract the key of the image at _path.
72
72
73
73
Args:
74
74
key: internal key to fetch.
75
+
76
+ Throws:
77
+ KeyError
75
78
"""
76
- try :
77
- key , func = super ().get (key .lower ())
78
- return (key , key , func ())
79
- except KeyError :
80
- return ("" , "" , "" )
79
+ key , func = super ().__getitem__ (key .lower ())
80
+ return (key , key , func ())
81
81
82
82
def get_keys (self ) -> Iterable [str ]:
83
83
"""Returns a sequence of all available metadata keys."""
@@ -119,6 +119,9 @@ def fetch_key(self, _base_key: str) -> Tuple[str, str, str]:
119
119
120
120
Args:
121
121
_base_key: metadata key to fetch.
122
+
123
+ Throws:
124
+ KeyError
122
125
"""
123
126
self .raise_exception ("Getting formatted keys" )
124
127
@@ -150,7 +153,7 @@ def __init__(self, filename=""):
150
153
def fetch_key (self , base_key : str ) -> Tuple [str , str , str ]:
151
154
key = base_key .rpartition ("." )[2 ]
152
155
153
- try :
156
+ with contextlib . suppress ( piexif . InvalidImageDateError ) :
154
157
for ifd in self ._metadata :
155
158
if ifd == "thumbnail" :
156
159
continue
@@ -189,10 +192,7 @@ def fetch_key(self, base_key: str) -> Tuple[str, str, str]:
189
192
): # (int, int) <=> numerator, denominator
190
193
return (keyname , keyname , f"{ val [0 ]} /{ val [1 ]} " )
191
194
192
- except (piexif .InvalidImageDataError , KeyError ):
193
- return ("" , "" , "" )
194
-
195
- return ("" , "" , "" )
195
+ raise KeyError (f"Key '{ base_key } ' not found" )
196
196
197
197
def get_keys (self ) -> Iterable [str ]:
198
198
return (
@@ -271,28 +271,23 @@ def fetch_key(self, base_key: str) -> Tuple[str, str, str]:
271
271
# For backwards compability, assume it has one of the following prefixes
272
272
for prefix in ["" , "Exif.Image." , "Exif.Photo." ]:
273
273
key = f"{ prefix } { base_key } "
274
- try :
275
- key_name = self ._metadata [key ].name
276
-
277
- try :
278
- key_value = self ._metadata [key ].human_value
274
+ key_name = self ._metadata [key ].name
279
275
280
- # Not all metadata (i.e. IPTC) provide human_value, take raw_value
281
- except AttributeError :
282
- value = self ._metadata [key ].raw_value
283
-
284
- # For IPTC the raw_value is a list of strings
285
- if isinstance (value , list ):
286
- key_value = ", " .join (value )
287
- else :
288
- key_value = value
276
+ try :
277
+ key_value = self ._metadata [key ].human_value
289
278
290
- return (key , key_name , key_value )
279
+ # Not all metadata (i.e. IPTC) provide human_value, take raw_value
280
+ except AttributeError :
281
+ value = self ._metadata [key ].raw_value
291
282
292
- except KeyError :
293
- _logger .debug ("Key %s is invalid for the current image" , key )
283
+ # For IPTC the raw_value is a list of strings
284
+ if isinstance (value , list ):
285
+ key_value = ", " .join (value )
286
+ else :
287
+ key_value = value
294
288
295
- return ("" , "" , "" )
289
+ return (key , key_name , key_value )
290
+ raise KeyError (f"Key '{ base_key } ' not found" )
296
291
297
292
def get_keys (self ) -> Iterable [str ]:
298
293
"""Return a iteable of all available metadata keys."""
@@ -361,10 +356,11 @@ def _external_handler(self) -> ExternalKeyHandler:
361
356
def fetch_keys (self , desired_keys : Sequence [str ]) -> Dict [Any , Tuple [str , str ]]:
362
357
"""Extracts a list of metadata keys.
363
358
364
- Throws: UnsupportedMetadataOperation.
365
-
366
359
Args:
367
360
desired_keys: list of metadata keys to extract.
361
+
362
+ Throws:
363
+ UnsupportedMetadataOperation
368
364
"""
369
365
metadata = dict ()
370
366
@@ -382,10 +378,12 @@ def fetch_keys(self, desired_keys: Sequence[str]) -> Dict[Any, Tuple[str, str]]:
382
378
def fetch_key (self , key : str ) -> Tuple [str , str , str ]:
383
379
"""Extracts a single metadata key.
384
380
385
- Throws: UnsupportedMetadataOperation.
386
-
387
381
Args:
388
382
key: single metadata key to extract.
383
+
384
+ Throws:
385
+ UnsupportedMetadataOperation
386
+ KeyError
389
387
"""
390
388
if key .lower ().startswith ("vimiv" ):
391
389
return self ._internal_handler [key ]
@@ -394,7 +392,8 @@ def fetch_key(self, key: str) -> Tuple[str, str, str]:
394
392
def get_keys (self ) -> Iterable [str ]:
395
393
"""Retrieve the name of all metadata keys available.
396
394
397
- Throws: UnsupportedMetadataOperation
395
+ Throws:
396
+ UnsupportedMetadataOperation
398
397
"""
399
398
return itertools .chain (
400
399
self ._internal_handler .get_keys (), self ._external_handler .get_keys ()
0 commit comments