Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

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

@namuyan_mine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for rpvm, version 0.1.0a1
Filename, size File type Python version Upload date Hashes
Filename, size rpvm-0.1.0a1.tar.gz (8.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page