Restricted Python Virtual Machine
Project description
Restricted Python Virtual Machine
Restricted Python Virtual Machine (R-PVM) implemented by pure python.
specification
- aim for complete safe sandbox
- designed for Python3.6 bytecode
- execute one by one
- good for smart contract of crypto currency
- No warranty and unstable
check
- cannot use MAKE_FUNCTION op (lambda, comprehension and inner fnc)
- cannot use async/await
- limit to execute function
- YOU must select safe function
Install
pip3 install rpvm
How to use
from rpvm.vm import VirtualMachine
from RestrictedPython import safe_builtins, safe_globals
source = """
a = 1
b = 2
c = a + b
"""
code = compile(source, '<example>', 'exec')
b = safe_builtins.copy()
l = dict()
g = safe_globals.copy()
vm = VirtualMachine(code, b, l, g)
steps = 0
max_steps = 500
while not vm.finish and steps < max_steps:
vm.exec()
steps += 1
print("complete?", vm.finish)
print("result", vm.return_value)
print("c is", l['c'])
test
python3 -m pytest tests
Author
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rpvm-0.1.0a1.tar.gz
(8.0 kB
view details)
File details
Details for the file rpvm-0.1.0a1.tar.gz
.
File metadata
- Download URL: rpvm-0.1.0a1.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d352685e38b9bca4355419a5238ecb07802aa0bb0593366fbf0ca442381ba15 |
|
MD5 | 6b0c13687931450779997565f0a4ac8c |
|
BLAKE2b-256 | 588d965446ed7bc26253a6bedf1148b3c207009c206975765e67f16a28f3349c |