[lldb] Unconditionally strip the .py(c) extension when loading a module
Currently we only strip the Python extension when the file exists on disk because we assumed that if it didn't exist it was a module. However, with the change from D89334 this is no longer the case as we want to be able to import a relative path to a .py as a module. Since we always import a scripting module as a "python module" we should always strip the extension if present. Differential revision: https://reviews.llvm.org/D89352
This commit is contained in:
@@ -2797,19 +2797,20 @@ bool ScriptInterpreterPythonImpl::LoadScriptingModule(
|
||||
return false;
|
||||
}
|
||||
|
||||
// strip .py or .pyc extension
|
||||
ConstString extension = target_file.GetFileNameExtension();
|
||||
if (extension) {
|
||||
if (llvm::StringRef(extension.GetCString()) == ".py")
|
||||
basename.resize(basename.length() - 3);
|
||||
else if (llvm::StringRef(extension.GetCString()) == ".pyc")
|
||||
basename.resize(basename.length() - 4);
|
||||
}
|
||||
} else {
|
||||
error.SetErrorString("no known way to import this module specification");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Strip .py or .pyc extension
|
||||
llvm::StringRef extension = target_file.GetFileNameExtension().GetCString();
|
||||
if (!extension.empty()) {
|
||||
if (extension == ".py")
|
||||
basename.resize(basename.length() - 3);
|
||||
else if (extension == ".pyc")
|
||||
basename.resize(basename.length() - 4);
|
||||
}
|
||||
|
||||
// check if the module is already import-ed
|
||||
command_stream.Clear();
|
||||
command_stream.Printf("sys.modules.__contains__('%s')", basename.c_str());
|
||||
|
||||
Reference in New Issue
Block a user