<s> """<STR_LIT>""" <EOL> from __future__ import print_function <EOL> from __future__ import unicode_literals <EOL> from . import ast <EOL> from . import metrics <EOL> __author__ = '<STR_LIT>' <EOL> def _find_warnings ( filename , source , ast_list ) : <EOL> count = <NUM_LIT:0> <EOL> for node in ast_list : <EOL> if isinstance ( node , ast . Class ) and node . body : <EOL> class_node = node <EOL> has_virtuals = False <EOL> for node in node . body : <EOL> if isinstance ( node , ast . Class ) and node . body : <EOL> _find_warnings ( filename , source , [ node ] ) <EOL> elif ( isinstance ( node , ast . Function ) and <EOL> node . modifiers & ast . FUNCTION_VIRTUAL ) : <EOL> has_virtuals = True <EOL> if node . modifiers & ast . FUNCTION_DTOR : <EOL> break <EOL> else : <EOL> if has_virtuals and not class_node . bases : <EOL> lines = metrics . Metrics ( source ) <EOL> print ( <EOL> '<STR_LIT>' % ( <EOL> filename , <EOL> lines . get_line_number ( <EOL> class_node . start ) ) , <EOL> end = '<STR_LIT:U+0020>' ) <EOL> print ( "<STR_LIT>" <EOL> '<STR_LIT>' . format ( class_node . name ) ) <EOL> count += <NUM_LIT:1> <EOL> return count <EOL> def run ( filename , source , entire_ast , include_paths , quiet ) : <EOL> return _find_warnings ( filename , source , entire_ast ) </s>
