Installation
============

Installation of the Modelverse is rather simple, as is its simple usage.
We first introduce the dependencies of the Modelverse, followed by installation instructions for the Modelverse itself.
To check whether or not the installation was successful, users can run the enclosed tests.

Dependencies
------------

The Modelverse reference implementation is relatively dependency-free.
As its code is written in Python 2, a working Python 2.7 interpreter is necessary.
Python 3 should also be supported, although then a Python 3 compatible version of SCCD has to be used as well.
The `SCCD <https://msdl.uantwerpen.be/git/simon/SCCD>`_ module needs to be installed for both the client and server.
Full installation instructions can be found on the project website.

To run the tests, the `pytest <http://docs.pytest.org/en/latest/>`_ module must be installed.

Pip
^^^

To install all dependencies automatically, using Pip, a *requirements.txt* file is provided.
This can be invoked as follows::

    pip install -r requirements.txt

PyPy
^^^^

In case you want to use PyPy, offering increased performance, you need to install both dependencies in PyPy as well.
For SCCD, you can simply install it using PyPy instead of CPython.

For pytest, you also need to install all of pytest's dependencies, and pytest itself.
The easiest way to do this is through *pip*, which you also have to install first for PyPy::

    wget https://msdl.uantwerpen.be/files/get-pip.py
    pypy get-pip.py --user
    pypy -m pip install pytest --user

Installation
------------

The Modelverse is merely a set of Python scripts, and there is no real installation, except for its dependencies.
As such, you will only have to download the `Modelverse source code <https://msdl.uantwerpen.be/git/yentl/modelverse>`_.

You can now run the scripts in the *scripts/* directory using Python.
In the next section, we go deeper into the relevant scripts.

Tests
-----

To make sure that everything is working correctly, you can execute the tests with the script *scripts/run_tests.sh*, executed as follows::

    python scripts/run_tests.py

If you prefer to use PyPy, or any other Python interpreter, you can simply replace *python* with the alternative interpreter.
The tests, and all other components of the Modelverse, will make sure that all subsequently spawned instances use the same interpreter.
