MCPcopy Index your code
hub / github.com/RustPython/RustPython / inject_module

Method inject_module

crates/wasm/src/vm_class.rs:253–294  ·  view source on GitHub ↗
(
        &self,
        name: String,
        source: &str,
        imports: Option<Object>,
    )

Source from the content-addressed store, hash-verified

251
252 #[wasm_bindgen(js_name = injectModule)]
253 pub fn inject_module(
254 &self,
255 name: String,
256 source: &str,
257 imports: Option<Object>,
258 ) -> Result<(), JsValue> {
259 self.with_vm(|vm, _| {
260 let code = vm
261 .compile(source, Mode::Exec, name.clone())
262 .map_err(convert::syntax_err)?;
263 let attrs = vm.ctx.new_dict();
264 attrs
265 .set_item("__name__", vm.new_pyobj(name.as_str()), vm)
266 .into_js(vm)?;
267
268 if let Some(imports) = imports {
269 for entry in convert::object_entries(&imports) {
270 let (key, value) = entry?;
271 let key: String = Object::from(key).to_string().into();
272 attrs
273 .set_item(key.as_str(), convert::js_to_py(vm, value), vm)
274 .into_js(vm)?;
275 }
276 }
277
278 vm.run_code_obj(
279 code,
280 Scope::new(
281 Some(ArgMapping::from_dict_exact(attrs.clone())),
282 attrs.clone(),
283 ),
284 )
285 .into_js(vm)?;
286
287 let module = vm.new_module(&name, attrs, None);
288
289 let sys_modules = vm.sys_module.get_attr("modules", vm).into_js(vm)?;
290 sys_modules.set_item(&name, module.into(), vm).into_js(vm)?;
291
292 Ok(())
293 })?
294 }
295
296 #[wasm_bindgen(js_name = injectJSModule)]
297 pub fn inject_js_module(&self, name: String, module: Object) -> Result<(), JsValue> {

Callers

nothing calls this directly

Calls 15

object_entriesFunction · 0.85
js_to_pyFunction · 0.85
newFunction · 0.85
with_vmMethod · 0.80
new_dictMethod · 0.80
into_jsMethod · 0.80
new_pyobjMethod · 0.80
to_stringMethod · 0.80
run_code_objMethod · 0.80
SomeClass · 0.50
compileMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected