@ -2573,6 +2573,7 @@ class Britney:
# loop on them
# loop on them
candidates = [ ]
candidates = [ ]
mincands = [ ]
for e in excuses :
for e in excuses :
excuse = excuses [ e ]
excuse = excuses [ e ]
if e in self . sources [ ' testing ' ] and self . sources [ ' testing ' ] [ e ] [ VERSION ] == excuse . ver [ 1 ] :
if e in self . sources [ ' testing ' ] and self . sources [ ' testing ' ] [ e ] [ VERSION ] == excuse . ver [ 1 ] :
@ -2583,29 +2584,34 @@ class Britney:
candidates . append ( hint . items ( ) )
candidates . append ( hint . items ( ) )
else :
else :
items = [ ( e , excuse . ver [ 1 ] ) ]
items = [ ( e , excuse . ver [ 1 ] ) ]
looped = False
for item , ver in items :
for item , ver in items :
# excuses which depend on "item" or are depended on by it
# excuses which depend on "item" or are depended on by it
items . extend ( [ ( x , excuses [ x ] . ver [ 1 ] ) for x in excuses if \
items . extend ( [ ( x , excuses [ x ] . ver [ 1 ] ) for x in excuses if \
( item in excuses [ x ] . deps or x in excuses [ item ] . deps ) \
( item in excuses [ x ] . deps or x in excuses [ item ] . deps ) \
and ( x , excuses [ x ] . ver [ 1 ] ) not in items ] )
and ( x , excuses [ x ] . ver [ 1 ] ) not in items ] )
if not looped and len ( items ) > 1 :
mincands . append ( items [ : ] )
looped = True
if len ( items ) > 1 :
if len ( items ) > 1 :
candidates . append ( items )
candidates . append ( items )
to_skip = [ ]
for l in [ candidates , mincands ] :
for i in range ( len ( candidates ) ) :
to_skip = [ ]
for j in range ( i + 1 , len ( candidates ) ) :
for i in range ( len ( l ) ) :
if i in to_skip or j in to_skip :
for j in range ( i + 1 , len ( l ) ) :
# we already know this list isn't interesting
if i in to_skip or j in to_skip :
continue
# we already know this list isn't interesting
elif frozenset ( candidates [ i ] ) > = frozenset ( candidates [ j ] ) :
continue
# j is a subset of i; ignore it
elif frozenset ( l [ i ] ) > = frozenset ( l [ j ] ) :
to_skip . append ( j )
# j is a subset of i; ignore it
elif frozenset ( candidates [ i ] ) < = frozenset ( candidates [ j ] ) :
to_skip . append ( j )
# i is a subset of j; ignore it
elif frozenset ( l [ i ] ) < = frozenset ( l [ j ] ) :
to_skip . append ( i )
# i is a subset of j; ignore it
for i in range ( len ( candidates ) ) :
to_skip . append ( i )
if i not in to_skip :
for i in range ( len ( l ) ) :
self . do_hint ( " easy " , " autohinter " , [ HintItem ( " %s / %s " % ( x [ 0 ] , x [ 1 ] ) ) for x in candidates [ i ] ] )
if i not in to_skip :
self . do_hint ( " easy " , " autohinter " , [ HintItem ( " %s / %s " % ( x [ 0 ] , x [ 1 ] ) ) for x in l [ i ] ] )
def old_libraries ( self ) :
def old_libraries ( self ) :
""" Detect old libraries left in testing for smooth transitions
""" Detect old libraries left in testing for smooth transitions