Resolve a relative module name to an absolute name. Example: resolve_relative_name('.foo', 'bar') -> 'bar.foo'
(self, name: str, package: str)
| 244 | return path |
| 245 | |
| 246 | def resolve_relative_name(self, name: str, package: str) -> str | None: |
| 247 | """Resolve a relative module name to an absolute name. |
| 248 | |
| 249 | Example: resolve_relative_name('.foo', 'bar') -> 'bar.foo' |
| 250 | """ |
| 251 | # taken from importlib._bootstrap |
| 252 | level = 0 |
| 253 | for character in name: |
| 254 | if character != '.': |
| 255 | break |
| 256 | level += 1 |
| 257 | bits = package.rsplit('.', level - 1) |
| 258 | if len(bits) < level: |
| 259 | return None |
| 260 | base = bits[0] |
| 261 | name = name[level:] |
| 262 | return f'{base}.{name}' if name else base |
| 263 | |
| 264 | @property |
| 265 | def global_cache(self) -> list[pkgutil.ModuleInfo]: |
no test coverage detected