@@ -99,9 +99,8 @@ def _get_source_from_interpreter_function(raw_func):
9999 current_interpreter_history = readline .get_current_history_length ()
100100
101101 try :
102- search_pattern = re .compile (r"^(\s*def\s)" )
102+ search_pattern = re .compile (r"^(\s*def\s*" + raw_func . __name__ + r"\s*\( )" )
103103 decorator_pattern = re .compile (r"^(\s*@)" )
104- func_name = raw_func .__name__
105104 code_object = raw_func .__func__ if inspect .ismethod (raw_func ) else raw_func .__code__
106105 except Exception :
107106 raise OSError ("Could not get source code for interpreter-defined function." )
@@ -118,21 +117,23 @@ def _get_source_from_interpreter_function(raw_func):
118117
119118 # if its a def name_of_function(...
120119 if search_pattern .match (line ):
121- # go through to get decorators
122- if func_name in line :
123- # reassemble function
124- for i in range (starting_index_of_function , current_interpreter_history + 1 ):
125- reassembled_function += f"{ readline .get_history_item (i )} \n "
126-
127- for line_number_with_decorator in range (starting_index_of_function - 1 , - 1 , - 1 ):
128- if decorator_pattern .match (readline .get_history_item (line_number_with_decorator )):
129- reassembled_function = (
130- f"{ readline .get_history_item (line_number_with_decorator )} \n " + reassembled_function
131- )
132- else :
133- break
134- break
120+ # reassemble function
121+ for i in range (starting_index_of_function , current_interpreter_history + 1 ):
122+ reassembled_function += f"{ readline .get_history_item (i )} \n "
123+
124+ for line_number_with_decorator in range (starting_index_of_function - 1 , - 1 , - 1 ):
125+ if decorator_pattern .match (readline .get_history_item (line_number_with_decorator )):
126+ reassembled_function = (
127+ f"{ readline .get_history_item (line_number_with_decorator )} \n " + reassembled_function
128+ )
129+ else :
130+ break
131+ break
135132 starting_index_of_function -= 1
133+
134+ if reassembled_function == "" :
135+ raise OSError ("Could not find function definition for interpreter-defined function." )
136+
136137 return reassembled_function
137138
138139
0 commit comments