def resolve_mro(model, name, predicate):
 result = []
 for cls in type(model).__mro__:
  if (name in cls.__dict__):
   value = cls.__dict__[name]
   if (not predicate(value)):
    break
   result.append(value)
 return result

def resolve_mro ( model , name , predicate ) : result = [ ] for cls in type ( model ) . __mro__ : if ( name in cls . __dict__ ) : value = cls . __dict__ [ name ] if ( not predicate ( value ) ) : break result . append ( value ) return result
return the list of successively overridden values of attribute name in mro order on model that satisfy predicate .