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

Function is_uninitialized_submodule

crates/vm/src/builtins/module.rs:463–489  ·  view source on GitHub ↗

Check if {module_name}.{name} is an uninitialized submodule in sys.modules.

(
    module_name: Option<&String>,
    name: &Py<PyStr>,
    vm: &VirtualMachine,
)

Source from the content-addressed store, hash-verified

461
462/// Check if {module_name}.{name} is an uninitialized submodule in sys.modules.
463fn is_uninitialized_submodule(
464 module_name: Option<&String>,
465 name: &Py<PyStr>,
466 vm: &VirtualMachine,
467) -> bool {
468 let mod_name = match module_name {
469 Some(n) => n.as_str(),
470 None => return false,
471 };
472 let full_name = format!("{mod_name}.{name}");
473 let sys_modules = match vm.sys_module.get_attr("modules", vm).ok() {
474 Some(m) => m,
475 None => return false,
476 };
477 let sub_mod = match sys_modules.get_item(&full_name, vm).ok() {
478 Some(m) => m,
479 None => return false,
480 };
481 let spec = match sub_mod.get_attr("__spec__", vm).ok() {
482 Some(s) if !vm.is_none(&s) => s,
483 _ => return false,
484 };
485 spec.get_attr("_initializing", vm)
486 .ok()
487 .and_then(|v| v.try_to_bool(vm).ok())
488 .unwrap_or(false)
489}

Callers 1

getattr_innerMethod · 0.85

Calls 6

okMethod · 0.80
try_to_boolMethod · 0.80
as_strMethod · 0.45
get_attrMethod · 0.45
get_itemMethod · 0.45
is_noneMethod · 0.45

Tested by

no test coverage detected