Metadata-Version: 2.0
Name: py-mini-racer
Version: 0.1.5
Summary: Minimal, modern embedded V8 for Python.
Home-page: https://github.com/sqreen/py_mini_racer
Author: Jean-Baptiste AVIAT, Boris FELD
Author-email: jb@sqreen.io, boris@sqreen.io
License: ISCL
Keywords: py_mini_racer
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Requires-Dist: enum34

===============================
Python Mini Racer
===============================

.. image:: https://img.shields.io/pypi/v/py_mini_racer.svg
        :target: https://pypi.python.org/pypi/py_mini_racer

Minimal, modern embedded V8 for Python.

* Free software: ISC license

.. image:: data/py_mini_racer.png

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:

.. code-block:: python

    >>> 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:

.. code-block:: python

    >>> ctx.eval("x.company")
    u'Sqreen'


.. code-block:: javascript

    [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:

.. code-block:: bash

    $ pip --version
    $ pip install --upgrade pip

It should work on any Linux with a libc >= 2.17 and a wheel compatible pip (>=
8.1).

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.

.. code:: bash

    $ pip install py-mini-racer

Build
-----

You can build v8 with the command:

.. code:: bash

    $ python setup.py build_v8

You can also build the ctype extension:

.. code:: bash

    $ python setup.py build_ext

Which automatically builds v8.

You can generate a wheel with the command:

.. code:: bash

    $ 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:

.. code:: bash

    $ python setup.py test --addopts tests

Credits
-------

Built with love by Sqreen_.

.. _Sqreen: https://www.sqreen.io

PyMiniRacer launch was described in `this blog post`_.

.. _`this blog post`: https://blog.sqreen.io/embedding-javascript-into-python/

PyMiniRacer is inspired by mini_racer_, built for the Ruby world by Sam Saffron.

.. _`mini_racer`: https://github.com/SamSaffron/mini_racer

Tools used in rendering this package:

*  Cookiecutter_
*  `cookiecutter-pypackage`_

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage

Todo
----

Lower libc version needed.
Export V8 version.
Fix circular structures export.




History
-------

UNRELEASED
---------------------

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.


