# Direct access to imports via filefor imp in file.imports: ...# Grab by name of symbol being importedimp = file.get_import('math')# Grab and filter from a codebasefrom codegen.sdk import ExternalModuleexternal_imports = [i for i in codebase.imports if isinstance(i, ExternalModule)]
# Check if import is from external packagefor imp in file.imports: if isinstance(imp.imported_symbol, ExternalModule): print(f"External import: {imp.name} from {imp.module}") else: print(f"Local import: {imp.name}")
Here are patterns for working with multiple imports:
Copy
Ask AI
# Update imports from a specific moduleold_path = "./old/path"new_path = "./new/path"for imp in file.imports: if imp.module == old_path: imp.set_module(new_path)# Remove unused imports (excluding external)for imp in file.imports: if not imp.usages and not isinstance(imp.resolved_symbol, ExternalModule): print(f"Removing: {imp.name}") imp.remove()# Consolidate duplicate importsfrom collections import defaultdictmodule_imports = defaultdict(list)for imp in file.imports: module_imports[imp.module].append(imp)for module, imports in module_imports.items(): if len(imports) > 1: # Create combined import symbols = [imp.name for imp in imports] file.add_import( f"import {{ {', '.join(symbols)} }} from '{module}'" ) # Remove old imports for imp in imports: imp.remove()
Always check if imports resolve to external modules before modification to avoid breaking third-party package imports.
# One ImportStatement containing multiple Import objectsfrom math import sin, cos as cosine# Creates:# - Import for 'sin'# - Import for 'cos' with alias 'cosine'
# Direct access to importsfor imp in file.imports: ...# Access to imports via statementsfor stmt in file.import_statements: for imp in stmt.imports: ...
ImportStatement inherits from Statement, providing operations like remove() and insert_before().