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

Commitf8e8a12

Browse files
authored
Merge pull requestRustPython#1102 from palaviv/clean-import
Remove old import
2 parents72febb7 +f740845 commitf8e8a12

File tree

4 files changed

+6
-75
lines changed

4 files changed

+6
-75
lines changed

‎src/main.rs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ fn run_command(vm: &VirtualMachine, mut source: String) -> PyResult {
9898

9999
fnrun_module(vm:&VirtualMachine,module:&str) ->PyResult{
100100
debug!("Running module {}", module);
101-
let current_path =PathBuf::from(".");
102-
import::import_module(vm, current_path, module)
101+
vm.import(module,&vm.ctx.new_tuple(vec![]),0)
103102
}
104103

105104
fnrun_script(vm:&VirtualMachine,script_file:&str) ->PyResult{

‎vm/src/import.rs‎

Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22
* Import mechanics
33
*/
44

5-
use std::path::PathBuf;
6-
75
usecrate::bytecode::CodeObject;
86
usecrate::frame::Scope;
9-
usecrate::obj::{objcode, objsequence, objstr};
7+
usecrate::obj::objcode;
108
usecrate::pyobject::{ItemProtocol,PyResult,PyValue};
11-
usecrate::util;
129
usecrate::vm::VirtualMachine;
1310
#[cfg(feature ="rustpython-compiler")]
1411
use rustpython_compiler::compile;
@@ -20,7 +17,7 @@ pub fn init_importlib(vm: &VirtualMachine, external: bool) -> PyResult {
2017
vm.invoke(install,vec![vm.sys_module.clone(), impmod])?;
2118
vm.import_func
2219
.replace(vm.get_attribute(importlib.clone(),"__import__")?);
23-
if external{
20+
if external&&cfg!(feature ="rustpython-compiler"){
2421
let install_external =
2522
vm.get_attribute(importlib.clone(),"_install_external_importers")?;
2623
vm.invoke(install_external,vec![])?;
@@ -49,39 +46,6 @@ pub fn import_builtin(vm: &VirtualMachine, module_name: &str) -> PyResult {
4946
})
5047
}
5148

52-
pubfnimport_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-
ifletOk(module) = sys_modules.get_item(module_name.to_string(), vm){
58-
Ok(module)
59-
}elseif vm.frozen.borrow().contains_key(module_name){
60-
import_frozen(vm, module_name)
61-
}elseif vm.stdlib_inits.borrow().contains_key(module_name){
62-
import_builtin(vm, module_name)
63-
}elseifcfg!(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-
8549
#[cfg(feature ="rustpython-compiler")]
8650
pubfnimport_file(
8751
vm:&VirtualMachine,
@@ -118,29 +82,3 @@ pub fn import_codeobj(
11882
)?;
11983
Ok(module)
12084
}
121-
122-
fnfind_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-
letmut 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-
letmut file_paths =vec![];
134-
for pathin paths{
135-
for suffixin suffixes.iter(){
136-
letmut 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-
}

‎vm/src/stdlib/io.rs‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@ use std::io::prelude::*;
66
use std::io::Cursor;
77
use std::io::SeekFrom;
88

9-
use std::path::PathBuf;
10-
119
use num_bigint::ToBigInt;
1210
use num_traits::ToPrimitive;
1311

1412
usesuper::os;
1513
usecrate::function::{OptionalArg,PyFuncArgs};
16-
usecrate::import;
1714
usecrate::obj::objbytearray::PyByteArray;
1815
usecrate::obj::objbytes;
1916
usecrate::obj::objbytes::PyBytes;
@@ -532,7 +529,7 @@ pub fn io_open(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult {
532529
}
533530
};
534531

535-
let io_module = import::import_module(vm,PathBuf::default(),"io").unwrap();
532+
let io_module =vm.import("_io",&vm.ctx.new_tuple(vec![]),0)?;
536533

537534
// Construct a FileIO (subclass of RawIOBase)
538535
// This is subsequently consumed by a Buffered Class.

‎vm/src/stdlib/thread.rs‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
/// support threading
33
usesuper::super::pyobject::PyObjectRef;
44
usecrate::function::PyFuncArgs;
5-
usecrate::import;
65
usecrate::pyobject::PyResult;
76
usecrate::vm::VirtualMachine;
8-
use std::path::PathBuf;
97

108
fnrlock_acquire(vm:&VirtualMachine,_args:PyFuncArgs) ->PyResult{
119
Ok(vm.get_none())
@@ -38,9 +36,8 @@ fn get_ident(_vm: &VirtualMachine) -> u32 {
3836
}
3937

4038
fnallocate_lock(vm:&VirtualMachine) ->PyResult{
41-
let module = import::import_module(vm,PathBuf::default(),"_thread")?;
42-
let lock_class = vm.get_attribute(module.clone(),"RLock")?;
43-
vm.invoke(lock_class,vec![])
39+
let lock_class = vm.class("_thread","RLock");
40+
vm.invoke(lock_class.into_object(),vec![])
4441
}
4542

4643
pubfnmake_module(vm:&VirtualMachine) ->PyObjectRef{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp