MCPcopy Index your code
hub / github.com/python/cpython / determine_parent

Method determine_parent

Lib/modulefinder.py:183–216  ·  view source on GitHub ↗
(self, caller, level=-1)

Source from the content-addressed store, hash-verified

181 return None
182
183 def determine_parent(self, caller, level=-1):
184 self.msgin(4, "determine_parent", caller, level)
185 if not caller or level == 0:
186 self.msgout(4, "determine_parent -> None")
187 return None
188 pname = caller.__name__
189 if level >= 1: # relative import
190 if caller.__path__:
191 level -= 1
192 if level == 0:
193 parent = self.modules[pname]
194 assert parent is caller
195 self.msgout(4, "determine_parent ->", parent)
196 return parent
197 if pname.count(".") < level:
198 raise ImportError("relative importpath too deep")
199 pname = ".".join(pname.split(".")[:-level])
200 parent = self.modules[pname]
201 self.msgout(4, "determine_parent ->", parent)
202 return parent
203 if caller.__path__:
204 parent = self.modules[pname]
205 assert caller is parent
206 self.msgout(4, "determine_parent ->", parent)
207 return parent
208 if '.' in pname:
209 i = pname.rfind('.')
210 pname = pname[:i]
211 parent = self.modules[pname]
212 assert parent.__name__ == pname
213 self.msgout(4, "determine_parent ->", parent)
214 return parent
215 self.msgout(4, "determine_parent -> None")
216 return None
217
218 def find_head_package(self, parent, name):
219 self.msgin(4, "find_head_package", parent, name)

Callers 2

import_hookMethod · 0.95
scan_codeMethod · 0.95

Calls 6

msginMethod · 0.95
msgoutMethod · 0.95
countMethod · 0.45
joinMethod · 0.45
splitMethod · 0.45
rfindMethod · 0.45

Tested by

no test coverage detected