def conditional(sentence, predictive=True, **kwargs):
 S = sentence
 if (not (hasattr(S, 'words') and hasattr(S, 'parse_token'))):
  raise TypeError(('%s object is not a parsed Sentence' % repr(S.__class__.__name__)))
 if question(S):
  return False
 i = find((lambda w: (s(w) == 'were')), S)
 i = ((i and i.index) or 0)
 if ((i > 0) and ((s(S[(i - 1)]) in ('i', 'it', 'he', 'she')) or (S[(i - 1)].type == 'NN'))):
  return False
 for (i, w) in enumerate(S):
  if (w.type == 'MD'):
   if ((s(w) == 'ought') and (i < len(S)) and (s(S[(i + 1)]) == 'to')):
    return True
   if (s(w) in ('would', 'should', "'d", 'could', 'might')):
    return True
   if ((s(w) in ('will', 'shall', "'ll")) and (i > 0) and (s(S[(i - 1)]) == 'you') and (not verbs(S, 0, i))):
    return False
   if ((s(w) in ('will', 'shall', "'ll")) and predictive):
    return True
   if (s(w) in ('will', 'shall', "'ll", 'can', 'may')):
    r = s(S).rstrip(' .!')
    for cc in ('if', 'when', 'once', 'as soon as', 'assuming', 'provided that', 'given that'):
     if ((cc + ' ') in r):
      return True
 return False

def conditional ( sentence , predictive = True , ** kwargs ) : S = sentence if ( not ( hasattr ( S , 'words' ) and hasattr ( S , 'parse_token' ) ) ) : raise TypeError ( ( '%s object is not a parsed Sentence' % repr ( S . __class__ . __name__ ) ) ) if question ( S ) : return False i = find ( ( lambda w : ( s ( w ) == 'were' ) ) , S ) i = ( ( i and i . index ) or 0 ) if ( ( i > 0 ) and ( ( s ( S [ ( i - 1 ) ] ) in ( 'i' , 'it' , 'he' , 'she' ) ) or ( S [ ( i - 1 ) ] . type == 'NN' ) ) ) : return False for ( i , w ) in enumerate ( S ) : if ( w . type == 'MD' ) : if ( ( s ( w ) == 'ought' ) and ( i < len ( S ) ) and ( s ( S [ ( i + 1 ) ] ) == 'to' ) ) : return True if ( s ( w ) in ( 'would' , 'should' , "'d" , 'could' , 'might' ) ) : return True if ( ( s ( w ) in ( 'will' , 'shall' , "'ll" ) ) and ( i > 0 ) and ( s ( S [ ( i - 1 ) ] ) == 'you' ) and ( not verbs ( S , 0 , i ) ) ) : return False if ( ( s ( w ) in ( 'will' , 'shall' , "'ll" ) ) and predictive ) : return True if ( s ( w ) in ( 'will' , 'shall' , "'ll" , 'can' , 'may' ) ) : r = s ( S ) . rstrip ( ' .!' ) for cc in ( 'if' , 'when' , 'once' , 'as soon as' , 'assuming' , 'provided that' , 'given that' ) : if ( ( cc + ' ' ) in r ) : return True return False
decorator for a conditionally applied decorator .