|
2 | 2 | * Import mechanics |
3 | 3 | */ |
4 | 4 |
|
5 | | -use std::path::PathBuf; |
6 | | - |
7 | 5 | use crate::bytecode::CodeObject; |
8 | 6 | use crate::frame::Scope; |
9 | | -use crate::obj::{objcode, objsequence, objstr}; |
| 7 | +use crate::obj::objcode; |
10 | 8 | use crate::pyobject::{ItemProtocol, PyResult, PyValue}; |
11 | | -use crate::util; |
12 | 9 | use crate::vm::VirtualMachine; |
13 | 10 | #[cfg(feature = "rustpython-compiler")] |
14 | 11 | use rustpython_compiler::compile; |
@@ -49,39 +46,6 @@ pub fn import_builtin(vm: &VirtualMachine, module_name: &str) -> PyResult { |
49 | 46 | }) |
50 | 47 | } |
51 | 48 |
|
52 | | -pub fn import_module(vm: &VirtualMachine, current_path: PathBuf, module_name: &str) -> PyResult { |
53 | | - // Cached modules: |
54 | | - let sys_modules = vm.get_attribute(vm.sys_module.clone(), "modules").unwrap(); |
55 | | - |
56 | | - // First, see if we already loaded the module: |
57 | | - if let Ok(module) = sys_modules.get_item(module_name.to_string(), vm) { |
58 | | - Ok(module) |
59 | | - } else if vm.frozen.borrow().contains_key(module_name) { |
60 | | - import_frozen(vm, module_name) |
61 | | - } else if vm.stdlib_inits.borrow().contains_key(module_name) { |
62 | | - import_builtin(vm, module_name) |
63 | | - } else if cfg!(feature = "rustpython-compiler") { |
64 | | - let notfound_error = &vm.ctx.exceptions.module_not_found_error; |
65 | | - let import_error = &vm.ctx.exceptions.import_error; |
66 | | - |
67 | | - // Time to search for module in any place: |
68 | | - let file_path = find_source(vm, current_path, module_name) |
69 | | - .map_err(|e| vm.new_exception(notfound_error.clone(), e))?; |
70 | | - let source = util::read_file(file_path.as_path()) |
71 | | - .map_err(|e| vm.new_exception(import_error.clone(), e.to_string()))?; |
72 | | - |
73 | | - import_file( |
74 | | - vm, |
75 | | - module_name, |
76 | | - file_path.to_str().unwrap().to_string(), |
77 | | - source, |
78 | | - ) |
79 | | - } else { |
80 | | - let notfound_error = &vm.ctx.exceptions.module_not_found_error; |
81 | | - Err(vm.new_exception(notfound_error.clone(), module_name.to_string())) |
82 | | - } |
83 | | -} |
84 | | - |
85 | 49 | #[cfg(feature = "rustpython-compiler")] |
86 | 50 | pub fn import_file( |
87 | 51 | vm: &VirtualMachine, |
@@ -118,29 +82,3 @@ pub fn import_codeobj( |
118 | 82 | )?; |
119 | 83 | Ok(module) |
120 | 84 | } |
121 | | - |
122 | | -fn find_source(vm: &VirtualMachine, current_path: PathBuf, name: &str) -> Result<PathBuf, String> { |
123 | | - let sys_path = vm.get_attribute(vm.sys_module.clone(), "path").unwrap(); |
124 | | - let mut paths: Vec<PathBuf> = objsequence::get_elements_list(&sys_path) |
125 | | - .iter() |
126 | | - .map(|item| PathBuf::from(objstr::get_value(item))) |
127 | | - .collect(); |
128 | | - |
129 | | - paths.insert(0, current_path); |
130 | | - |
131 | | - let rel_name = name.replace('.', "/"); |
132 | | - let suffixes = [".py", "/__init__.py"]; |
133 | | - let mut file_paths = vec![]; |
134 | | - for path in paths { |
135 | | - for suffix in suffixes.iter() { |
136 | | - let mut file_path = path.clone(); |
137 | | - file_path.push(format!("{}{}", rel_name, suffix)); |
138 | | - file_paths.push(file_path); |
139 | | - } |
140 | | - } |
141 | | - |
142 | | - match file_paths.iter().find(|p| p.exists()) { |
143 | | - Some(path) => Ok(path.to_path_buf()), |
144 | | - None => Err(format!("No module named '{}'", name)), |
145 | | - } |
146 | | -} |
0 commit comments