<s> """<STR_LIT>""" <EOL> import os <EOL> import time <EOL> import re <EOL> import environment_vim as environment <EOL> import tools <EOL> import async_subprocess . async_subprocess as async_subprocess <EOL> class project : <EOL> """<STR_LIT>""" <EOL> _config_file = None <EOL> """<STR_LIT>""" <EOL> _target_name = None <EOL> """<STR_LIT>""" <EOL> _command_output = None <EOL> """<STR_LIT>""" <EOL> _is_compile = None <EOL> """<STR_LIT>""" <EOL> _has_executable = None <EOL> """<STR_LIT>""" <EOL> _has_error = None <EOL> """<STR_LIT>""" <EOL> _has_warning = None <EOL> """<STR_LIT>""" <EOL> _error_warning_regex = None <EOL> """<STR_LIT>""" <EOL> _error_list = None <EOL> """<STR_LIT>""" <EOL> _warning_list = None <EOL> """<STR_LIT>""" <EOL> _tools_regex = None <EOL> def get_tools_regex ( self , a_name ) : <EOL> return self . _tools_regex [ a_name ] <EOL> def command_output ( self ) : <EOL> """<STR_LIT>""" <EOL> result = "<STR_LIT>" <EOL> if self . _command_output : <EOL> result = self . _command_output <EOL> return result <EOL> def show_command_output ( self , a_window ) : <EOL> """<STR_LIT>""" <EOL> a_window . set_text ( self . _command_output ) <EOL> def _ec_path ( self ) : <EOL> """<STR_LIT>""" <EOL> result = environment . get_global_variable ( "<STR_LIT>" ) <EOL> if result : <EOL> return result <EOL> else : <EOL> return "<STR_LIT>" <EOL> def config_file ( self ) : <EOL> """<STR_LIT>""" <EOL> return os . path . expanduser ( self . _config_file ) <EOL> def config_file_path ( self ) : <EOL> """<STR_LIT>""" <EOL> return os . path . dirname ( self . _config_file ) <EOL> def set_config_file ( self , a_config_file ) : <EOL> """<STR_LIT>""" <EOL> config_file_var = os . path . expandvars ( a_config_file ) <EOL> config_file_user = os . path . expanduser ( config_file_var ) <EOL> config_file_norm = os . path . normpath ( config_file_user ) <EOL> self . _config_file = config_file_norm <EOL> def target_name ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _target_name <EOL> def set_target_name ( self , a_target_name ) : <EOL> """<STR_LIT>""" <EOL> self . _target_name = a_target_name <EOL> def is_target_provided ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . target_name ( ) != "<STR_LIT>" <EOL> def is_compile ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _is_compile <EOL> def has_executable ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _has_executable <EOL> def has_error ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _has_error <EOL> def has_warning ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _has_warning <EOL> def _init_error_warning_regex ( self ) : <EOL> l_regex = { "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" , <EOL> re . MULTILINE | re . DOTALL <EOL> ) } <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , <EOL> re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( <EOL> "<STR_LIT>" , <EOL> re . MULTILINE | re . DOTALL <EOL> ) <EOL> l_regex [ "<STR_LIT:class>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( "<STR_LIT>" , re . MULTILINE ) <EOL> l_regex [ "<STR_LIT>" ] = re . compile ( <EOL> "<STR_LIT>" , <EOL> re . MULTILINE ) <EOL> self . _error_warning_regex = l_regex <EOL> def _init_tools_regex ( self ) : <EOL> """<STR_LIT>""" <EOL> self . _tools_regex = { <EOL> "<STR_LIT>" : re . compile ( "<STR_LIT>" , re . MULTILINE ) , <EOL> "<STR_LIT:string>" : re . compile ( <EOL> '<STR_LIT>' , <EOL> re . MULTILINE <EOL> ) , <EOL> "<STR_LIT:class>" : re . compile ( "<STR_LIT>" , re . MULTILINE ) , <EOL> "<STR_LIT>" : re . compile ( "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" + <EOL> "<STR_LIT>" ) , <EOL> "<STR_LIT>" : re . compile ( <EOL> "<STR_LIT>" , <EOL> re . MULTILINE ) , <EOL> "<STR_LIT>" : re . compile ( "<STR_LIT>" ) <EOL> } <EOL> def __init__ ( self , a_config_file , a_target_name = None ) : <EOL> """<STR_LIT>""" <EOL> self . set_config_file ( a_config_file ) <EOL> self . set_target_name ( a_target_name ) <EOL> self . _is_compile = True <EOL> self . _has_executable = True <EOL> self . _error_list = [ ] <EOL> self . _warning_list = [ ] <EOL> self . _init_error_warning_regex ( ) <EOL> self . _init_tools_regex ( ) <EOL> def _execute_compiler ( self , a_input , a_params , a_window = None , <EOL> a_get_stdout = True , a_get_stderr = True ) : <EOL> """<STR_LIT>""" <EOL> l_params = [ self . _ec_path ( ) , "<STR_LIT>" , "<STR_LIT>" , <EOL> "<STR_LIT>" , self . config_file_path ( ) , <EOL> "<STR_LIT>" , self . config_file ( ) ] <EOL> if self . target_name ( ) : <EOL> l_params . extend ( [ "<STR_LIT>" , self . target_name ( ) ] ) <EOL> l_params . extend ( a_params ) <EOL> l_process = async_subprocess . AsyncPopen ( l_params , <EOL> stdin = async_subprocess . PIPE , <EOL> stdout = async_subprocess . PIPE , <EOL> stderr = async_subprocess . PIPE ) <EOL> l_data = "<STR_LIT>" <EOL> if a_input and l_process . poll ( ) is None : <EOL> l_data += self . _get_new_process_output ( l_process , a_input , <EOL> a_get_stdout , a_get_stderr ) <EOL> while l_process . poll ( ) is None : <EOL> l_data += self . _get_new_process_output ( l_process , None , <EOL> a_get_stdout , a_get_stderr ) <EOL> if a_window : <EOL> a_window . set_text ( l_data ) <EOL> time . sleep ( <NUM_LIT:0.1> ) <EOL> l_data += self . _get_new_process_output ( l_process , "<STR_LIT>" , <EOL> a_get_stdout , a_get_stderr ) <EOL> if a_window : <EOL> a_window . set_text ( l_data ) <EOL> self . _command_output = l_data <EOL> def _execute_compilation ( self , a_params , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( None , a_params , a_window ) <EOL> self . _manage_output ( self . _command_output ) <EOL> def _get_new_process_output ( self , a_process , a_input = None , <EOL> a_get_stdout = True , a_get_stderr = True ) : <EOL> """<STR_LIT>""" <EOL> ( l_stdout , l_stderr ) = a_process . communicate ( a_input ) <EOL> l_data = "<STR_LIT>" <EOL> if a_get_stdout and l_stdout : <EOL> l_data += l_stdout <EOL> if a_get_stderr and l_stderr : <EOL> l_data += l_stderr <EOL> return l_data <EOL> def _manage_output ( self , a_data ) : <EOL> """<STR_LIT>""" <EOL> if "<STR_LIT>" in a_data : <EOL> self . _is_compile = True <EOL> if "<STR_LIT>" in a_data : <EOL> self . _has_executable = True <EOL> self . _has_error = "<STR_LIT>" in a_data or "<STR_LIT>" in a_data <EOL> self . _has_warning = "<STR_LIT>" in a_data or "<STR_LIT>" in a_data <EOL> if self . has_error ( ) or self . has_warning ( ) : <EOL> self . _extract_errors_and_warnings ( a_data ) <EOL> def _extract_errors_and_warnings ( self , a_text ) : <EOL> """<STR_LIT>""" <EOL> self . _error_list = [ ] <EOL> self . _warning_list = [ ] <EOL> for l_item in self . _error_warning_regex [ "<STR_LIT>" ] . findall ( a_text ) : <EOL> if "<STR_LIT>" in l_item : <EOL> self . _manage_an_error_or_warning ( l_item , self . _error_list , <EOL> "<STR_LIT:error>" ) <EOL> if "<STR_LIT>" in l_item : <EOL> self . _manage_an_error_or_warning ( l_item , self . _warning_list , <EOL> "<STR_LIT>" ) <EOL> if "<STR_LIT>" in l_item : <EOL> self . _manage_syntax_error ( l_item , self . _error_list ) <EOL> def _manage_syntax_error ( self , a_text , a_list ) : <EOL> l_result = { "<STR_LIT>" : a_text } <EOL> l_match_list = self . _error_warning_regex [ "<STR_LIT>" ] . findall ( a_text ) <EOL> if len ( l_match_list ) > <NUM_LIT:0> : <EOL> l_result [ "<STR_LIT:code>" ] = "<STR_LIT>" <EOL> l_result [ "<STR_LIT>" ] = l_match_list [ <NUM_LIT:0> ] [ <NUM_LIT:0> ] <EOL> l_result [ "<STR_LIT>" ] = "<STR_LIT>" <EOL> l_result [ "<STR_LIT:class>" ] = l_match_list [ <NUM_LIT:0> ] [ <NUM_LIT:2> ] <EOL> l_result [ "<STR_LIT>" ] = "<STR_LIT>" <EOL> l_result [ "<STR_LIT>" ] = l_match_list [ <NUM_LIT:0> ] [ <NUM_LIT:1> ] <EOL> a_list . append ( l_result ) <EOL> def _manage_an_error_or_warning ( self , a_text , a_list , a_mode ) : <EOL> """<STR_LIT>""" <EOL> l_result = { "<STR_LIT>" : a_text } <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , "<STR_LIT:code>" , <EOL> a_mode ) <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , "<STR_LIT>" , <EOL> a_mode ) <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , <EOL> "<STR_LIT>" ) <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , "<STR_LIT:class>" ) <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , "<STR_LIT>" ) <EOL> self . _manage_an_error_or_warning_element ( a_text , l_result , "<STR_LIT>" ) <EOL> a_list . append ( l_result ) <EOL> def _manage_an_error_or_warning_element ( self , a_text , a_dict , a_element , <EOL> a_mode = None ) : <EOL> """<STR_LIT>""" <EOL> l_element = None <EOL> if a_mode : <EOL> l_match_list = self . _error_warning_regex [ a_mode + "<STR_LIT:_>" + <EOL> a_element ] . findall ( a_text ) <EOL> if len ( l_match_list ) > <NUM_LIT:0> : <EOL> l_element = l_match_list [ <NUM_LIT:0> ] <EOL> else : <EOL> l_match_list = self . _error_warning_regex [ a_element ] . findall ( a_text ) <EOL> if len ( l_match_list ) > <NUM_LIT:0> : <EOL> l_element = l_match_list [ <NUM_LIT:0> ] <EOL> if l_element : <EOL> a_dict [ a_element ] = tools . normalize_string ( l_element ) <EOL> else : <EOL> a_dict [ a_element ] = l_element <EOL> def recompile ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compilation ( [ "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ] , <EOL> a_window ) <EOL> def freeze ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compilation ( [ "<STR_LIT>" , "<STR_LIT>" ] , a_window ) <EOL> def finalize ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compilation ( [ "<STR_LIT>" , "<STR_LIT>" ] , a_window ) <EOL> def melt ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compilation ( [ "<STR_LIT>" , "<STR_LIT>" ] , a_window ) <EOL> def quick_melt ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compilation ( [ "<STR_LIT>" , "<STR_LIT>" ] , a_window ) <EOL> def run_command ( self ) : <EOL> """<STR_LIT>""" <EOL> result = self . _ec_path ( ) + "<STR_LIT>" + self . config_file_path ( ) + "<STR_LIT>" + self . config_file ( ) <EOL> if self . target_name ( ) : <EOL> result = result + "<STR_LIT>" + self . target_name ( ) <EOL> return result <EOL> def fetch_system_classes ( self , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_flat ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_ancestors ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_attributes ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_clients ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_deferred ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_descendants ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_exported ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_externals ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_flatshort ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_once ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_invariants ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_routines ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_creators ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_short ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_suppliers ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_class_text ( self , a_class , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT>" , [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def class_name_from_text ( self , a_text ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> a_text_no_comment = self . _tools_regex [ "<STR_LIT>" ] . sub ( "<STR_LIT>" , a_text ) <EOL> a_text_no_string = self . _tools_regex [ "<STR_LIT:string>" ] . sub ( '<STR_LIT>' , <EOL> a_text_no_comment ) <EOL> l_match_list = self . _tools_regex [ "<STR_LIT:class>" ] . findall ( a_text_no_string ) <EOL> if len ( l_match_list ) > <NUM_LIT:0> : <EOL> l_class_name = l_match_list [ <NUM_LIT:0> ] <EOL> else : <EOL> l_class_name = "<STR_LIT>" <EOL> self . _command_output = temp <EOL> return l_class_name <EOL> def class_list ( self ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . _execute_compiler ( "<STR_LIT>" , [ "<STR_LIT>" ] , None , False , True ) <EOL> l_temp_list = self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> self . command_output ( ) ) <EOL> result = [ self . _tools_regex [ "<STR_LIT>" ] . findall ( element ) [ <NUM_LIT:0> ] for <EOL> element in l_temp_list ] <EOL> result . sort ( ) <EOL> self . _command_output = temp <EOL> return result <EOL> def convert_class_name ( self , a_class ) : <EOL> l_result = a_class <EOL> if a_class == "<STR_LIT>" : <EOL> l_result = "<STR_LIT>" <EOL> elif a_class == "<STR_LIT>" : <EOL> l_result = "<STR_LIT>" <EOL> elif a_class == "<STR_LIT>" : <EOL> l_result = "<STR_LIT>" <EOL> return l_result <EOL> def exported_feature_list ( self , a_class ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . fetch_class_exported ( self . convert_class_name ( a_class ) ) <EOL> l_temp_list = self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> self . command_output ( ) ) <EOL> self . _command_output = temp <EOL> return l_temp_list <EOL> def creators_list ( self , a_class ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . fetch_class_creators ( self . convert_class_name ( a_class ) ) <EOL> l_temp_list = self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> self . command_output ( ) ) <EOL> self . _command_output = temp <EOL> return l_temp_list <EOL> def feature_list ( self , a_class ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . fetch_class_attributes ( self . convert_class_name ( a_class ) ) <EOL> l_temp_list = self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> self . command_output ( ) ) <EOL> self . fetch_class_routines ( self . convert_class_name ( a_class ) ) <EOL> l_temp_list . extend ( self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> self . command_output ( ) ) ) <EOL> self . _command_output = temp <EOL> return l_temp_list <EOL> def class_generic ( self , a_class ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . fetch_class_short ( self . convert_class_name ( a_class ) ) <EOL> l_generics_clause = self . _tools_regex [ "<STR_LIT>" ] . search ( self . command_output ( ) ) <EOL> l_result = [ ] <EOL> if l_generics_clause : <EOL> l_result = self . _tools_regex [ "<STR_LIT>" ] . findall ( <EOL> l_generics_clause . group ( <NUM_LIT:1> ) ) <EOL> self . _command_output = temp <EOL> return l_result <EOL> def fetch_feature_ancestors ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def fetch_feature_callers ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_assigners ( self , a_class , a_feature , <EOL> a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_creators ( self , a_class , a_feature , <EOL> a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_callees ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_assignees ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_creation ( self , a_class , a_feature , <EOL> a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , <EOL> [ "<STR_LIT>" ] , a_window , False , True ) <EOL> def fetch_feature_descendants ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def fetch_feature_flat ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def fetch_feature_homonyms ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def fetch_feature_implementers ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def fetch_feature_text ( self , a_class , a_feature , a_window = None ) : <EOL> """<STR_LIT>""" <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class ) + <EOL> "<STR_LIT:\n>" + a_feature + "<STR_LIT>" , [ "<STR_LIT>" ] , <EOL> a_window , False , True ) <EOL> def file_path_from_class_name ( self , a_class_name ) : <EOL> """<STR_LIT>""" <EOL> temp = self . _command_output <EOL> self . _execute_compiler ( "<STR_LIT>" + self . convert_class_name ( a_class_name ) <EOL> + "<STR_LIT>" , [ "<STR_LIT>" ] , None , False , True ) <EOL> result = self . _command_output <EOL> self . _command_output = temp <EOL> return result </s>
