@@ -99,9 +99,8 @@ def _get_source_from_interpreter_function(raw_func):
99
99
current_interpreter_history = readline .get_current_history_length ()
100
100
101
101
try :
102
- search_pattern = re .compile (r"^(\s*def\s)" )
102
+ search_pattern = re .compile (r"^(\s*def\s*" + raw_func . __name__ + r"\s*\( )" )
103
103
decorator_pattern = re .compile (r"^(\s*@)" )
104
- func_name = raw_func .__name__
105
104
code_object = raw_func .__func__ if inspect .ismethod (raw_func ) else raw_func .__code__
106
105
except Exception :
107
106
raise OSError ("Could not get source code for interpreter-defined function." )
@@ -118,21 +117,23 @@ def _get_source_from_interpreter_function(raw_func):
118
117
119
118
# if its a def name_of_function(...
120
119
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
135
132
starting_index_of_function -= 1
133
+
134
+ if reassembled_function == "" :
135
+ raise OSError ("Could not find function definition for interpreter-defined function." )
136
+
136
137
return reassembled_function
137
138
138
139
0 commit comments