Skip to main content

PyEvalJS

PyEvalJS is a python wrapper for Microsoft Chakra engine, it act as a bridge between the Python and JavaScript objects, and with this module you can easily run JavaScript Code in Python without having to install nodejs.

Installation

pip install PyEvalJS

Usage

Execute a script

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']

Call a function

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.compile("""
...     function add(x, y) {
...         return x + y;
...     }
... """)
>>> runtime.call("add",1,2)
3

or just put args into the script

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.eval("""
...     function add2(num) {
...         return num+2;
...     } add2(8);""")
10

or by passing parameters

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.set_variable("a",8)
True
>>> runtime.eval("""
...     function add2(num) {
...         return num+2;
...     } add2(a);""")
10

Passing parameters

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.set_variable("name", ['Jim','Bob','Tour'])
True
>>> runtime.get_variable("name")
['Jim', 'Bob', 'Tour']

Use a JavaScript module

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.require("./js/crypto-js.js")  #import CryptoJS
>>> runtime.compile("""
...     function encryptByDESModeCBC(key,message) {
...         var keyHex = CryptoJS.enc.Utf8.parse(key);
...         var ivHex = CryptoJS.enc.Utf8.parse(key);
...         encrypted = CryptoJS.DES.encrypt(message, keyHex, {
...                 iv:ivHex,
...                 mode: CryptoJS.mode.CBC,
...                 padding:CryptoJS.pad.Pkcs7
...             }
...         );
...         return encrypted.ciphertext.toString();
...     }""")
>>> runtime.call("encryptByDESModeCBC",'1234','this is a test')
'94b7b0cc2b71165ea067868f595fc03a'

Call the same function for each item in the list

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.compile("""
...     function add2(num) {
...         return num+2;
... }""")
>>> runtime.call_for_each("add2",[1,2,4,6,5])
[3, 4, 6, 8, 7]

Supports

  • Python2 >= 2.7
  • Python3 >= 3.4

Platform

  • macOS x64
  • Linux x64
  • Windows x86/x64 (tested on Windows 10 x64, Python 3.7)

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Licence

Code released under the MIT license

Release files for PyEvalJS 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyEvalJS 1.0.0
File Size Uploaded
PyEvalJS-1.0.0.tar.gz 38.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyEvalJS 1.0.0
File Interpreter ABI Platform
PyEvalJS-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 77.2 MB

Release files / PyEvalJS-1.0.0.tar.gz

Download URL PyEvalJS-1.0.0.tar.gz
Size 38.5 MB
Tags Source
SHA-256 checksum
How to use checksums
c2928bbb1e9705cf7cae00d8f8bd82b720c0fd796bb5cf42f2a1e92d34114cff
BLAKE2b-256 checksum
How to use checksums
2c70b3c76ad794e9aa2366100f673b06e5ce0c94e37b9f41c45bc28658ce636b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.4

Release files / PyEvalJS-1.0.0-py3-none-any.whl

Download URL PyEvalJS-1.0.0-py3-none-any.whl
Size 38.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e6fa329b9c73f264a4e734955cb970b0e22f675fcfb562fd48d988e2071c5851
BLAKE2b-256 checksum
How to use checksums
f3fb575b2141d85990ad81a57dd8bdac9cca43fff01adccfaadc0d13dd6a7b89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.4

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page