[<img src="http://pybee.org/project/projects/bridges/batavia/batavia.png" alt="image" width="72" />](https://pybee.org/batavia)

Batavia
=======

[![py-version](https://img.shields.io/pypi/pyversions/batavia.svg)](https://pypi.python.org/pypi/batavia) [![pypi-version](https://img.shields.io/pypi/v/batavia.svg)](https://pypi.python.org/pypi/batavia) [![pypi-status](https://img.shields.io/pypi/status/batavia.svg)](https://pypi.python.org/pypi/batavia) [![license](https://img.shields.io/pypi/l/batavia.svg)](https://github.com/pybee/batavia/blob/master/LICENSE) [![build-status](https://circleci.com/gh/pybee/batavia.svg?style=shield&circle-token=:circle-token)](https://circleci.com/gh/pybee/batavia) [![gitter](https://badges.gitter.im/pybee/general.svg)](https://gitter.im/pybee/general)

**Batavia is an early alpha project. If it breaks, you get to keep all the shiny pieces.**

Batavia is an implementation of the Python virtual machine, written in Javascript. With Batavia, you can run Python bytecode in your browser.

It honors Python 3.4.4+ syntax and conventions, and allows you to reference objects and classes defined natively in JavaScript.

Quick Start
-----------

### Prerequisites

Batavia requires a Python 3.4 or Python 3.5 installation, and a virtualenv to run it all in. Python 3.6 is not yet supported.

You also need to have a recent install of [Node.js](https://nodejs.org). If your version of Node is outdated, you can update it using the command:

    $ npm install npm@latest -g

Check the [Setting up your environment](http://pybee.org/contributing/first-time/setup/) for configuration help.

### Downloading and Installing

1.  Clone the code repositories:

        $ mkdir pybee
        $ cd pybee
        $ git clone https://github.com/pybee/batavia

2.  Setup a virtualenv (for other environments, see [Getting Started](https://batavia.readthedocs.io/en/latest/intro/tutorial-0.html)).

Linux/Unix/Mac:

    $ virtualenv --python=$(which python3) venv
    $ . venv/bin/activate
    $ cd batavia
    $ pip install -e .

Windows:

    > virtualenv venv
    > venv\Scripts\activate
    > cd batavia
    > pip install -e .

1.  Install [Node.js](https://nodejs.org). You must have a recent version of Node; we do our testing using v6.9.1. Once you've installed Node, you can use it to install the Javascript dependencies and compile the Batavia library:

        $ npm install

2.  Compile the Batavia library and bundle it’s dependencies:

        $ npm run build

For more detailed setup instructions, see the [Getting Started tutorial](https://batavia.readthedocs.io/en/latest/intro/tutorial-0.html)

### Running Batavia in the browser

After you have setup the local installation of Batavia, you can now run Python in the browser:

    $ cd testserver
    $ pip install -r requirements.txt
    $ ./manage.py runserver

then open a web browser at [<http://localhost:8000>](http://localhost:8000)

For more detailed instructions, see the [Python In The Browser](http://batavia.readthedocs.io/en/latest/intro/tutorial-1.html) guide.

Documentation
-------------

[Documentation for Batavia](http://batavia.readthedocs.io/en/latest/) can be found on on [Read The Docs](https://readthedocs.org), including:

-   [Project Internals](http://batavia.readthedocs.io/en/latest/internals/index.html)
-   [Getting Started](http://batavia.readthedocs.io/en/latest/intro/index.html)
-   [So, why is it called "Batavia"?](https://batavia.readthedocs.io/en/latest/intro/faq.html#why-batavia)
-   [More Frequently Asked Questions](https://batavia.readthedocs.io/en/latest/intro/faq.html)

Contributing
------------

If you'd like to contribute to Batavia development, our [guide for first time contributors](http://pybee.org/contributing/how/first-time/) will help you get started.

If you experience problems with Batavia, [log them on GitHub](https://github.com/pybee/batavia/issues).

Community
---------

Batavia is part of the [BeeWare suite](http://pybee.org). You can talk to the community through:

-   [@pybeeware on Twitter](https://twitter.com/pybeeware)
-   The [pybee/general](https://gitter.im/pybee/general) channel on Gitter.

We foster a welcoming and respectful community as described in our [BeeWare Community Code of Conduct](http://pybee.org/community/behavior/).
