Here is an implementation of has_key() where both Metadata and ProxyMetadata do the same thing.

This commit is contained in:
Charles Haley 2024-10-20 12:31:38 +01:00
parent babc0b9e48
commit 356e312eb1
2 changed files with 3 additions and 2 deletions

View File

@ -387,7 +387,8 @@ class ProxyMetadata(Metadata):
"Use the explicit methods such as all_field_keys()") "Use the explicit methods such as all_field_keys()")
def has_key(self, key): def has_key(self, key):
return key in self.all_field_keys() from calibre.ebooks.metadata.book import STANDARD_METADATA_FIELDS
return key in STANDARD_METADATA_FIELDS or key in ga(self, '_user_metadata')
def deepcopy(self, **kwargs): def deepcopy(self, **kwargs):
self._unimplemented_exception('deepcopy', add_txt=False) self._unimplemented_exception('deepcopy', add_txt=False)

View File

@ -201,7 +201,7 @@ class Metadata:
return iter(object.__getattribute__(self, '_data')) return iter(object.__getattribute__(self, '_data'))
def has_key(self, key): def has_key(self, key):
return key in object.__getattribute__(self, '_data') return key in STANDARD_METADATA_FIELDS or key in object.__getattribute__(self, '_data')['user_metadata']
def _evaluate_all_composites(self): def _evaluate_all_composites(self):
custom_fields = object.__getattribute__(self, '_data')['user_metadata'] custom_fields = object.__getattribute__(self, '_data')['user_metadata']