Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7ff59b2
Add _bootsrap.py as frozen module
palaviv Jun 1, 2019
e88d6ac
Add init_importlib
palaviv Jun 5, 2019
698044b
Add Module.__name__
palaviv Jun 5, 2019
f1af6b1
Include _bootstrap.py as str
palaviv Jun 7, 2019
f214588
Don't set __file__ for frozen modules
palaviv Jun 7, 2019
0d9a066
Add sys.meta_path
palaviv Jun 7, 2019
37b40c5
Add frozen _bootstrap_external.py
palaviv Jun 7, 2019
fbaff7f
Install external importers on init_importlib
palaviv Jun 7, 2019
a57f38b
Rename builtin io to _io
palaviv Jun 7, 2019
b0cccf3
Change os_details
palaviv Jun 7, 2019
58d9d9d
Add sys.path_hooks
palaviv Jun 7, 2019
7f61125
Use _bootstrap.py __import__
palaviv Jun 7, 2019
2817214
Remove unused imports
palaviv Jun 7, 2019
0e76dbb
Add needed methods to _thread
palaviv Jun 7, 2019
5c53e58
Print frozen import file name in stacktrace
palaviv Jun 7, 2019
6615e81
Collapse concat
palaviv Jun 8, 2019
fe0284a
Add new to objmodule and change __name__ to property
palaviv Jun 8, 2019
375790e
objmodule should have a dict
palaviv Jun 8, 2019
c8248c3
Expose __name__ in __dict__
palaviv Jun 9, 2019
5584733
Add sys.path_importer_cache
palaviv Jun 9, 2019
d9d0ea1
Fix os to _os in class
palaviv Jun 9, 2019
5df05d4
Add script dir to sys.path
palaviv Jun 9, 2019
b567464
Add ModuleNotFoundError to builtins
palaviv Jun 9, 2019
10828e0
Set sys.pycache_prefix to None
palaviv Jun 9, 2019
8dec522
compile source may be bytes
palaviv Jun 9, 2019
03735a6
Add optional parameters to compile
palaviv Jun 10, 2019
e1472f2
Add sys.dont_write_bytecode
palaviv Jun 10, 2019
603ef1a
Support from_list
palaviv Jun 10, 2019
0e320f9
Change comment to XXX
palaviv Jun 10, 2019
ea8e280
Simplify objmodule
palaviv Jun 11, 2019
1de9f73
Optimize already loaded modules
palaviv Jun 11, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add new to objmodule and change __name__ to property
  • Loading branch information
palaviv committed Jun 10, 2019
commit fe0284aa05ae1de55bb49b808f4f4290bb0f90fb
15 changes: 13 additions & 2 deletions vm/src/obj/objmodule.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use crate::obj::objproperty::PropertyBuilder;
use crate::obj::objstr::PyStringRef;
use crate::obj::objtype::PyClassRef;
use crate::pyobject::{PyContext, PyRef, PyResult, PyValue};
use crate::vm::VirtualMachine;
Expand All @@ -15,6 +17,12 @@ impl PyValue for PyModule {
}

impl PyModuleRef {
fn new(cls: PyClassRef, name: PyStringRef, vm: &VirtualMachine) -> PyResult<PyModuleRef> {
PyModule {
name: name.as_str().to_string(),
}
.into_ref_with_type(vm, cls)
}
fn dir(self: PyModuleRef, vm: &VirtualMachine) -> PyResult {
if let Some(dict) = &self.into_object().dict {
let keys = dict.into_iter().map(|(k, _v)| k.clone()).collect();
Expand All @@ -24,14 +32,17 @@ impl PyModuleRef {
}
}

fn name(self: PyModuleRef, _vm: &VirtualMachine) -> String {
fn name(self, _vm: &VirtualMachine) -> String {
self.name.clone()
}
}

pub fn init(context: &PyContext) {
extend_class!(&context, &context.module_type, {
"__dir__" => context.new_rustfunc(PyModuleRef::dir),
"__name__" => context.new_rustfunc(PyModuleRef::name)
"__name__" => PropertyBuilder::new(context)
.add_getter(PyModuleRef::name)
.create(),
"__new__" => context.new_rustfunc(PyModuleRef::new),
});
}