@@ -82,10 +82,13 @@ def imported_exports(self) -> list[Exportable]:
8282
8383 @noapidoc
8484 @reader
85- def resolve_import (self , base_path : str | None = None ) -> ImportResolution [PyFile ] | None :
85+ def resolve_import (self , base_path : str | None = None , * , add_module_name : str | None = None ) -> ImportResolution [PyFile ] | None :
8686 base_path = base_path or self .G .projects [0 ].base_path or ""
8787 module_source = self .module .source if self .module else ""
88-
88+ symbol_name = self .symbol_name .source if self .symbol_name else ""
89+ if add_module_name :
90+ module_source += f".{ symbol_name } "
91+ symbol_name = add_module_name
8992 # If import is relative, convert to absolute path
9093 if module_source .startswith ("." ):
9194 module_source = self ._relative_to_absolute_import (module_source )
@@ -99,7 +102,7 @@ def resolve_import(self, base_path: str | None = None) -> ImportResolution[PyFil
99102 # `from a.b.c import foo`
100103 filepath = os .path .join (
101104 base_path ,
102- module_source .replace ("." , "/" ) + "/" + self . symbol_name . source + ".py" ,
105+ module_source .replace ("." , "/" ) + "/" + symbol_name + ".py" ,
103106 )
104107 if file := self .G .get_file (filepath ):
105108 return ImportResolution (from_file = file , symbol = None , imports_file = True )
@@ -114,22 +117,22 @@ def resolve_import(self, base_path: str | None = None) -> ImportResolution[PyFil
114117 filepath = module_source .replace ("." , "/" ) + ".py"
115118 filepath = os .path .join (base_path , filepath )
116119 if file := self .G .get_file (filepath ):
117- symbol = file .get_node_by_name (self . symbol_name . source )
120+ symbol = file .get_node_by_name (symbol_name )
118121 return ImportResolution (from_file = file , symbol = symbol )
119122
120123 # =====[ Check if `module/__init__.py` file exists in the graph ]=====
121124 filepath = filepath .replace (".py" , "/__init__.py" )
122125 if from_file := self .G .get_file (filepath ):
123- symbol = from_file .get_node_by_name (self . symbol_name . source )
126+ symbol = from_file .get_node_by_name (symbol_name )
124127 return ImportResolution (from_file = from_file , symbol = symbol )
125128
126129 # =====[ Case: Can't resolve the import ]=====
127130 if base_path == "" :
128131 # Try to resolve with "src" as the base path
129- return self .resolve_import (base_path = "src" )
132+ return self .resolve_import (base_path = "src" , add_module_name = add_module_name )
130133 if base_path == "src" :
131134 # Try "test" next
132- return self .resolve_import (base_path = "test" )
135+ return self .resolve_import (base_path = "test" , add_module_name = add_module_name )
133136
134137 # if not G_override:
135138 # for resolver in G.import_resolvers:
0 commit comments