dict fixes in the setup package

This commit is contained in:
Kovid Goyal 2018-09-10 20:54:35 +05:30
parent 5bdb5b7c6c
commit f39f3951f4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
5 changed files with 37 additions and 18 deletions

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import with_statement, print_function
from __future__ import print_function
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -85,7 +84,7 @@ def readvar(name):
pyqt = {x:readvar(y) for x, y in ( pyqt = {x:readvar(y) for x, y in (
('inc', 'QT_INSTALL_HEADERS'), ('lib', 'QT_INSTALL_LIBS') ('inc', 'QT_INSTALL_HEADERS'), ('lib', 'QT_INSTALL_LIBS')
)} )}
qt = {x:readvar(y) for x, y in {'libs':'QT_INSTALL_LIBS', 'plugins':'QT_INSTALL_PLUGINS'}.iteritems()} qt = {x:readvar(y) for x, y in {'libs':'QT_INSTALL_LIBS', 'plugins':'QT_INSTALL_PLUGINS'}.items()}
qmakespec = readvar('QMAKE_SPEC') if iswindows else None qmakespec = readvar('QMAKE_SPEC') if iswindows else None
pyqt['sip_bin'] = os.environ.get('SIP_BIN', 'sip') pyqt['sip_bin'] = os.environ.get('SIP_BIN', 'sip')

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import with_statement, print_function
from __future__ import print_function
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -13,6 +12,7 @@ from itertools import chain
is_ci = os.environ.get('CI', '').lower() == 'true' is_ci = os.environ.get('CI', '').lower() == 'true'
from setup import Command, basenames, __appname__, download_securely from setup import Command, basenames, __appname__, download_securely
from polyglot.builtins import itervalues, iteritems
def get_opts_from_parser(parser): def get_opts_from_parser(parser):
@ -114,7 +114,7 @@ class Coffee(Command): # {{{
if updated: if updated:
hashes = {} hashes = {}
with zipfile.ZipFile(dest, 'w', zipfile.ZIP_STORED) as zf: with zipfile.ZipFile(dest, 'w', zipfile.ZIP_STORED) as zf:
for raw, zi, sig in sorted(chain(updated.itervalues(), existing.itervalues()), key=lambda x: x[1].filename): for raw, zi, sig in sorted(chain(itervalues(updated), itervalues(existing)), key=lambda x: x[1].filename):
zf.writestr(zi, raw) zf.writestr(zi, raw)
hashes[zi.filename] = sig hashes[zi.filename] = sig
zf.comment = json.dumps(hashes) zf.comment = json.dumps(hashes)
@ -222,7 +222,7 @@ class Kakasi(Command): # {{{
from calibre.utils.serialize import msgpack_dumps from calibre.utils.serialize import msgpack_dumps
with open(out, 'wb') as f: with open(out, 'wb') as f:
dic = {} dic = {}
for k, v in self.records.iteritems(): for k, v in iteritems(self.records):
dic[k] = compress(msgpack_dumps(v)) dic[k] = compress(msgpack_dumps(v))
f.write(msgpack_dumps(dic)) f.write(msgpack_dumps(dic))
@ -394,8 +394,8 @@ class Resources(Command): # {{{
json.dump(function_dict, open(dest, 'wb'), indent=4) json.dump(function_dict, open(dest, 'wb'), indent=4)
self.info('\tCreating user-manual-translation-stats.json') self.info('\tCreating user-manual-translation-stats.json')
d = {} d = {}
for lc, stats in json.load(open(self.j(self.d(self.SRC), 'manual', 'locale', 'completed.json'))).iteritems(): for lc, stats in iteritems(json.load(open(self.j(self.d(self.SRC), 'manual', 'locale', 'completed.json')))):
total = sum(stats.itervalues()) total = sum(itervalues(stats))
d[lc] = stats['translated'] / float(total) d[lc] = stats['translated'] / float(total)
json.dump(d, open(self.j(self.RESOURCES, 'user-manual-translation-stats.json'), 'wb'), indent=4) json.dump(d, open(self.j(self.RESOURCES, 'user-manual-translation-stats.json'), 'wb'), indent=4)

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import with_statement, print_function
from __future__ import print_function
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -14,6 +13,7 @@ from functools import partial
from setup import Command, __appname__, __version__, require_git_master, build_cache_dir, edit_file from setup import Command, __appname__, __version__, require_git_master, build_cache_dir, edit_file
from setup.parallel_build import parallel_check_output from setup.parallel_build import parallel_check_output
from polyglot.builtins import iteritems
is_ci = os.environ.get('CI', '').lower() == 'true' is_ci = os.environ.get('CI', '').lower() == 'true'
@ -359,7 +359,7 @@ class Translations(POT): # {{{
'en_GB', 'en_CA', 'en_AU', 'si', 'ur', 'sc', 'ltg', 'nds', 'en_GB', 'en_CA', 'en_AU', 'si', 'ur', 'sc', 'ltg', 'nds',
'te', 'yi', 'fo', 'sq', 'ast', 'ml', 'ku', 'fr_CA', 'him', 'te', 'yi', 'fo', 'sq', 'ast', 'ml', 'ku', 'fr_CA', 'him',
'jv', 'ka', 'fur', 'ber', 'my', 'fil', 'hy', 'ug'} 'jv', 'ka', 'fur', 'ber', 'my', 'fil', 'hy', 'ug'}
for f, (locale, dest) in fmap.iteritems(): for f, (locale, dest) in iteritems(fmap):
iscpo = {'bn':'bn_IN', 'zh_HK':'zh_CN'}.get(locale, locale) iscpo = {'bn':'bn_IN', 'zh_HK':'zh_CN'}.get(locale, locale)
iso639 = self.j(self.TRANSLATIONS, 'iso_639', '%s.po'%iscpo) iso639 = self.j(self.TRANSLATIONS, 'iso_639', '%s.po'%iscpo)
if os.path.exists(iso639): if os.path.exists(iso639):
@ -407,7 +407,7 @@ class Translations(POT): # {{{
raw = None raw = None
po_data = data.decode('utf-8') po_data = data.decode('utf-8')
data = json.loads(msgfmt(po_data)) data = json.loads(msgfmt(po_data))
translated_entries = {k:v for k, v in data['entries'].iteritems() if v and sum(map(len, v))} translated_entries = {k:v for k, v in iteritems(data['entries']) if v and sum(map(len, v))}
data[u'entries'] = translated_entries data[u'entries'] = translated_entries
data[u'hash'] = h.hexdigest() data[u'hash'] = h.hexdigest()
cdata = b'{}' cdata = b'{}'
@ -488,7 +488,7 @@ class Translations(POT): # {{{
files.append((f, d)) files.append((f, d))
self.compile_group(files, handle_stats=handle_stats) self.compile_group(files, handle_stats=handle_stats)
for locale, translated in stats.iteritems(): for locale, translated in iteritems(stats):
if translated >= 20: if translated >= 20:
with open(os.path.join(tdir, locale + '.mo'), 'rb') as f: with open(os.path.join(tdir, locale + '.mo'), 'rb') as f:
raw = f.read() raw = f.read()
@ -542,7 +542,7 @@ class Translations(POT): # {{{
stats['untranslated'] += nums[1] stats['untranslated'] += nums[1]
self.compile_group(files, handle_stats=handle_stats) self.compile_group(files, handle_stats=handle_stats)
for locale, stats in all_stats.iteritems(): for locale, stats in iteritems(all_stats):
with open(self.j(srcbase, locale, 'stats.json'), 'wb') as f: with open(self.j(srcbase, locale, 'stats.json'), 'wb') as f:
json.dump(stats, f) json.dump(stats, f)
total = stats['translated'] + stats['untranslated'] total = stats['translated'] + stats['untranslated']
@ -621,7 +621,7 @@ class GetTranslations(Translations): # {{{
changes[slug].add(lang) changes[slug].add(lang)
if changed: if changed:
f.save() f.save()
for slug, languages in changes.iteritems(): for slug, languages in iteritems(changes):
print('Pushing fixes for languages: %s in %s' % (', '.join(languages), slug)) print('Pushing fixes for languages: %s in %s' % (', '.join(languages), slug))
self.tx('push -r calibre.%s -t -l %s' % (slug, ','.join(languages))) self.tx('push -r calibre.%s -t -l %s' % (slug, ','.join(languages)))

