OPF2: Speedup to_book_metadata() by avoiding deepcopying large non-metadata items

This commit is contained in:
Kovid Goyal 2024-09-17 09:58:38 +05:30
parent 7792a0c3be
commit a700b3f19c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -695,7 +695,13 @@ class OPF: # {{{
if self.package_version >= 3.0:
from calibre.ebooks.metadata.opf3 import read_metadata
return read_metadata(self.root)
ans = MetaInformation(self)
# avoid deepcopy of non-metadata items
manifest, spine, guide, toc = self.manifest, self.spine, self.guide, self.toc
self.manifest = self.spine = self.guide = self.toc = None
try:
ans = MetaInformation(self)
finally:
self.manifest, self.spine, self.guide, self.toc = manifest, spine, guide, toc
for n, v in self._user_metadata_.items():
ans.set_user_metadata(n, v)