sematic
sematic copied to clipboard
Don't mark remote executions as succeeded until their outputs have been cast/validated
If the root run is NOT inline, and it returns an output which is not valid for the expected output type, the run can still be marked successful, but the resolver can error out with something like this:
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/worker.py", line 175, in main
raise e
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/worker.py", line 148, in main
resolver.resolve(future)
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/state_machine_resolver.py", line 64, in resolve
raise e
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/state_machine_resolver.py", line 50, in resolve
self._wait_for_scheduled_run()
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/cloud_resolver.py", line 123, in _wait_for_scheduled_run
self._process_run_output(run_id)
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/cloud_resolver.py", line 149, in _process_run_output
self._update_future_with_value(future, value)
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/state_machine_resolver.py", line 247, in _update_future_with_value
self._handle_future_failure(future, exception)
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/state_machine_resolver.py", line 225, in _handle_future_failure
raise exception
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/resolvers/state_machine_resolver.py", line 245, in _update_future_with_value
value = future.calculator.cast_output(value)
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/calculator.py", line 159, in cast_output
return self.cast_value(
File "/main_image.binary.runfiles/pip_deps_sematic/site-packages/sematic/calculator.py", line 185, in cast_value
raise TypeError(