View File

@ -10,6 +10,7 @@ import os, subprocess, hashlib, shutil, glob, stat, sys, time, json
from subprocess import check_call from subprocess import check_call
from tempfile import NamedTemporaryFile, mkdtemp, gettempdir from tempfile import NamedTemporaryFile, mkdtemp, gettempdir
from zipfile import ZipFile from zipfile import ZipFile
from polyglot.builtins import iteritems
from polyglot.urllib import urlopen, urlencode from polyglot.urllib import urlopen, urlencode
if __name__ == '__main__': if __name__ == '__main__':
@ -237,7 +238,7 @@ class UploadInstallers(Command): # {{{
print('\nRecording dist sizes') print('\nRecording dist sizes')
args = [ args = [
'%s:%s:%s' % (__version__, fname, size) '%s:%s:%s' % (__version__, fname, size)
for fname, size in sizes.iteritems() for fname, size in iteritems(sizes)
] ]
check_call(['ssh', 'code', '/usr/local/bin/dist_sizes'] + args) check_call(['ssh', 'code', '/usr/local/bin/dist_sizes'] + args)
@ -257,7 +258,7 @@ class UploadInstallers(Command): # {{{
) )
with open(os.path.join(tdir, 'fmap'), 'wb') as fo: with open(os.path.join(tdir, 'fmap'), 'wb') as fo:
for f, desc in files.iteritems(): for f, desc in iteritems(files):
fo.write('%s: %s\n' % (f, desc)) fo.write('%s: %s\n' % (f, desc))
while True: while True:

View File

@ -23,6 +23,16 @@ if is_py3:
zip = __builtins__['zip'] zip = __builtins__['zip']
map = __builtins__['map'] map = __builtins__['map']
filter = __builtins__['filter'] filter = __builtins__['filter']
def iteritems(d):
return iter(d.items())
def itervalues(d):
return iter(d.values())
def iterkeys(d):
return iter(d)
else: else:
exec("""def reraise(tp, value, tb=None): exec("""def reraise(tp, value, tb=None):
try: try:
@ -32,3 +42,12 @@ else:
""") """)
from future_builtins import zip, map, filter # noqa from future_builtins import zip, map, filter # noqa
def iteritems(d):
return d.iteritems()
def iterkeys(d):
return d.iterkeys()
def itervalues(d):
return d.itervalues()