This upgrade also includes complete elimination of use spec
from the backend codebase, completing the long running migration
to fully use malli for validation and decoding.
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
```