def check_abstract_methods(base, subclass):
 for attrname in dir(base):
  if attrname.startswith('_'):
   continue
  attr = getattr(base, attrname)
  if is_abstract_method(attr):
   oattr = getattr(subclass, attrname)
   if is_abstract_method(oattr):
    raise Exception(('%s.%s not overridden' % (subclass.__name__, attrname)))

def check_abstract_methods ( base , subclass ) : for attrname in dir ( base ) : if attrname . startswith ( '_' ) : continue attr = getattr ( base , attrname ) if is_abstract_method ( attr ) : oattr = getattr ( subclass , attrname ) if is_abstract_method ( oattr ) : raise Exception ( ( '%s.%s not overridden' % ( subclass . __name__ , attrname ) ) )
raises assertionerror if subclass does not override a method on base that is marked as an abstract method .