changeset 6515:884d2c246570

cleanup: use list comprehensions It's often the same number of lines, but avoids introducing a needless "result" variable, and makes the item expression stand out more clearly. It's also a tiny bit faster, but the readability gains is what matters.
author Søren Løvborg <sorenl@unity3d.com>
date Mon, 20 Feb 2017 19:21:34 +0100
parents 25623c3c63aa
children eea19c23b741
files kallithea/controllers/api/api.py kallithea/controllers/compare.py kallithea/model/db.py kallithea/tests/api/api_base.py
diffstat 4 files changed, 50 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/api/api.py	Wed Feb 22 21:20:39 2017 +0100
+++ b/kallithea/controllers/api/api.py	Mon Feb 20 19:21:34 2017 +0100
@@ -584,13 +584,12 @@
             error:  null
         """
 
-        result = []
-        users_list = User.query().order_by(User.username) \
-            .filter(User.username != User.DEFAULT_USER) \
-            .all()
-        for user in users_list:
-            result.append(user.get_api_data())
-        return result
+        return [
+            user.get_api_data()
+            for user in User.query()
+                .order_by(User.username)
+                .filter(User.username != User.DEFAULT_USER)
+        ]
 
     @HasPermissionAnyDecorator('hg.admin')
     def create_user(self, username, email, password=Optional(''),
@@ -841,10 +840,10 @@
             error : null
         """
 
-        result = []
-        for user_group in UserGroupList(UserGroup.query().all(), perm_level='read'):
-            result.append(user_group.get_api_data())
-        return result
+        return [
+            user_group.get_api_data()
+            for user_group in UserGroupList(UserGroup.query().all(), perm_level='read')
+        ]
 
     @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
     def create_user_group(self, group_name, description=Optional(''),
@@ -1187,7 +1186,6 @@
                 raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 
         members = []
-        followers = []
         for user in repo.repo_to_perm:
             perm = user.permission.permission_name
             user = user.user
@@ -1208,8 +1206,10 @@
             }
             members.append(user_group_data)
 
-        for user in repo.followers:
-            followers.append(user.user.get_api_data())
+        followers = [
+            uf.user.get_api_data()
+            for uf in repo.followers
+        ]
 
         data = repo.get_api_data()
         data['members'] = members
@@ -1247,15 +1247,15 @@
                     ]
             error:  null
         """
-        result = []
         if not HasPermissionAny('hg.admin')():
             repos = RepoModel().get_all_user_repos(user=request.authuser.user_id)
         else:
             repos = Repository.query()
 
-        for repo in repos:
-            result.append(repo.get_api_data())
-        return result
+        return [
+            repo.get_api_data()
+            for repo in repos
+        ]
 
     # permission check inside
     def get_repo_nodes(self, repoid, revision, root_path,
@@ -1910,10 +1910,10 @@
         Returns all repository groups
 
         """
-        result = []
-        for repo_group in RepoGroup.query():
-            result.append(repo_group.get_api_data())
-        return result
+        return [
+            repo_group.get_api_data()
+            for repo_group in RepoGroup.query()
+        ]
 
     @HasPermissionAnyDecorator('hg.admin')
     def create_repo_group(self, group_name, description=Optional(''),
@@ -2352,14 +2352,13 @@
         else:
             user_id = get_user_or_error(userid).user_id
 
-        gists = []
-        _gists = Gist().query() \
-            .filter(or_(Gist.gist_expires == -1, Gist.gist_expires >= time.time())) \
-            .filter(Gist.owner_id == user_id) \
-            .order_by(Gist.created_on.desc())
-        for gist in _gists:
-            gists.append(gist.get_api_data())
-        return gists
+        return [
+            gist.get_api_data()
+            for gist in Gist().query()
+                .filter(or_(Gist.gist_expires == -1, Gist.gist_expires >= time.time()))
+                .filter(Gist.owner_id == user_id)
+                .order_by(Gist.created_on.desc())
+        ]
 
     def create_gist(self, files, owner=Optional(OAttr('apiuser')),
                     gist_type=Optional(Gist.GIST_PUBLIC), lifetime=Optional(-1),
--- a/kallithea/controllers/compare.py	Wed Feb 22 21:20:39 2017 +0100
+++ b/kallithea/controllers/compare.py	Mon Feb 20 19:21:34 2017 +0100
@@ -134,11 +134,11 @@
                 gitrepo_remote = Repo(other_repo.path)
                 SubprocessGitClient(thin_packs=False).fetch(safe_str(org_repo.path), gitrepo_remote)
 
-                revs = []
-                for x in gitrepo_remote.get_walker(include=[other_rev],
-                                                   exclude=[org_rev]):
-                    revs.append(x.commit.id)
-
+                revs = [
+                    x.commit.id
+                    for x in gitrepo_remote.get_walker(include=[other_rev],
+                                                       exclude=[org_rev])
+                ]
                 other_changesets = [other_repo.get_changeset(rev) for rev in reversed(revs)]
                 if other_changesets:
                     ancestors = [other_changesets[0].parents[0].raw_id]
--- a/kallithea/model/db.py	Wed Feb 22 21:20:39 2017 +0100
+++ b/kallithea/model/db.py	Mon Feb 20 19:21:34 2017 +0100
@@ -100,10 +100,10 @@
         """return list with keys and values tuples corresponding
         to this model data """
 
-        l = []
-        for k in self._get_keys():
-            l.append((k, getattr(self, k),))
-        return l
+        return [
+            (k, getattr(self, k))
+            for k in self._get_keys()
+        ]
 
     def populate_obj(self, populate_dict):
         """populate model with data from given populate_dict"""
@@ -915,11 +915,10 @@
             owner=user_group.owner.username,
         )
         if with_members:
-            members = []
-            for user in user_group.members:
-                user = user.user
-                members.append(user.get_api_data())
-            data['members'] = members
+            data['members'] = [
+                ugm.user.get_api_data()
+                for ugm in user_group.members
+            ]
 
         return data
 
--- a/kallithea/tests/api/api_base.py	Wed Feb 22 21:20:39 2017 +0100
+++ b/kallithea/tests/api/api_base.py	Mon Feb 20 19:21:34 2017 +0100
@@ -877,24 +877,22 @@
         id_, params = _build_data(self.apikey, 'get_repos')
         response = api_call(self, params)
 
-        result = []
-        for repo in Repository.query():
-            result.append(repo.get_api_data())
-        ret = jsonify(result)
+        expected = jsonify([
+            repo.get_api_data()
+            for repo in Repository.query()
+        ])
 
-        expected = ret
         self._compare_ok(id_, expected, given=response.body)
 
     def test_api_get_repos_non_admin(self):
         id_, params = _build_data(self.apikey_regular, 'get_repos')
         response = api_call(self, params)
 
-        result = []
-        for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN):
-            result.append(repo.get_api_data())
-        ret = jsonify(result)
+        expected = jsonify([
+            repo.get_api_data()
+            for repo in RepoModel().get_all_user_repos(self.TEST_USER_LOGIN)
+        ])
 
-        expected = ret
         self._compare_ok(id_, expected, given=response.body)
 
     @parametrize('name,ret_type', [