test_configuration.py shouldn't re-implement itertools
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2012 00:32:08 +0000 (00:32 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Feb 2012 00:32:08 +0000 (00:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=78178

Reviewed by Eric Seidel.

* Scripts/webkitpy/layout_tests/models/test_configuration.py:
(TestConfigurationConverter.to_specifiers_list):
(TestConfigurationConverter.to_specifiers_list.try_collapsing):
(TestConfigurationConverter.to_specifiers_list.try_abbreviating):
(TestConfigurationConverter):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107153 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py

index d0f2672..65ce677 100644 (file)
@@ -1,5 +1,18 @@
 2012-02-08  Adam Barth  <abarth@webkit.org>
 
+        test_configuration.py shouldn't re-implement itertools
+        https://bugs.webkit.org/show_bug.cgi?id=78178
+
+        Reviewed by Eric Seidel.
+
+        * Scripts/webkitpy/layout_tests/models/test_configuration.py:
+        (TestConfigurationConverter.to_specifiers_list):
+        (TestConfigurationConverter.to_specifiers_list.try_collapsing):
+        (TestConfigurationConverter.to_specifiers_list.try_abbreviating):
+        (TestConfigurationConverter):
+
+2012-02-08  Adam Barth  <abarth@webkit.org>
+
         webkitpy should reply upon the multiprocessing package existing
         https://bugs.webkit.org/show_bug.cgi?id=78176
 
index 875ba04..4375e09 100644 (file)
@@ -25,8 +25,8 @@
 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Representation of a layout test configuration."""
 
+import itertools
 
 class TestConfiguration(object):
     def __init__(self, version, architecture, build_type, graphics_type):
@@ -189,26 +189,6 @@ class TestConfigurationConverter(object):
                     values -= junk_specifier_set
             specifiers_list.append(frozenset(values))
 
-        # FIXME: Replace with iteritools.combinations when we obsolete Python 2.5.
-        def combinations(iterable, r):
-            """This function is borrowed verbatim from http://docs.python.org/library/itertools.html#itertools.combinations."""
-            pool = tuple(iterable)
-            n = len(pool)
-            if r > n:
-                return
-            indices = range(r)
-            yield tuple(pool[i] for i in indices)
-            while True:
-                for i in reversed(range(r)):
-                    if indices[i] != i + n - r:
-                        break
-                else:
-                    return
-                indices[i] += 1
-                for j in range(i + 1, r):
-                    indices[j] = indices[j - 1] + 1
-                yield tuple(pool[i] for i in indices)
-
         def intersect_combination(combination):
             return reduce(set.intersection, [set(specifiers) for specifiers in combination])
 
@@ -218,7 +198,7 @@ class TestConfigurationConverter(object):
         def try_collapsing(size, collapsing_sets):
             if len(specifiers_list) < size:
                 return False
-            for combination in combinations(specifiers_list, size):
+            for combination in itertools.combinations(specifiers_list, size):
                 if symmetric_difference(combination) in collapsing_sets:
                     for item in combination:
                         specifiers_list.remove(item)
@@ -235,7 +215,7 @@ class TestConfigurationConverter(object):
         def try_abbreviating():
             if len(specifiers_list) < 2:
                 return False
-            for combination in combinations(specifiers_list, 2):
+            for combination in itertools.combinations(specifiers_list, 2):
                 for collapsing_set in collapsing_sets:
                     diff = symmetric_difference(combination)
                     if diff <= collapsing_set: