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):