Skip to main content

Write Python APIs, then call them from JavaScript using the V8 engine.

Project description

Write Python APIs, then call them from JavaScript using the V8 engine.

>>> from v8py import Context
>>> context = Context()

>>> def print_hello():
...     print 'Hello, world!'
>>> context.expose(print_hello)
>>> context.eval('print_hello()')
Hello, world!

>>> class Greeter(object):
...     def greet(self, thing):
...         print 'Welcome, {}!'.format(thing)
>>> context.expose(Greeter)
>>> context.eval('g = new Greeter()')
>>> context.eval('g.greet("V8Py")')
Welcome, V8Py!

That kind of thing.

Almost everything you’d expect to work just works, including:

  • Functions
  • Classes (including old style classes, because I can)
  • Inheritance (from the last base class, other base classes are treated as mixins)
  • Data descriptors
  • Static methods and class methods
  • Exceptions (they even subclass from Error!)
  • Fully meme-compliant

Installation

$ pip install v8py

Heads up: it’ll be stuck at “Running setup.py install for v8py” for literally hours. It’s downloading and building V8, which is a really big program. If you want to contribute scripts for Travis CI to build and upload wheels for Mac/Linux, please do so.

Misc

There is no documentation of any of this yet. No docstrings. The best place to look to find out how to use it is the tests.

I’m writing this so I can create a really lightweight special-purpose webdriver (no visual rendering, no asynchronous XHRs), and I need some way of implementing the DOM in Python. So there will definitely be enough functionality for that.

If you’d like to use it for something else, by all means go ahead, but you may find something that doesn’t quite “just work”, or works kind of strangely, or just stuff I forgot to test. If you find anything, please submit an issue. Or, even better, send a pull request.

Last but not least, don’t forget to

https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
v8py-0.9.14.tar.gz (44.1 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page