Installation ============ IMMP uses the latest and greatest Python features (that is, native ``async``/``await`` syntax and asynchronous generators), and therefore requires at least **Python 3.6**. From PyPI --------- Install the core module from `PyPI `_: .. code-block:: console $ pip install immp This only pulls in the core requirements; it doesn't include dependencies for most plugs and hooks, see below for how to obtain them. From the repo ------------- Check out a copy of the repository from `GitHub `_: .. code-block:: console $ git clone git@github.com:Terrance/IMMP.git $ cd IMMP Then install IMMP as a link to the checkout: .. code-block:: console $ pip install -e . If you don't intend to work on the code and just want the bleeding edge, you can alternatively install with pip directly: .. code-block:: console $ pip install git+https://github.com/Terrance/IMMP.git With dependencies ----------------- For Python library dependencies, review the :ref:`appendix/index:Python requirements` to see what each plug and hook needs. The setup script defines a number of *extras* which can be used to pull in one or more categories of requirements: .. code-block:: console $ pip install immp[runner,uv,db,web,webui,console,sync,discord,hangouts,slack,telegram] If installed from the repo, replace ``immp`` with ``.`` as above to use the current directory. Alternatively, you can just install all possible dependencies with the included requirements file: .. code-block:: console $ pip install -r requirements.txt Using Docker ------------ A Dockerfile is included in the repo, and an image can be built using the standard commands (here assuming you have configured Docker to accept commands from non-root users): .. code-block:: console $ docker build . --tag immp To run it, you need to bind a config file to ``/data/config.yaml``. If you need auxiliary files, you can bind-mount the entire ``/data`` directory to provide them from the host: .. code-block:: console $ docker run --mount type=bind,source=/var/lib/immp,target=/data immp IMMP will be run using ``/data`` as its working directory, so you can reference other files from your config without needing to specify the full path. This will run without the ``-w`` flag, so config changes will not be written back on exit -- override the command if you need this. Note that Docker mounts don't allow changing the owner or group, and will default to UID/GID 1000. This means the files on the host must be writeable by UID 1000, or be world-writeable. If your host owner or group is different, you can set the ``uid`` and ``gid`` build args to match: .. code-block:: console $ docker build --build-arg uid=1002 --build-arg gid=1001 . --tag immp