This project implements the
Ubi-Interact Protocol
in Python. Ubi Interact is a framework developed at TUM (Technical
University of Munich) for developing distributed and reactive
applications, the main focus of the Python node is to allow the
implementation of processing-modules
in Python.
Documentation is available here.
The Ubi-Interact-Python-Node
should be compatible with all python
versions >= 3.7. If you experience bugs feel free to report them.
The Ubi-Interact-Python-Node
aims to be cross-platform, working with
most interesting computational packages is easier under Linux
nonetheless. Installation via pip
is recommended, if you use
something else (e.g.``Anaconda``) refer to the documentation of your
python distribution / package management tool how to install packages
from pypi.
You can use the Windows python wrapper py.exe
(detailed instructions
in the Python
Documentation) to
choose the python version of your environment.
If you plan to use a virtual environment - which is recommended - typically an Unrestricted execution policy is needed to run the activation script for the python environment. The following instructions assume you are using Powershell, and have the right ExecutionPolicy set.
- Python version 3.7 or greater
- Virtual Environment (recommended) with pip installed
(
py -m venv env
followed by./env/Scripts/activate.ps1
) - Continue at PyPi
If you are not using Windows, you probably have a working python
installation. Sometimes the different versions have aliases such as
python3
, so make sure to create the virtual environment with the
appropriate python executable (or specify the executable for the
environment during creation).
- Python version 3.7 of greater
- Virtual Environment (recommended) with pip installed
(e.g.
python3 -m venv env
followed bysource ./env/bin/activate
) - Continue at PyPi
After activating the environment, install the package from pypi. The
package supplies different extras, to install additional
dependencies for optional features. You can make sure everything is
working correctly by calling the ubii-client
script which gets
installed as part of the cli
extra.
$ python -m pip install ubii-node-python[cli] $ ubii-client --help
Instead of installing from PyPi you can clone the repository and install the package “from source”. Editable installs are supported.
$ git clone git@github.com:SandroWeber/ubii-node-python.git $ cd ubii-node-python $ < create and activate virtual env > $ pip install -e .[cli] $ ubii-client --help
This packages uses extras.
[test]
Requirements to runpytest
suite if you install the package from source, and not from PyPi[cli]
Installs a CLI script which runs the node and auto-discovers installed Processing Modules (see below)[docs]
Install requirements to build documentation
To use the ubii-node-python
package to implement your own python
nodes refer to the package
documentation. To start a python client
refer to CLI.
Basic functionality is provided through a command line interface which allows to run a python node which is able to import and load processing modules.
$ ubii-client --help usage: ubii-client [-h] [--processing-modules PROCESSING_MODULES] [--no-discover] [--module-args MODULE_ARGS] [--verbose] [--debug] [--log-config LOG_CONFIG] options: -h, --help show this help message and exit --processing-modules PROCESSING_MODULES Import processing modules to load. You can also use the format {name}:{type} to load them with specific names. --no-discover Don't use the automatic processing module discovery mechanism --module-args MODULE_ARGS Format {name}:{key}={value}(,{key}={value})*, e.g. my- module:tags=['custom'],description='Wow!' --verbose, -v --debug --log-config LOG_CONFIG
(non obvious) arguments:
--debug
Debug mode changes the exception handling, and increases verbosity. In debug mode the Node does not try to handle exceptions, and fails loudly--log-config
optional path to a .yaml file containing a dictionary of logging options consistent with the logging.config.dictConfig format (example config)--no-discover
flag to turn off auto discovery of processing modules via entry points--processing-modules
specify a list of import paths for Ubi Interact Procesing Modules implemented using theubi-interact-python
framework, see processing-modules. Use it together with auto discovery during development or as a fallback. Also allows to specify alternative names.--module-args
specify a mapping of processing module names to argument maps, e.g.--module-args test:name='test'
to specify argumentname
as'test'
for the module loaded with nametest
.
Below is a list of processing modules that are compatible with the
python node. To try them, install them inside the same virtual
environment (refer to the documentation of the specific module). If you
develop new Processing Modules, use the entry point group
ubii.processing_modules to advertise them in your package, so that the
ubii-client
script (or your own implementation) can discover them.
Read the setup.cfg
configs of the example modules below and the
setuptools
documentation
for more details.
Example usage after install of module:
$ pip install ubii-processing-module-ocr $ ubii-client > Loaded processing module factories <class 'ubii.processing_modules.ocr.tesseract_ocr.TesseractOCR_EAST'>, ... > ...
or with cli argument to only load specific processing modules (also turning off auto discovery in this example)
$ pip install ubii-processing-module-ocr $ ubii-client --no-discover --processing-modules ubii.processing_modules.ocr.tesseract_ocr.TesseractOCR_EAST > Loaded processing module factories <class 'ubii.processing_modules.ocr.tesseract_ocr.TesseractOCR_EAST'> > ...