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'
PyMiniRacer is ES6 capable:
>>> ctx.eval("[1,2,3].includes(5)")
False
Compatibility
PyMiniRacer is compatible with Python 2 and Python 3. Wheels are generated for python 2.7 and python 3.4 to python 3.6.
Binary builds availability
The PyMiniRacer binary builds have been tested on x86_64 with:
OSX 10.10
Ubuntu >= 12.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.
Notes for building on OSX
- The legacy Python binary builds (OSX 10.6) need to be downloaded from:
They will allow to build a wheel compatible with former OSX versions.
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
UNRELEASED
0.1.9 (2017-03-24)
Fix the compilation for Ubuntu 12.04 and glibc < 2.17.
0.1.8 (2017-03-02)
Update targets build for better compatibility with old Mac OS X and linux platforms.
0.1.7 (2016-10-04)
Improve general performances of the JS execution.
Add the possibility to build a different version of V8 (for example with debug symbols).
Fix a conflict that could happens between statically linked libraries and dynamic ones.
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.9-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a59dc2aef2aed7346faed78133e52ad7b97d91950888bcafa75f7d4f7b7a585b |
|
MD5 | b70344b89513c1652980756044186efa |
|
BLAKE2b-256 | 854307d73f946050ec7d8a043da17085558de8d0fa55a39f807d3f6ac56e99a1 |
Hashes for py_mini_racer-0.1.9-cp36-cp36m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b345ab281be12dcc66da29aa7eaa21cf36cb9a3d9ac2be09cbf7a28a20719b2 |
|
MD5 | c23bb7e557aaf410dabb8663f2b99035 |
|
BLAKE2b-256 | 02dc1298b45c4198eaa0c18aaf7bf5139ae8d9a3dada0cc190bce59113c413c8 |
Hashes for py_mini_racer-0.1.9-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3adb344fcefa09b50a10da8a60015f0fe2880dc74088296eba0df5221b32b9bc |
|
MD5 | aefe87296473d49afc9c080690946299 |
|
BLAKE2b-256 | aa542f96d8ab3e4a7bd53712f6f4a9b5dc8e66b180137101d106add9524f10c1 |
Hashes for py_mini_racer-0.1.9-cp35-cp35m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54ba5a7588358834e48c20c0c671ca20e1e03e05e23a5b72128ffc23dd0dbb80 |
|
MD5 | fba5a7b3111d670a45af51634de69b22 |
|
BLAKE2b-256 | a7e5b09ccfa6e13971b0c441a1d1d8ddfd53ee8e93d738ac49f6bd2309143ffd |
Hashes for py_mini_racer-0.1.9-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30879d9a6bb989ee1f507ad23e1399a33518a9edfc9fa46bcf04d212170a963b |
|
MD5 | c79fbf32686c05d7d947a5c9282e7eff |
|
BLAKE2b-256 | 47e9676ac48d4c4a1c24e6091b9d9c7c24327a8eb6232815518c63d5413a543f |
Hashes for py_mini_racer-0.1.9-cp34-cp34m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23aeee037b6ba8ffd171c2457122f9d823e872a876b921a28fc9253ed5278f0a |
|
MD5 | b928bac74b39e7a56c3156d9f3516675 |
|
BLAKE2b-256 | 4c93930a5db735b51fad5bebfb689d911496fe90082fef14fa14bee239c6c4a1 |
Hashes for py_mini_racer-0.1.9-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2463f80c230d606b73504d81d734e15febb85a483b932dc796dbb5f397ece55a |
|
MD5 | b2b03ed459d2d85e27b5e6ff6985b61e |
|
BLAKE2b-256 | 21183bab9d92944705d5715a75d5bc5eebaf728264fcd225d21dcdac087cecf6 |
Hashes for py_mini_racer-0.1.9-cp27-cp27m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1552429e25ff3a3ec04bd40899661ea2557fa3393371564eb28a18e23b22aea6 |
|
MD5 | df501a811bafb9616c3c22c54b2f3fd8 |
|
BLAKE2b-256 | 336550981d83ceca51a9019bc43709abb8e07721d9278fc1be9afde660431a60 |
Hashes for py_mini_racer-0.1.9-cp27-cp27m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f2dbf2e1cc4d67447b252da318860213fc4688890f230b66560f8f901b9a4d6 |
|
MD5 | 520648036a23bf3ad851f0a12960e60e |
|
BLAKE2b-256 | fb1e19dd2b61058d4b3daccdf9fe41ad3820d3cf58a2184e8e1454f0caef2d00 |