Merge branch 'speedup/remove-dispatch-exceptions' into 'master'

Remove exception throwing from hot path in dispatch

See merge request !24
2 jobs for master in 547 minutes and 31 seconds (queued for 6 seconds)
Status Name Job ID Coverage
  Test
failed job_clang_amd64 #4587
amd64

09:07:28

failed job_gcc_amd64 #4586
amd64

06:42:13

 
Name Stage Failure
failed
job_clang_amd64 Test
<doctest default (setup code)[0]>:54: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
figure()
<doctest gt_format (setup code)[0]>:54: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
figure()
<doctest default (setup code)[0]>:54: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
figure()
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit status 1
failed
job_gcc_amd64 Test
<doctest default[4]>:1: UserWarning: tight_layout: falling back to Agg renderer
tight_layout()
<doctest default[3]>:1: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
figure(figsize=(8, 4))
<doctest default[7]>:1: UserWarning: tight_layout: falling back to Agg renderer
tight_layout()
Running after_script
Uploading artifacts for failed job
ERROR: Job failed: exit status 1