# HG changeset patch # User Mads Kiilerich # Date 2020-01-02 23:19:36 # Node ID 6fa658082c8ebc4022ee02024025db640a561e5f # Parent bf009cb3a4701527ffb156b291828e62ec784fd3 summary: compute lang_stats consistently Visiting a /statistics with py3 would fail with: ... in statistics sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10] TypeError: '<' not supported between instances of 'dict' and 'dict' The "summary" computation didn't have that problem. And it put '?' as description for unknown extensions. And it had stable output as it also sorted on the file extension as secondary key. Just use that. diff --git a/kallithea/controllers/summary.py b/kallithea/controllers/summary.py --- a/kallithea/controllers/summary.py +++ b/kallithea/controllers/summary.py @@ -139,12 +139,10 @@ class SummaryController(BaseRepoControll if stats and stats.languages: lang_stats_d = ext_json.loads(stats.languages) - lang_stats = [(x, {"count": y, "desc": LANGUAGES_EXTENSIONS_MAP.get(x, '?')}) for x, y in lang_stats_d.items()] lang_stats.sort(key=lambda k: (-k[1]['count'], k[0])) - c.trending_languages = lang_stats[:10] else: c.trending_languages = [] @@ -188,17 +186,16 @@ class SummaryController(BaseRepoControll .scalar() c.stats_percentage = 0 if stats and stats.languages: - lang_stats_d = ext_json.loads(stats.languages) c.commit_data = ext_json.loads(stats.commit_activity) c.overview_data = ext_json.loads(stats.commit_activity_combined) - lang_stats = ((x, {"count": y, - "desc": LANGUAGES_EXTENSIONS_MAP.get(x)}) - for x, y in lang_stats_d.items()) + lang_stats_d = ext_json.loads(stats.languages) + lang_stats = [(x, {"count": y, + "desc": LANGUAGES_EXTENSIONS_MAP.get(x, '?')}) + for x, y in lang_stats_d.items()] + lang_stats.sort(key=lambda k: (-k[1]['count'], k[0])) + c.trending_languages = lang_stats[:10] - c.trending_languages = ( - sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10] - ) last_rev = stats.stat_on_revision + 1 c.repo_last_rev = c.db_repo_scm_instance.count() \ if c.db_repo_scm_instance.revisions else 0