changeset 7798:5bfda9c04db5

summary: simplify sorting of language stats - avoid comparing dicts Make the ordering well defined as primarily decreasing count, secondarily extension - thus some slight changes in test output.
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 22 Jul 2019 01:18:14 +0200
parents e7ba4c0ec050
children 3009a239199d
files kallithea/controllers/summary.py kallithea/tests/functional/test_summary.py
diffstat 2 files changed, 14 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/summary.py	Mon Jul 22 04:43:45 2019 +0200
+++ b/kallithea/controllers/summary.py	Mon Jul 22 01:18:14 2019 +0200
@@ -136,13 +136,12 @@
             c.no_data = False is c.db_repo.enable_statistics
             lang_stats_d = 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 = [(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 = (
-                sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
-            )
+            c.trending_languages = lang_stats[:10]
         else:
             c.no_data = True
             c.trending_languages = []
--- a/kallithea/tests/functional/test_summary.py	Mon Jul 22 04:43:45 2019 +0200
+++ b/kallithea/tests/functional/test_summary.py	Mon Jul 22 01:18:14 2019 +0200
@@ -158,12 +158,12 @@
             '["rst", {"count": 16, "desc": ["Rst"]}], '
             '["css", {"count": 2, "desc": ["Css"]}], '
             '["sh", {"count": 2, "desc": ["Bash"]}], '
-            '["yml", {"count": 1, "desc": ["Yaml"]}], '
-            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
+            '["bat", {"count": 1, "desc": ["Batch"]}], '
+            '["cfg", {"count": 1, "desc": ["Ini"]}], '
+            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
+            '["ini", {"count": 1, "desc": ["Ini"]}], '
             '["js", {"count": 1, "desc": ["Javascript"]}], '
-            '["cfg", {"count": 1, "desc": ["Ini"]}], '
-            '["ini", {"count": 1, "desc": ["Ini"]}], '
-            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}]]'
+            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}]]',
         )
 
     def test_index_statistics(self):
@@ -191,12 +191,12 @@
             '["rst", {"count": 16, "desc": ["Rst"]}], '
             '["css", {"count": 2, "desc": ["Css"]}], '
             '["sh", {"count": 2, "desc": ["Bash"]}], '
-            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
-            '["js", {"count": 1, "desc": ["Javascript"]}], '
+            '["bat", {"count": 1, "desc": ["Batch"]}], '
             '["cfg", {"count": 1, "desc": ["Ini"]}], '
+            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
             '["ini", {"count": 1, "desc": ["Ini"]}], '
-            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
-            '["bat", {"count": 1, "desc": ["Batch"]}]]'
+            '["js", {"count": 1, "desc": ["Javascript"]}], '
+            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}]]',
         )
 
     def test_index_statistics_git(self):