Title: [111213] trunk/Tools
- Revision
- 111213
- Author
- [email protected]
- Date
- 2012-03-19 12:08:01 -0700 (Mon, 19 Mar 2012)
Log Message
test-webkitpy is failing on SL/Python 2.6.1
https://bugs.webkit.org/show_bug.cgi?id=81533
Reviewed by Ojan Vafai.
It appears that itertools.combinations() is buggy in 2.6.1; this
backports the implementation from 2.7.
* Scripts/webkitpy/layout_tests/models/test_configuration.py:
(TestConfigurationConverter.collapse_macros):
(TestConfigurationConverter):
(TestConfigurationConverter.combinations):
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (111212 => 111213)
--- trunk/Tools/ChangeLog 2012-03-19 19:02:27 UTC (rev 111212)
+++ trunk/Tools/ChangeLog 2012-03-19 19:08:01 UTC (rev 111213)
@@ -1,3 +1,18 @@
+2012-03-19 Dirk Pranke <[email protected]>
+
+ test-webkitpy is failing on SL/Python 2.6.1
+ https://bugs.webkit.org/show_bug.cgi?id=81533
+
+ Reviewed by Ojan Vafai.
+
+ It appears that itertools.combinations() is buggy in 2.6.1; this
+ backports the implementation from 2.7.
+
+ * Scripts/webkitpy/layout_tests/models/test_configuration.py:
+ (TestConfigurationConverter.collapse_macros):
+ (TestConfigurationConverter):
+ (TestConfigurationConverter.combinations):
+
2012-03-19 David Michael Barr <[email protected]>
Optimize the cleanup sequence in the start-queue.sh script
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py (111212 => 111213)
--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py 2012-03-19 19:02:27 UTC (rev 111212)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py 2012-03-19 19:08:01 UTC (rev 111213)
@@ -169,7 +169,7 @@
if len(macro) == 1:
continue
- for combination in itertools.combinations(specifiers_list, len(macro)):
+ for combination in cls.combinations(specifiers_list, len(macro)):
if cls.symmetric_difference(combination) == set(macro):
for item in combination:
specifiers_list.remove(item)
@@ -193,6 +193,30 @@
for macro_specifier, macro in macros_dict.items():
collapse_individual_specifier_set(macro_specifier, macro)
+ # FIXME: itertools.combinations in buggy in Python 2.6.1 (the version that ships on SL).
+ # It seems to be okay in 2.6.5 or later; until then, this is the implementation given
+ # in http://docs.python.org/library/itertools.html (from 2.7).
+ @staticmethod
+ def combinations(iterable, r):
+ # combinations('ABCD', 2) --> AB AC AD BC BD CD
+ # combinations(range(4), 3) --> 012 013 023 123
+ 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)
+
@classmethod
def intersect_combination(cls, combination):
return reduce(set.intersection, [set(specifiers) for specifiers in combination])
@@ -224,7 +248,7 @@
def try_collapsing(size, collapsing_sets):
if len(specifiers_list) < size:
return False
- for combination in itertools.combinations(specifiers_list, size):
+ for combination in self.combinations(specifiers_list, size):
if self.symmetric_difference(combination) in collapsing_sets:
for item in combination:
specifiers_list.remove(item)
@@ -241,7 +265,7 @@
def try_abbreviating(collapsing_sets):
if len(specifiers_list) < 2:
return False
- for combination in itertools.combinations(specifiers_list, 2):
+ for combination in self.combinations(specifiers_list, 2):
for collapsing_set in collapsing_sets:
diff = self.symmetric_difference(combination)
if diff <= collapsing_set:
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes