1
0
mirror of https://github.com/gryf/ebook-converter.git synced 2026-04-23 06:31:30 +02:00

Removed iteritems and itervalues, which are redundant

This commit is contained in:
2020-04-21 18:20:08 +02:00
parent 9e076e0af4
commit 3234e4de27
82 changed files with 382 additions and 457 deletions
+3 -3
View File
@@ -9,7 +9,7 @@ import urllib.parse
from ebook_converter import relpath, guess_type, prints, force_unicode
from ebook_converter.utils.config_base import tweaks
from ebook_converter.polyglot.builtins import iteritems, itervalues, as_unicode
from ebook_converter.polyglot.builtins import as_unicode
from ebook_converter.polyglot.urllib import unquote
@@ -49,7 +49,7 @@ def remove_bracketed_text(src, brackets=None):
counts = Counter()
buf = []
src = force_unicode(src)
rmap = {v: k for k, v in iteritems(brackets)}
rmap = {v: k for k, v in brackets.items()}
for char in src:
if char in brackets:
counts[char] += 1
@@ -57,7 +57,7 @@ def remove_bracketed_text(src, brackets=None):
idx = rmap[char]
if counts[idx] > 0:
counts[idx] -= 1
elif sum(itervalues(counts)) < 1:
elif sum(counts.values()) < 1:
buf.append(char)
return ''.join(buf)
+4 -5
View File
@@ -7,7 +7,6 @@ from ebook_converter.ebooks.metadata.book import (SC_COPYABLE_FIELDS,
TOP_LEVEL_IDENTIFIERS, ALL_METADATA_FIELDS)
from ebook_converter.library.field_metadata import FieldMetadata
from ebook_converter.utils.icu import sort_key
from ebook_converter.polyglot.builtins import iteritems
__license__ = 'GPL v3'
@@ -253,7 +252,7 @@ class Metadata(object):
Set all identifiers. Note that if you previously set ISBN, calling
this method will delete it.
'''
cleaned = {ck(k):cv(v) for k, v in iteritems(identifiers) if k and v}
cleaned = {ck(k):cv(v) for k, v in identifiers.items() if k and v}
object.__getattribute__(self, '_data')['identifiers'] = cleaned
def set_identifier(self, typ, val):
@@ -394,7 +393,7 @@ class Metadata(object):
return
um = {}
for key, meta in iteritems(metadata):
for key, meta in metadata.items():
m = meta.copy()
if '#value#' not in m:
if m['datatype'] == 'text' and m['is_multiple']:
@@ -574,7 +573,7 @@ class Metadata(object):
if callable(getattr(other, 'get_identifiers', None)):
d = self.get_identifiers()
s = other.get_identifiers()
d.update([v for v in iteritems(s) if v[1] is not None])
d.update([v for v in s.items() if v[1] is not None])
self.set_identifiers(d)
else:
# other structure not Metadata. Copy the top-level identifiers
@@ -748,7 +747,7 @@ class Metadata(object):
fmt('Rights', str(self.rights))
if self.identifiers:
fmt('Identifiers', ', '.join(['%s:%s'%(k, v) for k, v in
iteritems(self.identifiers)]))
self.identifiers.items()]))
if self.comments:
fmt('Comments', self.comments)
@@ -10,7 +10,7 @@ from ebook_converter.ebooks.metadata.book import SERIALIZABLE_FIELDS
from ebook_converter.constants import filesystem_encoding, preferred_encoding
from ebook_converter.library.field_metadata import FieldMetadata
from ebook_converter import isbytestring
from ebook_converter.polyglot.builtins import iteritems, itervalues, as_bytes
from ebook_converter.polyglot.builtins import as_bytes
from ebook_converter.polyglot.binary import as_base64_unicode, from_base64_bytes
@@ -151,7 +151,7 @@ class JsonCodec(object):
def encode_metadata_attr(self, book, key):
if key == 'user_metadata':
meta = book.get_all_user_metadata(make_copy=True)
for fm in itervalues(meta):
for fm in meta.values():
if fm['datatype'] == 'datetime':
fm['#value#'] = datetime_to_string(fm['#value#'])
encode_is_multiple(fm)
@@ -186,7 +186,7 @@ class JsonCodec(object):
def raw_to_book(self, json_book, book_class, prefix):
try:
book = book_class(prefix, json_book.get('lpath', None))
for key,val in iteritems(json_book):
for key,val in json_book.items():
meta = self.decode_metadata(key, val)
if key == 'user_metadata':
book.set_all_user_metadata(meta)
@@ -203,7 +203,7 @@ class JsonCodec(object):
if key == 'classifiers':
key = 'identifiers'
if key == 'user_metadata':
for fm in itervalues(value):
for fm in value.values():
if fm['datatype'] == 'datetime':
fm['#value#'] = string_to_datetime(fm['#value#'])
decode_is_multiple(fm)
+3 -4
View File
@@ -13,7 +13,6 @@ from ebook_converter.ebooks.metadata.book.base import Metadata
from ebook_converter.ebooks.chardet import xml_to_unicode
from ebook_converter import replace_entities, isbytestring
from ebook_converter.utils.date import parse_date, is_date_undefined
from ebook_converter.polyglot.builtins import iteritems
__license__ = 'GPL v3'
@@ -54,8 +53,8 @@ META_NAMES = {
'comments': ('comments', 'dc.description'),
'tags': ('tags',),
}
rmap_comment = {v:k for k, v in iteritems(COMMENT_NAMES)}
rmap_meta = {v:k for k, l in iteritems(META_NAMES) for v in l}
rmap_comment = {v:k for k, v in COMMENT_NAMES.items()}
rmap_meta = {v:k for k, l in META_NAMES.items() for v in l}
# Extract an HTML attribute value, supports both single and double quotes and
@@ -230,7 +229,7 @@ def get_metadata_(src, encoding=None):
mi.tags = tags
# IDENTIFIERS
for (k,v) in iteritems(meta_tag_ids):
for (k,v) in meta_tag_ids.items():
v = [x.strip() for x in v if x.strip()]
if v:
mi.set_identifier(k, v[0])
+7 -8
View File
@@ -27,7 +27,6 @@ from ebook_converter import prints, guess_type
from ebook_converter.utils.cleantext import clean_ascii_chars, clean_xml_chars
from ebook_converter.utils.config import tweaks
from ebook_converter.utils.xml_parse import safe_xml_fromstring
from ebook_converter.polyglot.builtins import iteritems
from ebook_converter.polyglot.urllib import unquote
@@ -970,7 +969,7 @@ class OPF(object): # {{{
'descendant::*[local-name() = "identifier" and text()]')(
self.metadata):
found_scheme = False
for attr, val in iteritems(x.attrib):
for attr, val in x.attrib.items():
if attr.endswith('scheme'):
typ = val.lower()
val = etree.tostring(x, with_tail=False, encoding='unicode',
@@ -1003,7 +1002,7 @@ class OPF(object): # {{{
self.metadata):
xid = x.get('id', None)
is_package_identifier = uuid_id is not None and uuid_id == xid
typ = {val.lower() for attr, val in iteritems(x.attrib) if attr.endswith('scheme')}
typ = {val.lower() for attr, val in x.attrib.items() if attr.endswith('scheme')}
if is_package_identifier:
typ = tuple(typ)
if typ and typ[0] in identifiers:
@@ -1012,7 +1011,7 @@ class OPF(object): # {{{
if typ and not (typ & {'calibre', 'uuid'}):
x.getparent().remove(x)
for typ, val in iteritems(identifiers):
for typ, val in identifiers.items():
attrib = {'{%s}scheme'%self.NAMESPACES['opf']: typ.upper()}
self.set_text(self.create_metadata_element(
'identifier', attrib=attrib), str(val))
@@ -1134,7 +1133,7 @@ class OPF(object): # {{{
def page_progression_direction(self):
spine = self.XPath('descendant::*[re:match(name(), "spine", "i")][1]')(self.root)
if spine:
for k, v in iteritems(spine[0].attrib):
for k, v in spine[0].attrib.items():
if k == 'page-progression-direction' or k.endswith('}page-progression-direction'):
return v
@@ -1501,7 +1500,7 @@ class OPFCreator(Metadata):
a(DC_ELEM('description', self.comments))
if self.publisher:
a(DC_ELEM('publisher', self.publisher))
for key, val in iteritems(self.get_identifiers()):
for key, val in self.get_identifiers().items():
a(DC_ELEM('identifier', val, opf_attrs={'scheme':key.upper()}))
if self.rights:
a(DC_ELEM('rights', self.rights))
@@ -1627,7 +1626,7 @@ def metadata_to_opf(mi, as_string=True, default_lang=None):
try:
elem = metadata.makeelement(tag, attrib=attrib)
except ValueError:
elem = metadata.makeelement(tag, attrib={k:clean_xml_chars(v) for k, v in iteritems(attrib)})
elem = metadata.makeelement(tag, attrib={k:clean_xml_chars(v) for k, v in attrib.items()})
elem.tail = '\n'+(' '*8)
if text:
try:
@@ -1648,7 +1647,7 @@ def metadata_to_opf(mi, as_string=True, default_lang=None):
factory(DC('description'), clean_ascii_chars(mi.comments))
if mi.publisher:
factory(DC('publisher'), mi.publisher)
for key, val in iteritems(mi.get_identifiers()):
for key, val in mi.get_identifiers().items():
factory(DC('identifier'), val, scheme=key.upper())
if mi.rights:
factory(DC('rights'), mi.rights)
+6 -7
View File
@@ -2,7 +2,6 @@ import json
import re
from collections import defaultdict, namedtuple
from functools import wraps
from ebook_converter.polyglot.builtins import iteritems
from lxml import etree
@@ -185,9 +184,9 @@ def ensure_prefix(root, prefixes, prefix, value=None):
if prefixes is None:
prefixes = read_prefixes(root)
prefixes[prefix] = value or reserved_prefixes[prefix]
prefixes = {k:v for k, v in iteritems(prefixes) if reserved_prefixes.get(k) != v}
prefixes = {k:v for k, v in prefixes.items() if reserved_prefixes.get(k) != v}
if prefixes:
root.set('prefix', ' '.join('%s: %s' % (k, v) for k, v in iteritems(prefixes)))
root.set('prefix', ' '.join('%s: %s' % (k, v) for k, v in prefixes.items()))
else:
root.attrib.pop('prefix', None)
@@ -294,7 +293,7 @@ def set_identifiers(root, prefixes, refines, new_identifiers, force_identifiers=
remove_element(ident, refines)
continue
metadata = XPath('./opf:metadata')(root)[0]
for scheme, val in iteritems(new_identifiers):
for scheme, val in new_identifiers.items():
ident = metadata.makeelement(DC('identifier'))
ident.text = '%s:%s' % (scheme, val)
if package_identifier is None:
@@ -850,7 +849,7 @@ set_author_link_map = dict_writer('author_link_map')
def deserialize_user_metadata(val):
val = json.loads(val, object_hook=from_json)
ans = {}
for name, fm in iteritems(val):
for name, fm in val.items():
decode_is_multiple(fm)
ans[name] = fm
return ans
@@ -965,7 +964,7 @@ def read_metadata(root, ver=None, return_extra_data=False):
prefixes, refines = read_prefixes(root), read_refines(root)
identifiers = read_identifiers(root, prefixes, refines)
ids = {}
for key, vals in iteritems(identifiers):
for key, vals in identifiers.items():
if key == 'calibre':
ans.application_id = vals[0]
elif key == 'uuid':
@@ -1003,7 +1002,7 @@ def read_metadata(root, ver=None, return_extra_data=False):
ans.series, ans.series_index = s, si
ans.author_link_map = read_author_link_map(root, prefixes, refines) or ans.author_link_map
ans.user_categories = read_user_categories(root, prefixes, refines) or ans.user_categories
for name, fm in iteritems((read_user_metadata(root, prefixes, refines) or {})):
for name, fm in (read_user_metadata(root, prefixes, refines) or {}).items():
ans.set_user_metadata(name, fm)
if return_extra_data:
ans = ans, ver, read_raster_cover(root, prefixes, refines), first_spine_item(root, prefixes, refines)
+2 -3
View File
@@ -10,7 +10,6 @@ from ebook_converter.ptempfile import TemporaryDirectory
from ebook_converter.ebooks.metadata import (
MetaInformation, string_to_authors, check_isbn, check_doi)
from ebook_converter.utils.ipc.simple_worker import fork_job, WorkerError
from ebook_converter.polyglot.builtins import iteritems
__license__ = 'GPL v3'
@@ -157,9 +156,9 @@ def get_metadata(stream, cover=True):
# Look for recognizable identifiers in the info dict, if they were not
# found in the XMP metadata
for scheme, check_func in iteritems({'doi':check_doi, 'isbn':check_isbn}):
for scheme, check_func in {'doi':check_doi, 'isbn':check_isbn}.items():
if scheme not in mi.get_identifiers():
for k, v in iteritems(info):
for k, v in info.items():
if k != 'xmp_metadata':
val = check_func(v)
if val:
+11 -12
View File
@@ -12,7 +12,6 @@ from ebook_converter.ebooks.metadata.book.base import Metadata
from ebook_converter.ebooks.metadata.opf2 import dump_dict
from ebook_converter.utils.date import parse_date, isoformat, now
from ebook_converter.utils.localization import canonicalize_lang, lang_as_iso639_1
from ebook_converter.polyglot.builtins import iteritems
__license__ = 'GPL v3'
@@ -320,7 +319,7 @@ def metadata_from_xmp_packet(raw_bytes):
identifiers[scheme] = val
# Check Dublin Core for recognizable identifier types
for scheme, check_func in iteritems({'doi':check_doi, 'isbn':check_isbn}):
for scheme, check_func in {'doi':check_doi, 'isbn':check_isbn}.items():
if scheme not in identifiers:
val = check_func(first_simple('//dc:identifier', root))
if val:
@@ -404,7 +403,7 @@ def create_identifiers(xmp, identifiers):
xmp.append(xmpid)
bag = xmpid.makeelement(expand('rdf:Bag'))
xmpid.append(bag)
for scheme, value in iteritems(identifiers):
for scheme, value in identifiers.items():
li = bag.makeelement(expand('rdf:li'))
li.set(expand('rdf:parseType'), 'Resource')
bag.append(li)
@@ -440,7 +439,7 @@ def create_user_metadata(calibre, all_user_metadata):
calibre.append(s)
bag = s.makeelement(expand('rdf:Bag'))
s.append(bag)
for name, fm in iteritems(all_user_metadata):
for name, fm in all_user_metadata.items():
try:
fm = copy.copy(fm)
encode_is_multiple(fm)
@@ -470,12 +469,12 @@ def metadata_to_xmp_packet(mi):
dc = rdf.makeelement(expand('rdf:Description'), nsmap=nsmap('dc'))
dc.set(expand('rdf:about'), '')
rdf.append(dc)
for prop, tag in iteritems({'title':'dc:title', 'comments':'dc:description'}):
for prop, tag in {'title':'dc:title', 'comments':'dc:description'}.items():
val = mi.get(prop) or ''
create_alt_property(dc, tag, val)
for prop, (tag, ordered) in iteritems({
'authors':('dc:creator', True), 'tags':('dc:subject', False), 'publisher':('dc:publisher', False),
}):
for prop, (tag, ordered) in {'authors': ('dc:creator', True),
'tags': ('dc:subject', False),
'publisher': ('dc:publisher', False)}.items():
val = mi.get(prop) or ()
if isinstance(val, (str, bytes)):
val = [val]
@@ -499,9 +498,9 @@ def metadata_to_xmp_packet(mi):
identifiers = mi.get_identifiers()
if identifiers:
create_identifiers(xmp, identifiers)
for scheme, val in iteritems(identifiers):
for scheme, val in identifiers.items():
if scheme in {'isbn', 'doi'}:
for prefix, parent in iteritems(extra_ids):
for prefix, parent in extra_ids.items():
ie = parent.makeelement(expand('%s:%s'%(prefix, scheme)))
ie.text = val
parent.append(ie)
@@ -549,7 +548,7 @@ def find_used_namespaces(elem):
def find_preferred_prefix(namespace, elems):
for elem in elems:
ans = {v:k for k, v in iteritems(elem.nsmap)}.get(namespace, None)
ans = {v:k for k, v in elem.nsmap.items()}.get(namespace, None)
if ans is not None:
return ans
return find_preferred_prefix(namespace, elem.iterchildren(etree.Element))
@@ -561,7 +560,7 @@ def find_nsmap(elems):
used_namespaces |= find_used_namespaces(elem)
ans = {}
used_namespaces -= {NS_MAP['xml'], NS_MAP['x'], None, NS_MAP['rdf']}
rmap = {v:k for k, v in iteritems(NS_MAP)}
rmap = {v:k for k, v in NS_MAP.items()}
i = 0
for ns in used_namespaces:
if ns in rmap: