File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -410,10 +410,12 @@ def get_function_sources_from_jedi(
410410 and definition .full_name
411411 and definition .type == "function"
412412 and not belongs_to_function_qualified (definition , qualified_function_name )
413+ # Avoid nested functions or classes. Only class.function is allowed
414+ and len ((qualified_name := get_qualified_name (definition .module_name , definition .full_name )).split ("." )) <= 2
413415 ):
414416 function_source = FunctionSource (
415417 file_path = definition_path ,
416- qualified_name = get_qualified_name ( definition . module_name , definition . full_name ) ,
418+ qualified_name = qualified_name ,
417419 fully_qualified_name = definition .full_name ,
418420 only_function_name = definition .name ,
419421 source_code = definition .get_line_code (),
Original file line number Diff line number Diff line change @@ -23,6 +23,12 @@ def innocent_bystander(self):
2323 def helper_method (self ):
2424 return self .name
2525
26+ class NestedClass :
27+ def __init__ (self , name ):
28+ self .name = name
29+
30+ def nested_method (self ):
31+ return self .name
2632
2733def main_method ():
2834 return "hello"
@@ -33,6 +39,7 @@ def __init__(self, name):
3339 self .name = name
3440
3541 def main_method (self ):
42+ self .name = HelperClass .NestedClass ("test" ).nested_method ()
3643 return HelperClass (self .name ).helper_method ()
3744
3845
@@ -73,6 +80,8 @@ def test_code_replacement10() -> None:
7380 )
7481
7582 code_ctx = get_code_optimization_context (function_to_optimize = func_top_optimize , project_root_path = file_path .parent )
83+ qualified_names = {func .qualified_name for func in code_ctx .helper_functions }
84+ assert qualified_names == {"HelperClass.helper_method" } # Nested method should not be in here
7685 read_write_context , read_only_context = code_ctx .read_writable_code , code_ctx .read_only_context_code
7786
7887 expected_read_write_context = """
@@ -91,6 +100,7 @@ def __init__(self, name):
91100 self.name = name
92101
93102 def main_method(self):
103+ self.name = HelperClass.NestedClass("test").nested_method()
94104 return HelperClass(self.name).helper_method()
95105"""
96106 expected_read_only_context = """
You can’t perform that action at this time.
0 commit comments