Metadata-Version: 1.1
Name: py-mini-racer
Version: 0.1.14
Summary: Minimal, modern embedded V8 for Python.
Home-page: https://github.com/sqreen/PyMiniRacer
Author: Sqreen
Author-email: hey@sqreen.io
License: ISCL
Description: ===============================
        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:: https://github.com/sqreen/PyMiniRacer/raw/master/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'
        
        
        You can give directly a custom JSON encoder when sending non-JSON encodable
        parameters:
        
        .. code-block:: python
        
            import json
        
            from datetime import datetime
        
            class CustomEncoder(json.JSONEncoder):
        
                    def default(self, obj):
                        if isinstance(obj, datetime):
                            return obj.isoformat()
        
                        return json.JSONEncoder.default(self, obj)
        
        
        .. code-block:: python
        
            >>> ctx.eval("var f = function(args) { return args; }")
            >>> ctx.call("f", datetime.now(), encoder=CustomEncoder)
            u'2017-03-31T16:51:02.474118'
        
        
        PyMiniRacer is ES6 capable:
        
        .. code-block:: python
        
            >>> ctx.eval("[1,2,3].includes(5)")
            False
        
        V8 heap information can be retrieved:
        
        .. code-block:: python
        
            >>> ctx.heap_stats()
            {u'total_physical_size': 1613896,
             u'used_heap_size': 1512520,
             u'total_heap_size': 3997696,
             u'total_heap_size_executable': 3145728,
             u'heap_size_limit': 1501560832}
        
        
        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 >= 7
        * CentOS >= 6
        
        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.12 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.
        
        .. 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.
        
        Notes for building on OSX
        '''''''''''''''''''''''''
        
        The legacy Python binary builds (OSX 10.6) need to be downloaded from:
            https://www.python.org/downloads/
        
        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:
        
        .. 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
        ----
        
        Export V8 version.
        Fix circular structures export.
        
        
        
        
        History
        -------
        
        0.1.14 (2018-05-25)
        ---------------------
        
        * Add support for pip 10
        * Update package metadata
        
        0.1.13 (2018-03-15)
        ---------------------
        
        * Add heap_stats function
        * Fix issue with returned strings containing null bytes
        
        0.1.12 (2018-17-04)
        ---------------------
        
        * Remove dependency to enum
        
        0.1.11 (2017-07-11)
        ---------------------
        
        * Add compatibility for centos6
        
        0.1.10 (2017-03-31)
        ---------------------
        
        * Add the possibility to pass a custom JSON encoder in call.
        
        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.
        
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
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
