From ad17a697bc5b93865526f32ec2f714b2a0ddd66d Mon Sep 17 00:00:00 2001 From: Victor Sergeyev Date: Wed, 18 Dec 2013 18:15:49 +0200 Subject: [PATCH] Fix filter() usage due to python 3 compability Built-in method filter() returns a list in Python 2.x [1], but it returns an iterator in Python 3.x [2]. To remove the difference (and make code more readable, also), we use list comprehension instead of filer(). [1] http://docs.python.org/2/library/functions.html#filter [2] http://docs.python.org/3/library/functions.html#filter Related to blueprint make-python3-compatible Change-Id: Ifd42403309ba3a44693e0c7c856a64b861eca3e9 --- openstack/common/config/generator.py | 6 ++---- openstack/common/eventlet_backdoor.py | 2 +- openstack/common/report/utils.py | 2 +- tests/unit/db/sqlalchemy/test_utils.py | 7 +++---- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/openstack/common/config/generator.py b/openstack/common/config/generator.py index 7f41746fa..8e01d5bcb 100644 --- a/openstack/common/config/generator.py +++ b/openstack/common/config/generator.py @@ -67,10 +67,8 @@ def generate(srcfiles): os.path.basename(filepath).split('.')[0]]) mods_by_pkg.setdefault(pkg_name, list()).append(mod_str) # NOTE(lzyeval): place top level modules before packages - pkg_names = filter(lambda x: x.endswith(PY_EXT), mods_by_pkg.keys()) - pkg_names.sort() - ext_names = filter(lambda x: x not in pkg_names, mods_by_pkg.keys()) - ext_names.sort() + pkg_names = sorted(pkg for pkg in mods_by_pkg if pkg.endswith(PY_EXT)) + ext_names = sorted(pkg for pkg in mods_by_pkg if pkg not in pkg_names) pkg_names.extend(ext_names) # opts_by_group is a mapping of group name to an options list diff --git a/openstack/common/eventlet_backdoor.py b/openstack/common/eventlet_backdoor.py index 2c62e3fbf..c98dab2dc 100644 --- a/openstack/common/eventlet_backdoor.py +++ b/openstack/common/eventlet_backdoor.py @@ -64,7 +64,7 @@ def _dont_use_this(): def _find_objects(t): - return filter(lambda o: isinstance(o, t), gc.get_objects()) + return [o for o in gc.get_objects() if isinstance(o, t)] def _print_greenthreads(): diff --git a/openstack/common/report/utils.py b/openstack/common/report/utils.py index 3cd1c50a2..fb71e36ae 100644 --- a/openstack/common/report/utils.py +++ b/openstack/common/report/utils.py @@ -43,4 +43,4 @@ def _find_objects(t): :returns: a list of objects of the given type """ - return filter(lambda o: isinstance(o, t), gc.get_objects()) + return [o for o in gc.get_objects() if isinstance(o, t)] diff --git a/tests/unit/db/sqlalchemy/test_utils.py b/tests/unit/db/sqlalchemy/test_utils.py index bebf91290..a526367a2 100644 --- a/tests/unit/db/sqlalchemy/test_utils.py +++ b/tests/unit/db/sqlalchemy/test_utils.py @@ -458,8 +458,8 @@ class TestMigrationUtils(test_migrations.BaseMigrationTestCase): meta = MetaData() meta.bind = engine test_table = Table(table_name, meta, autoload=True) - constraints = filter( - lambda c: c.name == uc_name, test_table.constraints) + constraints = [c for c in test_table.constraints + if c.name == uc_name] self.assertEqual(len(constraints), 0) self.assertEqual(len(test_table.constraints), 1) @@ -515,8 +515,7 @@ class TestMigrationUtils(test_migrations.BaseMigrationTestCase): # NOTE(boris-42): Update data about Table from DB. meta = MetaData(bind=engine) test_table = Table(table_name, meta, autoload=True) - constraints = filter( - lambda c: c.name == uc_name, test_table.constraints) + constraints = [c for c in test_table.constraints if c.name == uc_name] self.assertEqual(len(constraints), 0) self.assertEqual(len(test_table.constraints), 1) test_table.drop()