mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Add __file__ for imported modules
This commit is contained in:
1 parent
352bd85681
commit
da3df8a0ae
3 files changed
+9
-1
No files matched your search
@@ -0,0 +1,3 @@
|
||||
from import_file import import_file
|
||||
|
||||
import_file()
|
||||
@@ -0,0 +1,4 @@
|
||||
import os
|
||||
|
||||
def import_file():
|
||||
assert os.path.basename(__file__) == "import_file.py"
|
||||
+2
-1
@@ -48,12 +48,13 @@ pub fn import_file(
|
||||
content: String,
|
||||
) -> PyResult {
|
||||
let sys_modules = vm.get_attribute(vm.sys_module.clone(), "modules").unwrap();
|
||||
let code_obj = compile::compile(vm, &content, &compile::Mode::Exec, file_path)
|
||||
let code_obj = compile::compile(vm, &content, &compile::Mode::Exec, file_path.clone())
|
||||
.map_err(|err| vm.new_syntax_error(&err))?;
|
||||
// trace!("Code object: {:?}", code_obj);
|
||||
|
||||
let attrs = vm.ctx.new_dict();
|
||||
attrs.set_item("__name__", vm.new_str(module_name.to_string()), vm)?;
|
||||
attrs.set_item("__file__", vm.new_str(file_path), vm)?;
|
||||
let module = vm.ctx.new_module(module_name, attrs.clone());
|
||||
|
||||
// Store module in cache to prevent infinite loop with mutual importing libs:
|
||||
|
||||
Reference in new issue
Block a user