From 0c198b85a3292cb7f2f2cd1b2d6dc6f04a1ed831 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Tue, 14 Aug 2012 14:22:08 +0200 Subject: [PATCH] [py3] Replace filter/lambda by list comprehensions This is more idiomatic and avoids returning a list on Python 2 and an iterator on Python 3. --- django/core/management/commands/syncdb.py | 2 +- django/db/models/options.py | 2 +- django/db/models/query.py | 2 +- django/utils/autoreload.py | 3 ++- django/utils/ipv6.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/django/core/management/commands/syncdb.py b/django/core/management/commands/syncdb.py index cf26e754ae..cceec07be8 100644 --- a/django/core/management/commands/syncdb.py +++ b/django/core/management/commands/syncdb.py @@ -75,7 +75,7 @@ class Command(NoArgsCommand): (opts.auto_created and converter(opts.auto_created._meta.db_table) in tables)) manifest = SortedDict( - (app_name, filter(model_installed, model_list)) + (app_name, list(filter(model_installed, model_list))) for app_name, model_list in all_models ) diff --git a/django/db/models/options.py b/django/db/models/options.py index 014b8bf359..6814ce27ff 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -387,7 +387,7 @@ class Options(object): predicates.append(lambda k, v: not k.field.rel.is_hidden()) cache = (self._related_objects_proxy_cache if include_proxy_eq else self._related_objects_cache) - return filter(lambda t: all([p(*t) for p in predicates]), cache.items()) + return [t for t in cache.items() if all(p(*t) for p in predicates)] def _fill_related_objects_cache(self): cache = SortedDict() diff --git a/django/db/models/query.py b/django/db/models/query.py index 3cf794924c..090ef0b7be 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1107,7 +1107,7 @@ class ValuesListQuerySet(ValuesQuerySet): # If a field list has been specified, use it. Otherwise, use the # full list of fields, including extras and aggregates. if self._fields: - fields = list(self._fields) + filter(lambda f: f not in self._fields, aggregate_names) + fields = list(self._fields) + [f for f in aggregate_names if f not in self._fields] else: fields = names diff --git a/django/utils/autoreload.py b/django/utils/autoreload.py index b6c055383c..9032cd024d 100644 --- a/django/utils/autoreload.py +++ b/django/utils/autoreload.py @@ -54,7 +54,8 @@ _win = (sys.platform == "win32") def code_changed(): global _mtimes, _win - for filename in filter(lambda v: v, map(lambda m: getattr(m, "__file__", None), sys.modules.values())): + filenames = [getattr(m, "__file__", None) for m in sys.modules.values()] + for filename in filter(None, filenames): if filename.endswith(".pyc") or filename.endswith(".pyo"): filename = filename[:-1] if filename.endswith("$py.class"): diff --git a/django/utils/ipv6.py b/django/utils/ipv6.py index 2ccae8cdd0..7624bb9c76 100644 --- a/django/utils/ipv6.py +++ b/django/utils/ipv6.py @@ -263,6 +263,6 @@ def _is_shorthand_ip(ip_str): """ if ip_str.count('::') == 1: return True - if filter(lambda x: len(x) < 4, ip_str.split(':')): + if any(len(x) < 4 for x in ip_str.split(':')): return True return False