From 356e312eb17e4d74a762383094cb28f70f8b5780 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sun, 20 Oct 2024 12:31:38 +0100 Subject: [PATCH] Here is an implementation of has_key() where both Metadata and ProxyMetadata do the same thing. --- src/calibre/db/lazy.py | 3 ++- src/calibre/ebooks/metadata/book/base.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/db/lazy.py b/src/calibre/db/lazy.py index 33594767e6..2899f85b27 100644 --- a/src/calibre/db/lazy.py +++ b/src/calibre/db/lazy.py @@ -387,7 +387,8 @@ class ProxyMetadata(Metadata): "Use the explicit methods such as all_field_keys()") 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): self._unimplemented_exception('deepcopy', add_txt=False) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 1d62c21f99..1e42a10426 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -201,7 +201,7 @@ class Metadata: return iter(object.__getattribute__(self, '_data')) 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): custom_fields = object.__getattribute__(self, '_data')['user_metadata']