Skip to content

Commit da2d31d

Browse files
committed
Fix wasm code
1 parent 175ca34 commit da2d31d

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

wasm/lib/src/browser_module.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ use js_sys::Promise;
44
use num_traits::cast::ToPrimitive;
55
use rustpython_vm::obj::{objint, objstr};
66
use rustpython_vm::pyobject::{
7-
PyContext, PyFuncArgs, PyObject, PyObjectPayload, PyObjectRef, PyResult, TypeProtocol,
7+
AttributeProtocol, PyContext, PyFuncArgs, PyObject, PyObjectPayload, PyObjectRef, PyResult,
8+
TypeProtocol,
89
};
9-
use rustpython_vm::{import::import, VirtualMachine};
10+
use rustpython_vm::{import::import_module, VirtualMachine};
1011
use std::path::PathBuf;
1112
use wasm_bindgen::{prelude::*, JsCast};
1213
use wasm_bindgen_futures::{future_to_promise, JsFuture};
@@ -176,12 +177,10 @@ pub fn get_promise_value(obj: &PyObjectRef) -> Promise {
176177
}
177178

178179
pub fn import_promise_type(vm: &mut VirtualMachine) -> PyResult {
179-
import(
180-
vm,
181-
PathBuf::default(),
182-
BROWSER_NAME,
183-
&Some("Promise".into()),
184-
)
180+
match import_module(vm, PathBuf::default(), BROWSER_NAME)?.get_attr("Promise".into()) {
181+
Some(promise) => Ok(promise),
182+
None => Err(vm.new_not_implemented_error("No Promise".to_string())),
183+
}
185184
}
186185

187186
fn promise_then(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {

wasm/lib/src/convert.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,10 @@ pub fn py_to_js(vm: &mut VirtualMachine, py_obj: PyObjectRef) -> JsValue {
128128
}
129129
arr.into()
130130
} else {
131-
let dumps = rustpython_vm::import::import(
132-
vm,
133-
std::path::PathBuf::default(),
134-
"json",
135-
&Some("dumps".into()),
136-
)
137-
.expect("Couldn't get json.dumps function");
131+
let dumps = rustpython_vm::import::import_module(vm, std::path::PathBuf::default(), "json")
132+
.expect("Couldn't get json module")
133+
.get_attr("dump".into())
134+
.expect("Couldn't get json dumps");
138135
match vm.invoke(dumps, pyobject::PyFuncArgs::new(vec![py_obj], vec![])) {
139136
Ok(value) => {
140137
let json = vm.to_pystr(&value).unwrap();
@@ -231,13 +228,10 @@ pub fn js_to_py(vm: &mut VirtualMachine, js_val: JsValue) -> PyObjectRef {
231228
// Because `JSON.stringify(undefined)` returns undefined
232229
vm.get_none()
233230
} else {
234-
let loads = rustpython_vm::import::import(
235-
vm,
236-
std::path::PathBuf::default(),
237-
"json",
238-
&Some("loads".into()),
239-
)
240-
.expect("json.loads function to be available");
231+
let loads = rustpython_vm::import::import_module(vm, std::path::PathBuf::default(), "json")
232+
.expect("Couldn't get json module")
233+
.get_attr("loads".into())
234+
.expect("Couldn't get json dumps");
241235

242236
let json = match js_sys::JSON::stringify(&js_val) {
243237
Ok(json) => String::from(json),

0 commit comments

Comments
 (0)