Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit090cfed

Browse files
committed
Use importlib import in WASM
1 parent6b018a0 commit090cfed

File tree

4 files changed

+9
-32
lines changed

4 files changed

+9
-32
lines changed

‎src/main.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ fn main() {
5151
// Construct vm:
5252
let vm =VirtualMachine::new();
5353

54-
let res = import::init_importlib(&vm);
54+
let res = import::init_importlib(&vm,true);
5555
handle_exception(&vm, res);
5656

5757
// Figure out if a -c option was given:

‎vm/src/import.rs‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,18 @@ use crate::vm::VirtualMachine;
1313
#[cfg(feature ="rustpython-compiler")]
1414
use rustpython_compiler::compile;
1515

16-
pubfninit_importlib(vm:&VirtualMachine) ->PyResult{
16+
pubfninit_importlib(vm:&VirtualMachine,external:bool) ->PyResult{
1717
let importlib =import_frozen(vm,"_frozen_importlib")?;
1818
let impmod =import_builtin(vm,"_imp")?;
1919
let install = vm.get_attribute(importlib.clone(),"_install")?;
2020
vm.invoke(install,vec![vm.sys_module.clone(), impmod])?;
2121
vm.import_func
2222
.replace(vm.get_attribute(importlib.clone(),"__import__")?);
23-
let install_external = vm.get_attribute(importlib.clone(),"_install_external_importers")?;
24-
vm.invoke(install_external,vec![])?;
23+
if external{
24+
let install_external =
25+
vm.get_attribute(importlib.clone(),"_install_external_importers")?;
26+
vm.invoke(install_external,vec![])?;
27+
}
2528
Ok(vm.get_none())
2629
}
2730

‎wasm/lib/src/vm_class.rs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use wasm_bindgen::prelude::*;
88
use rustpython_compiler::{compile, error::CompileErrorType};
99
use rustpython_vm::frame::{NameProtocol,Scope};
1010
use rustpython_vm::function::PyFuncArgs;
11+
use rustpython_vm::import;
1112
use rustpython_vm::pyobject::{PyObject,PyObjectPayload,PyObjectRef,PyResult,PyValue};
1213
use rustpython_vm::VirtualMachine;
1314

@@ -43,7 +44,7 @@ impl StoredVirtualMachine {
4344
setup_browser_module(&vm);
4445
}
4546

46-
*vm.import_func.borrow_mut() = vm.ctx.new_rustfunc(wasm_builtins::builtin_import);
47+
import::init_importlib(&vm,false);
4748

4849
StoredVirtualMachine{
4950
vm,

‎wasm/lib/src/wasm_builtins.rs‎

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use js_sys::{self, Array};
88
use web_sys::{self, console};
99

1010
use rustpython_vm::function::{Args,KwArgs,PyFuncArgs};
11-
use rustpython_vm::import;
1211
use rustpython_vm::obj::{
1312
objstr::{self,PyStringRef},
1413
objtype,
@@ -80,29 +79,3 @@ pub fn builtin_print_console(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult
8079
console::log(&arr);
8180
Ok(vm.get_none())
8281
}
83-
84-
pubfnbuiltin_import(
85-
module_name:PyStringRef,
86-
_args:Args,
87-
_kwargs:KwArgs,
88-
vm:&VirtualMachine,
89-
) ->PyResult<PyObjectRef>{
90-
let module_name = module_name.as_str();
91-
92-
let sys_modules = vm.get_attribute(vm.sys_module.clone(),"modules").unwrap();
93-
94-
// First, see if we already loaded the module:
95-
ifletOk(module) = sys_modules.get_item(module_name.to_string(), vm){
96-
Ok(module)
97-
}elseif vm.frozen.borrow().contains_key(module_name){
98-
import::import_frozen(vm, module_name)
99-
}elseif vm.stdlib_inits.borrow().contains_key(module_name){
100-
import::import_builtin(vm, module_name)
101-
}else{
102-
let notfound_error = vm.context().exceptions.module_not_found_error.clone();
103-
Err(vm.new_exception(
104-
notfound_error,
105-
format!("Module {:?} not found", module_name),
106-
))
107-
}
108-
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp