arepl-backend
v3.0.3
Published
JS interface to python evaluator for AREPL
Downloads
1,644
Readme
AREPL-backend
JS interface to python evaluator for AREPL.
Evaluates python code and sends back the user variables and/or any errors.
Although it is meant for AREPL, it is not dependent upon AREPL and can be used by any project.
Important Note: this should ONLY be used to execute trusted code. It does not have any security features whatsoever.
Installation
npm install arepl-backend
Must have python 3.7 or greater
Usage
see https://github.com/Almenon/AREPL-vscode for example useage.
For developers:
Semantic release cheatsheet:
| Commit message | Release type |
|----------------------|--------------|
| fix: msg | patch |
| feat: msg | feature |
| perf: msg | |
| BREAKING CHANGE: msg | breaking |
API
Table of Contents
- PythonState
- constructor
- execCode
- sendStdin
- restart
- stop
- start
- onResult
- onPrint
- onStderr
- handleResult
- checkSyntax
- formatPythonException
PythonState
Starting = Starting or restarting. Ending = Process is exiting. Executing = Executing inputted code. DirtyFree = evaluator may have been polluted by side-effects from previous code, but is free for more code. FreshFree = evaluator is ready for the first run of code
constructor
starts python_evaluator.py
Parameters
options
Process / Python options. If not specified sensible defaults are inferred. (optional, default{}
)
execCode
does not do anything if program is currently executing code
Parameters
code
sendStdin
Parameters
message
string
restart
kills python process and restarts. Force-kills if necessary after 50ms. After process restarts the callback passed in is invoked
Parameters
callback
(optional, default()=>{}
)
stop
Kills python process. Force-kills if necessary after 50ms. You can check python_evaluator.running to see if process is dead yet
Parameters
kill_immediately
(optional, defaultfalse
)
start
starts python_evaluator.py. Will NOT WORK with python 2
Parameters
finishedStartingCallback
onResult
Overwrite this with your own handler. is called when program fails or completes
Parameters
foo
onPrint
Overwrite this with your own handler. Is called when program prints
Parameters
foo
string
onStderr
Overwrite this with your own handler. Is called when program logs stderr
Parameters
foo
string
handleResult
handles pyshell results and calls onResult / onPrint
Parameters
results
string
checkSyntax
checks syntax without executing code
Parameters
code
string
Returns Promise rejects w/ stderr if syntax failure
formatPythonException
gets rid of unnecessary File "" message in exception
Parameters
err
Examples
err:
Traceback (most recent call last):\n File "<string>", line 1, in <module>\nNameError: name \'x\' is not defined\n