From 5b17a2431f978bd69d5db1bd3905614662f6b681 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 29 Sep 2024 22:24:23 +0530 Subject: [PATCH] Only copy has_cover and id if they exist --- src/calibre/ebooks/metadata/book/base.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index ce90dc92de..1d62c21f99 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -7,6 +7,7 @@ __docformat__ = 'restructuredtext en' import copy import traceback +from contextlib import suppress from calibre import prints from calibre.constants import DEBUG @@ -232,8 +233,10 @@ class Metadata: m = Metadata(None) object.__setattr__(m, '_data', copy.deepcopy(object.__getattribute__(self, '_data'))) # Also copy these two top-level attributes as they can appear in templates. - object.__setattr__(m, 'id', copy.copy(self.get('id'))) - object.__setattr__(m, 'has_cover', copy.copy(self.get('has_cover'))) + with suppress(AttributeError): + object.__setattr__(m, 'id', copy.copy(self.__getattribute__('id'))) + with suppress(AttributeError): + object.__setattr__(m, 'has_cover', copy.copy(self.__getattribute__('has_cover'))) return m def get(self, field, default=None):