Minimal, modern embedded V8 for Python.
Project description
Minimal, modern embedded V8 for Python.
Free software: ISC license
Features
Unicode support
Thread safe
Re-usable contexts
Binary object is Python agnostic
MiniRacer can be easily used by Django or Flask projects to minify assets, run babel or compile CoffeeScript.
Examples
py_mini_racer is straightforward to use:
>>> from py_mini_racer import py_mini_racer
>>> ctx = py_mini_racer.MiniRacer()
>>> ctx.eval('1+1')
2
>>> ctx.eval("var x = {company: 'Sqreen'}; x.company")
u'Sqreen'
>>> print ctx.eval(u"'\N{HEAVY BLACK HEART}'")
❤
>>> ctx.eval("var fun = () => ({ foo: 1 });")
>>> ctx.call("fun")
{u'foo': 1}
Variables are kept inside of a context:
>>> ctx.eval("x.company")
u'Sqreen'
[1,2,3].map(n => n + 1);
Compatibility
PyMiniRacer is only compatible with Python 2.7 at the moment. Python 3 support is on its way.
Binary builds availability
The PyMiniRacer binary builds have been tested on x86_64 with:
OSX 10.11
Ubuntu >= 14.04
Debian >= 8
CentOS >= 7
You need pip >= 8.1 to install the wheels - you can check and upgrade yours in this way:
$ pip --version
$ pip install --upgrade pip
It should work on any Linux with a libc >= 2.17 and a wheel compatible pip (>= 8.1).
If you have a up-to-date pip and it doesn’t use a wheel, you might have an environment for which no wheel is built. Please open an issue.
Installation
We built Python wheels (prebuilt binaries) for OSX 64 bits and Linux 64 bits - most recent distributions. You need pip >= 1.4 and setuptools >= 0.8.
$ pip install py-mini-racer
Build
You can build v8 with the command:
$ python setup.py build_v8
You can also build the ctype extension:
$ python setup.py build_ext
Which automatically builds v8.
You can generate a wheel with the command:
$ python setup.py bdist_wheel
which builds v8, the extension, and generates a wheel.
Tests
If you want to run the tests, you need to build V8 first, then launch:
$ python setup.py test --addopts tests
Credits
Built with love by Sqreen.
PyMiniRacer launch was described in this blog post.
PyMiniRacer is inspired by mini_racer, built for the Ruby world by Sam Saffron.
Tools used in rendering this package:
Todo
Lower libc version needed. Export V8 version. Fix circular structures export.
History
0.1.6 (2016-08-12)
Add error message when py_mini_racer sdist fails to build asking to update pip in order to download the pre-compiled wheel instead of the source distribution.
0.1.5 (2016-08-04)
Build py_mini_racer against a static Python. When built against a shared library python, it doesn’t work with a static Python.
0.1.4 (2016-08-04)
Ensure JSEvalException message is converted to unicode
0.1.3 (2016-08-04)
Fix extension loading for python3
Add a make target for building distributions (sdist + wheels)
Fix eval conversion for python 3
0.1.2 (2016-08-03)
Fix date support
Fix Dockerfile for generating python3 wheels
0.1.1 (2016-08-02)
Fix sdist distribution.
0.1.0 (2016-08-01)
First release on PyPI.
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
Built Distributions
Hashes for py_mini_racer-0.1.6-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c928b81b789cb5cfa93eb62c4c3892509c40ffc1fa0b9449427c2cf552462992 |
|
MD5 | 6dc4aaaf5a473ce21866b84632e46cfc |
|
BLAKE2b-256 | 745fb00fa021ad40ef5b89c613768c0777a62ce8764f587274065a81945a068e |
Hashes for py_mini_racer-0.1.6-cp35-cp35m-macosx_10_11_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b3da8a4c60aa7fa7c6f510e5cc87db01efb2bb830e5c07bd30ae72dbf110ee6 |
|
MD5 | ef4564d92d59a7aca22603204c8b537b |
|
BLAKE2b-256 | 29a4a3de28af240049167ed74b4142eb11b641a3ecbce8bef2e78d4c90c0350c |
Hashes for py_mini_racer-0.1.6-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95284f711d2809b24a0c7492746a80ae8655739abd1b57b108fdcde5994659d5 |
|
MD5 | db166ae75bd7452d1e7f64ae92e2fa7f |
|
BLAKE2b-256 | 5cad184a13bb2923e57efbe6775eac5c801a834e6f65a59bbc8e6b5cccb40797 |
Hashes for py_mini_racer-0.1.6-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bf0efe67cffbcfad6861fd8da5c6df1014007d10d8ad1cd7c12190772a12f12 |
|
MD5 | 7031d26bffb8351b78abc36ab876c5d5 |
|
BLAKE2b-256 | 1c58545a88d01244ecbb0b5e800defab111645301d109ae6ccd214afddfc399e |
Hashes for py_mini_racer-0.1.6-cp27-cp27m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67919e7e1dc57e68be34ca4cadac5eb0e1fb992c8d6c854eee5df10a7731647a |
|
MD5 | c4cef8f6f860003be23b45700f220300 |
|
BLAKE2b-256 | b1aaf738dc91d6c379d6c2ee2a604562d35b46518c7711d6b9daa1ca377fe09f |
Hashes for py_mini_racer-0.1.6-cp27-cp27m-macosx_10_11_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9aeb66104280d55a94ee7249648d611bf4fa13585b7182aa20907b0d1995bea |
|
MD5 | 96260d29b16a8f7c7bde78d299b71e96 |
|
BLAKE2b-256 | 4328dca26718b91a09089274ba8a882d77a576b215f9db4cb6cf9da85d31373a |