Python defines [`RuntimeError`](https://docs.python.org/3.7/library/exceptions.html#RuntimeError)
but it does not define `RuntimeException` so a `NameError` will be raised when any of these lines
are executed.
% `python3 -c "RuntimeException('This is a test...')"`
```
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'RuntimeException' is not defined
```
% `flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics`
```
./backend/scripts/manage.py:22:15: F821 undefined name 'RuntimeException'
raise RuntimeException(f"invalid PREPL_URI: {PREPL_URI}")
^
./backend/scripts/manage.py:25:15: F821 undefined name 'RuntimeException'
raise RuntimeException(f"invalid PREPL_URI: {PREPL_URI}")
^
./backend/scripts/manage.py:49:23: F821 undefined name 'RuntimeException'
raise RuntimeException("unexpected response from PREPL")
^
3 F821 undefined name 'RuntimeException'
3
```
Python defines [`RuntimeError`](https://docs.python.org/3.7/library/exceptions.html#RuntimeError)
but it does not define `RuntimeException` so a `NameError` will be raised when any of these lines
are executed.
% `python3 -c "RuntimeException('This is a test...')"`
```
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'RuntimeException' is not defined
```
% `flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics`
```
./backend/scripts/manage.py:22:15: F821 undefined name 'RuntimeException'
raise RuntimeException(f"invalid PREPL_URI: {PREPL_URI}")
^
./backend/scripts/manage.py:25:15: F821 undefined name 'RuntimeException'
raise RuntimeException(f"invalid PREPL_URI: {PREPL_URI}")
^
./backend/scripts/manage.py:49:23: F821 undefined name 'RuntimeException'
raise RuntimeException("unexpected response from PREPL")
^
3 F821 undefined name 'RuntimeException'
3
```
It fixes the v7 compatibility issues. Now, adding the -Dim4java.useV7=true
property to the java command when executing the penpot backend bundle it
switches to use the `magick` (ImageMagick v7 CLI) instead of `convert`
and `identify`.
This commit replaces rj9a with funcool/yetti ring adapter.
Cleans the websocket api and makes it fully asynchronous.
Also a common websocket protocol abstraction that will allow
more easy path for creating new websocket based services.