Skip to content

Commit fcd564a

Browse files
committed
Replace kybra_like to project-neutral example
1 parent f3de183 commit fcd564a

File tree

4 files changed

+51
-117
lines changed

4 files changed

+51
-117
lines changed

examples/kybra_like.py

Lines changed: 0 additions & 90 deletions
This file was deleted.

examples/kybra_like.rs

Lines changed: 0 additions & 27 deletions
This file was deleted.

examples/package_embed.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from dataclasses import dataclass
2+
from typing import Any
3+
4+
__all__ = ["context"]
5+
6+
7+
@dataclass
8+
class Context:
9+
name: str
10+
something: Any
11+
12+
13+
_context = Context(
14+
name="test name",
15+
something=None,
16+
)
17+
18+
19+
def context() -> Context:
20+
return _context
21+
22+
23+
if __name__ == "__main__":
24+
print(context().name)

examples/package_embed.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
use rustpython_vm as vm;
2+
use vm::{builtins::PyStrRef, Interpreter};
3+
4+
fn py_main(interp: &Interpreter) -> vm::PyResult<PyStrRef> {
5+
interp.enter(|vm| {
6+
vm.insert_sys_path(vm.new_pyobj("examples"))
7+
.expect("add path");
8+
let module = vm.import("package_embed", None, 0)?;
9+
let name_func = module.get_attr("context", vm)?;
10+
let result = vm.invoke(&name_func, ())?;
11+
let result: PyStrRef = result.get_attr("name", vm)?.try_into_value(vm)?;
12+
vm::PyResult::Ok(result)
13+
})
14+
}
15+
16+
fn main() -> vm::PyResult<()> {
17+
let interp = vm::Interpreter::with_init(Default::default(), |vm| {
18+
vm.add_native_modules(rustpython_stdlib::get_module_inits());
19+
});
20+
let result = py_main(&interp);
21+
let result = result.and_then(|result| {
22+
println!("name: {}", result);
23+
Ok(())
24+
});
25+
let exit_code = interp.run(|_vm| result);
26+
std::process::exit(exit_code);
27+
}

0 commit comments

Comments
 (0)