@@ -325,31 +325,36 @@ def add_needed_imports_from_module(
325325 )
326326 )
327327 cst .parse_module (src_module_code ).visit (gatherer )
328+ scheduled_unused_imports = []
328329 try :
329330 for mod in gatherer .module_imports :
330331 AddImportsVisitor .add_needed_import (dst_context , mod )
331- RemoveImportsVisitor . remove_unused_import ( dst_context , mod )
332+ scheduled_unused_imports . append (( mod , "" , "" ) )
332333 for mod , obj_seq in gatherer .object_mapping .items ():
334+ logger .debug (f"dst_context.full_module_name: { dst_context .full_module_name } " )
335+ logger .debug (f"mod: { mod } " )
336+ logger .debug (f"obj_seq: { obj_seq } " )
337+ logger .debug (f"helper_functions_fqn: { helper_functions_fqn } " )
333338 for obj in obj_seq :
334339 if (
335340 f"{ mod } .{ obj } " in helper_functions_fqn
336- or dst_context .full_module_name is mod # avoid circular imports
341+ or dst_context .full_module_name == mod # avoid circular imports
337342 ):
338343 continue # Skip adding imports for helper functions already in the context
339344 AddImportsVisitor .add_needed_import (dst_context , mod , obj )
340- RemoveImportsVisitor . remove_unused_import ( dst_context , mod , obj )
345+ scheduled_unused_imports . append (( mod , obj , "" ) )
341346 except Exception as e :
342347 logger .exception (f"Error adding imports to destination module code: { e } " )
343348 return dst_module_code
344349 for mod , asname in gatherer .module_aliases .items ():
345350 AddImportsVisitor .add_needed_import (dst_context , mod , asname = asname )
346- RemoveImportsVisitor . remove_unused_import ( dst_context , mod , asname = asname )
351+ scheduled_unused_imports . append (( mod , "" , asname ) )
347352 for mod , alias_pairs in gatherer .alias_mapping .items ():
348353 for alias_pair in alias_pairs :
349354 if f"{ mod } .{ alias_pair [0 ]} " in helper_functions_fqn :
350355 continue
351356 AddImportsVisitor .add_needed_import (dst_context , mod , alias_pair [0 ], asname = alias_pair [1 ])
352- RemoveImportsVisitor . remove_unused_import ( dst_context , mod , alias_pair [0 ], asname = alias_pair [1 ])
357+ scheduled_unused_imports . append (( mod , alias_pair [0 ], alias_pair [1 ]) )
353358
354359 try :
355360 parsed_module = cst .parse_module (dst_module_code )
@@ -358,6 +363,9 @@ def add_needed_imports_from_module(
358363 return dst_module_code # Return the original code if there's a syntax error
359364 try :
360365 transformed_module = AddImportsVisitor (dst_context ).transform_module (parsed_module )
366+ for _import in scheduled_unused_imports :
367+ (_module , _obj , _alias ) = _import
368+ RemoveImportsVisitor .remove_unused_import (dst_context , module = _module , obj = _obj , asname = _alias )
361369 transformed_module = RemoveImportsVisitor (dst_context ).transform_module (transformed_module )
362370 return transformed_module .code .lstrip ("\n " )
363371 except Exception as e :
0 commit comments