⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 107153 in webkit


Ignore:
Timestamp:
Feb 8, 2012, 4:32:08 PM (15 years ago)
Author:
abarth@webkit.org
Message:

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):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r107151 r107153  
     12012-02-08  Adam Barth  <abarth@webkit.org>
     2
     3        test_configuration.py shouldn't re-implement itertools
     4        https://bugs.webkit.org/show_bug.cgi?id=78178
     5
     6        Reviewed by Eric Seidel.
     7
     8        * Scripts/webkitpy/layout_tests/models/test_configuration.py:
     9        (TestConfigurationConverter.to_specifiers_list):
     10        (TestConfigurationConverter.to_specifiers_list.try_collapsing):
     11        (TestConfigurationConverter.to_specifiers_list.try_abbreviating):
     12        (TestConfigurationConverter):
     13
    1142012-02-08  Adam Barth  <abarth@webkit.org>
    215
  • trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py

    r103289 r107153  
    2626# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    2727# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    28 """Representation of a layout test configuration."""
    29 
     28
     29import itertools
    3030
    3131class TestConfiguration(object):
     
    190190            specifiers_list.append(frozenset(values))
    191191
    192         # FIXME: Replace with iteritools.combinations when we obsolete Python 2.5.
    193         def combinations(iterable, r):
    194             """This function is borrowed verbatim from http://docs.python.org/library/itertools.html#itertools.combinations."""
    195             pool = tuple(iterable)
    196             n = len(pool)
    197             if r > n:
    198                 return
    199             indices = range(r)
    200             yield tuple(pool[i] for i in indices)
    201             while True:
    202                 for i in reversed(range(r)):
    203                     if indices[i] != i + n - r:
    204                         break
    205                 else:
    206                     return
    207                 indices[i] += 1
    208                 for j in range(i + 1, r):
    209                     indices[j] = indices[j - 1] + 1
    210                 yield tuple(pool[i] for i in indices)
    211 
    212192        def intersect_combination(combination):
    213193            return reduce(set.intersection, [set(specifiers) for specifiers in combination])
     
    219199            if len(specifiers_list) < size:
    220200                return False
    221             for combination in combinations(specifiers_list, size):
     201            for combination in itertools.combinations(specifiers_list, size):
    222202                if symmetric_difference(combination) in collapsing_sets:
    223203                    for item in combination:
     
    236216            if len(specifiers_list) < 2:
    237217                return False
    238             for combination in combinations(specifiers_list, 2):
     218            for combination in itertools.combinations(specifiers_list, 2):
    239219                for collapsing_set in collapsing_sets:
    240220                    diff = symmetric_difference(combination)
Note: See TracChangeset for help on using the changeset viewer.