Add __file__ for imported modules

This commit is contained in:
Aviv Palivoda committed 2019-05-10 13:58:10 +03:00
1 parent 352bd85681
commit da3df8a0ae
3 files changed
+9 -1

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
from import_file import import_file
import_file()
+4
View File
@@ -0,0 +1,4 @@
import os
def import_file():
assert os.path.basename(__file__) == "import_file.py"
+2 -1
View File
@@ -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: