diff --git a/changes/issue4031.yaml b/changes/issue4031.yaml
new file mode 100644
index 0000000000..f521836e2c
--- /dev/null
+++ b/changes/issue4031.yaml
@@ -0,0 +1,2 @@
+fix:
+  - "Fix issue with fixed duration Paused states not resuming properly - [#4031](https://github.com/PrefectHQ/prefect/issues/4031)"
diff --git a/src/prefect/engine/task_runner.py b/src/prefect/engine/task_runner.py
index c1642076d6..66950ccf4a 100644
--- a/src/prefect/engine/task_runner.py
+++ b/src/prefect/engine/task_runner.py
@@ -25,6 +25,7 @@ from prefect.engine.state import (
     Failed,
     Looped,
     Mapped,
+    Paused,
     Pending,
     Resume,
     Retrying,
@@ -141,7 +142,13 @@ class TaskRunner(Runner):
         else:
             run_count = state.context.get("task_run_count", 1)
 
-        if isinstance(state, Resume):
+        # detect if currently Paused with a recent start_time
+        should_resume = (
+            isinstance(state, Paused)
+            and state.start_time
+            and state.start_time <= pendulum.now("utc")  # type: ignore
+        )
+        if isinstance(state, Resume) or should_resume:
             context.update(resume=True)
 
         if "_loop_count" in state.context:

diff --git a/tests/engine/test_task_runner.py b/tests/engine/test_task_runner.py
index 534537c29f..9be34ec8fd 100644
--- a/tests/engine/test_task_runner.py
+++ b/tests/engine/test_task_runner.py
@@ -429,6 +429,23 @@ class TestInitializeRun:
             result = TaskRunner(Task()).initialize_run(state=Resume(), context=ctx)
             assert result.context.resume is True
 
+    def test_task_runner_puts_resume_in_context_if_paused_start_time_elapsed(self):
+        with prefect.context() as ctx:
+            assert "resume" not in ctx
+            result = TaskRunner(Task()).initialize_run(
+                state=Paused(start_time=pendulum.now("utc")), context=ctx
+            )
+            assert result.context.resume is True
+
+    def test_task_runner_ignores_resume_in_context_if_paused_start_time_in_future(self):
+        with prefect.context() as ctx:
+            assert "resume" not in ctx
+            result = TaskRunner(Task()).initialize_run(
+                state=Paused(start_time=pendulum.now("utc").add(seconds=10)),
+                context=ctx,
+            )
+            assert "resume" not in ctx
+
     def test_task_runner_puts_checkpointing_in_context(self):
         with prefect.context() as ctx:
             assert "checkpointing" not in ctx

duration parameter is not taken into account from task_pause
## Description
<!-- A clear description of the bug -->
`duration` parameter in `prefect.utilities.tasks.pause_task` seems to be ignored. Based on documentation, if `duration` is specified, then, the task should be resumed after a period of time



## Expected Behavior
<!-- What did you expect to happen instead? -->
Resume task run after specified period of time.



## Reproduction
<!-- A minimal example that exhibits the behavior. -->
```
import datetime

from prefect import Flow, task
from prefect.utilities.tasks import pause_task


@task
def say_hello():
    pause_task("wait or approve..", datetime.timedelta(seconds=10))
    print('hello')


with Flow("My Flow") as f:
    say_hello()
```

When I executed this flow from the UI, I noticed that the task stays paused for ever (well, for 10 years :P )

![image](https://user-images.githubusercontent.com/8322266/105976777-42170600-6099-11eb-8cff-b4bcab172657.png)

**NOTE**: Every time the duration time is reached, the task's state changes like: Paused -> Resumed -> Paused.

## Environment
<!-- Any additional information about your environment

Optionally run `prefect diagnostics` from the command line and paste the information here. -->
```
{
  "config_overrides": {},
  "env_vars": [
    "PREFECT__CONTEXT__SECRETS__XXxx",
    "PREFECT__CONTEXT__SECRETS__XXxx"
  ],
  "system_information": {
    "platform": "Linux-5.8.0-7630-generic-x86_64-with-debian-bullseye-sid",
    "prefect_backend": "server",
    "prefect_version": "0.14.4",
    "python_version": "3.7.9"
  }
}
```

tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_puts_resume_in_context_if_paused_start_time_elapsed
tests/engine/test_task_runner.py::test_task_runner_has_logger tests/engine/test_task_runner.py::test_task_that_succeeds_is_marked_success tests/engine/test_task_runner.py::test_task_that_raises_success_is_marked_success tests/engine/test_task_runner.py::test_task_that_has_an_error_is_marked_fail tests/engine/test_task_runner.py::test_task_that_raises_fail_is_marked_fail tests/engine/test_task_runner.py::test_task_that_fails_gets_retried_up_to_max_retry_time tests/engine/test_task_runner.py::test_task_that_raises_retry_has_start_time_recognized tests/engine/test_task_runner.py::test_task_that_raises_retry_with_naive_datetime_is_assumed_UTC tests/engine/test_task_runner.py::test_task_that_raises_retry_gets_retried_even_if_max_retries_is_set tests/engine/test_task_runner.py::test_task_that_raises_skip_gets_skipped tests/engine/test_task_runner.py::test_task_that_has_upstream_skip_gets_skipped_with_informative_message tests/engine/test_task_runner.py::test_task_that_is_running_doesnt_run tests/engine/test_task_runner.py::test_running_task_that_already_has_finished_state_doesnt_run tests/engine/test_task_runner.py::test_task_runner_preserves_error_type tests/engine/test_task_runner.py::test_task_runner_raise_on_exception_when_task_errors tests/engine/test_task_runner.py::test_task_runner_does_not_raise_when_task_signals tests/engine/test_task_runner.py::test_task_runner_does_not_raise_on_exception_when_endrun_raised_by_mapping tests/engine/test_task_runner.py::test_task_runner_does_not_raise_on_exception_when_endrun_raised_by_state[state0] tests/engine/test_task_runner.py::test_task_runner_does_not_raise_on_exception_when_endrun_raised_by_state[state1] tests/engine/test_task_runner.py::test_task_runner_accepts_dictionary_of_edges tests/engine/test_task_runner.py::test_timeout_actually_stops_execution tests/engine/test_task_runner.py::test_task_runner_can_handle_timeouts_by_default tests/engine/test_task_runner.py::test_task_runner_handles_secrets tests/engine/test_task_runner.py::test_task_that_starts_failed_doesnt_get_retried tests/engine/test_task_runner.py::test_runner_checks_hashed_inputs_correctly tests/engine/test_task_runner.py::TestContext::test_task_runner_inits_with_current_context tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state0] tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state1] tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state2] tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state3] tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state4] tests/engine/test_task_runner.py::TestInitializeRun::test_states_without_run_count[state5] tests/engine/test_task_runner.py::TestInitializeRun::test_states_with_run_count[state0] tests/engine/test_task_runner.py::TestInitializeRun::test_states_with_run_count[state1] tests/engine/test_task_runner.py::TestInitializeRun::test_states_with_run_count[state2] tests/engine/test_task_runner.py::TestInitializeRun::test_states_with_run_count[state3] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_puts_resume_in_context_if_state_is_resume tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_ignores_resume_in_context_if_paused_start_time_in_future tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_puts_checkpointing_in_context tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_puts_tags_in_context tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state0] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state1] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state2] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state3] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state4] tests/engine/test_task_runner.py::TestInitializeRun::test_task_runner_doesnt_put_resume_in_context_if_state_is_not_resume[state5] tests/engine/test_task_runner.py::TestInitializeRun::test_unwrap_submitted_states tests/engine/test_task_runner.py::TestInitializeRun::test_unwrap_queued_states tests/engine/test_task_runner.py::TestInitializeRun::test_unwrap_nested_meta_states tests/engine/test_task_runner.py::TestCheckUpstreamFinished::test_with_empty tests/engine/test_task_runner.py::TestCheckUpstreamFinished::test_with_two_finished tests/engine/test_task_runner.py::TestCheckUpstreamFinished::test_raises_with_one_unfinished tests/engine/test_task_runner.py::TestCheckUpstreamFinished::test_raises_if_mapped_upstream_retrying tests/engine/test_task_runner.py::TestCheckUpstreamFinished::test_doesnt_raise_if_mapped_upstream_complete tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_empty tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_unskipped_states tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_raises_with_skipped tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_doesnt_raise_with_skipped_and_flag_set tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_raises_if_single_mapped_upstream_skipped tests/engine/test_task_runner.py::TestCheckUpstreamSkipped::test_doesnt_raise_if_single_mapped_upstream_skipped_and_edge_is_mapped tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_successful_pass tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_successful_fail tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_successful_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_failed_pass tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_failed_fail tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_failed_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_successful_pass tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_successful_fail tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_successful_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_failed_pass tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_failed_fail tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_any_failed_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_finished_pass tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_finished_fail tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_all_finished_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_manual_only tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_manual_only_empty tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_manual_passes_when_context_is_resume tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_custom_trigger_function_raise tests/engine/test_task_runner.py::TestCheckTaskTrigger::test_custom_trigger_returns_false tests/engine/test_task_runner.py::TestCheckTaskReady::test_ready_states[state0] tests/engine/test_task_runner.py::TestCheckTaskReady::test_ready_states[state1] tests/engine/test_task_runner.py::TestCheckTaskReady::test_ready_states[state2] tests/engine/test_task_runner.py::TestCheckTaskReady::test_ready_states[state3] tests/engine/test_task_runner.py::TestCheckTaskReady::test_ready_states[state4] tests/engine/test_task_runner.py::TestCheckTaskReady::test_not_ready_doesnt_run[state0] tests/engine/test_task_runner.py::TestCheckTaskReady::test_not_ready_doesnt_run[state1] tests/engine/test_task_runner.py::TestCheckTaskReady::test_not_ready_doesnt_run[state2] tests/engine/test_task_runner.py::TestCheckTaskReady::test_not_ready_doesnt_run[state3] tests/engine/test_task_runner.py::TestCheckTaskReady::test_not_ready_doesnt_run[state4] tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_empty_inputs tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_unkeyed_inputs tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_inputs_from_upstream tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_inputs_from_upstream_with_non_key_edges tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_inputs_from_upstream_failed tests/engine/test_task_runner.py::TestGetTaskInputs::test_get_inputs_from_upstream_mapped tests/engine/test_task_runner.py::TestCheckTaskCached::test_not_cached[state0] tests/engine/test_task_runner.py::TestCheckTaskCached::test_not_cached[state1] tests/engine/test_task_runner.py::TestCheckTaskCached::test_not_cached[state2] tests/engine/test_task_runner.py::TestCheckTaskCached::test_cached_same_inputs tests/engine/test_task_runner.py::TestCheckTaskCached::test_cached_different_inputs tests/engine/test_task_runner.py::TestCheckTaskCached::test_cached_duration tests/engine/test_task_runner.py::TestCheckTaskCached::test_cached_duration_fail tests/engine/test_task_runner.py::TestCheckTaskCached::test_reads_result_from_context_if_cached_valid tests/engine/test_task_runner.py::TestCheckTaskCached::test_state_kwarg_is_prioritized_over_context_caches tests/engine/test_task_runner.py::TestCheckTaskCached::test_reads_result_from_context_with_cache_key_if_cached_valid tests/engine/test_task_runner.py::TestCheckTaskCached::test_all_of_run_context_is_available_to_custom_cache_validators tests/engine/test_task_runner.py::TestSetTaskRunning::test_pending[state0] tests/engine/test_task_runner.py::TestSetTaskRunning::test_inputs_are_cached[state0] tests/engine/test_task_runner.py::TestSetTaskRunning::test_not_pending[state0] tests/engine/test_task_runner.py::TestSetTaskRunning::test_not_pending[state1] tests/engine/test_task_runner.py::TestSetTaskRunning::test_not_pending[state2] tests/engine/test_task_runner.py::TestSetTaskRunning::test_not_pending[state3] tests/engine/test_task_runner.py::TestRunTaskStep::test_running_state tests/engine/test_task_runner.py::TestRunTaskStep::test_not_running_state[state0] tests/engine/test_task_runner.py::TestRunTaskStep::test_not_running_state[state1] tests/engine/test_task_runner.py::TestRunTaskStep::test_not_running_state[state2] tests/engine/test_task_runner.py::TestRunTaskStep::test_not_running_state[state3] tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_success_signal tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_fail_signal tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_loop_signal tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_loop_signal_with_custom_message tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_skip_signal tests/engine/test_task_runner.py::TestRunTaskStep::test_raise_pause_signal tests/engine/test_task_runner.py::TestRunTaskStep::test_run_with_error tests/engine/test_task_runner.py::TestRunTaskStep::test_inputs tests/engine/test_task_runner.py::TestRunTaskStep::test_invalid_inputs tests/engine/test_task_runner.py::TestRunTaskStep::test_returns_success_with_hydrated_result_obj tests/engine/test_task_runner.py::TestRunTaskStep::test_returns_success_with_correct_result_type tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_without_checkpoint tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_checkpointing_in_config[True] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_checkpointing_in_config[None] tests/engine/test_task_runner.py::TestRunTaskStep::test_result_formatting_with_checkpointing tests/engine/test_task_runner.py::TestRunTaskStep::test_result_formatting_with_custom_formatter tests/engine/test_task_runner.py::TestRunTaskStep::test_result_formatting_with_templated_inputs tests/engine/test_task_runner.py::TestRunTaskStep::test_result_formatting_with_templated_inputs_inputs_take_precedence tests/engine/test_task_runner.py::TestRunTaskStep::test_result_formatting_with_input_named_value tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_checkpointing_in_context[True] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_checkpointing_in_context[None] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_is_checkpointed_if_result_handler_present[True] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_is_checkpointed_if_result_handler_present[None] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_for_parameter tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_bad_result_results_in_failed_state[True] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_bad_result_results_in_failed_state[None] tests/engine/test_task_runner.py::TestRunTaskStep::test_success_state_with_bad_result_and_checkpointing_disabled tests/engine/test_task_runner.py::TestCheckRetryStep::test_non_failed_states[state0] tests/engine/test_task_runner.py::TestCheckRetryStep::test_non_failed_states[state1] tests/engine/test_task_runner.py::TestCheckRetryStep::test_non_failed_states[state2] tests/engine/test_task_runner.py::TestCheckRetryStep::test_non_failed_states[state3] tests/engine/test_task_runner.py::TestCheckRetryStep::test_non_failed_states[state4] tests/engine/test_task_runner.py::TestCheckRetryStep::test_failed_zero_max_retry tests/engine/test_task_runner.py::TestCheckRetryStep::test_failed_one_max_retry tests/engine/test_task_runner.py::TestCheckRetryStep::test_failed_one_max_retry_second_run tests/engine/test_task_runner.py::TestCheckRetryStep::test_failed_retry_caches_inputs tests/engine/test_task_runner.py::TestCheckRetryStep::test_retrying_when_run_count_greater_than_max_retries tests/engine/test_task_runner.py::TestCheckRetryStep::test_retrying_with_start_time tests/engine/test_task_runner.py::TestCheckRetryStep::test_retrying_when_state_has_explicit_run_count_set tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states_with_results[state0] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states_with_results[state1] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states_with_results[state2] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states_with_results[state3] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states_with_results[state4] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states[state0] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states[state1] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states[state2] tests/engine/test_task_runner.py::TestCacheResultStep::test_non_success_states[state3] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_no_cache_for[all_inputs] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_no_cache_for[all_parameters] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_no_cache_for[duration_only] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_no_cache_for[partial_inputs_only] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_no_cache_for[partial_parameters_only] tests/engine/test_task_runner.py::TestCacheResultStep::test_success_state_with_cache_for tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target[state0] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target[state1] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target[state2] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target[state3] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target[state4] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_calls_state_handlers tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_not_exists[state0] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_not_exists[state1] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_not_exists[state2] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_not_exists[state3] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_not_exists[state4] tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_exists tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_exists_multiple_checks tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_uses_callable tests/engine/test_task_runner.py::TestTargetExistsStep::test_check_target_callable_uses_context tests/engine/test_task_runner.py::TestTargetExistsStep::test_target_respects_multiple_flow_runs tests/engine/test_task_runner.py::TestTargetExistsStep::test_target_with_callable_uses_run_context tests/engine/test_task_runner.py::TestTargetExistsStep::test_target_with_callable_uses_task_inputs tests/engine/test_task_runner.py::TestCheckScheduledStep::test_non_scheduled_states[state0] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_non_scheduled_states[state1] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_non_scheduled_states[state2] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_non_scheduled_states[state3] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_non_scheduled_states[state4] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_default_start_time[state0] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_default_start_time[state1] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_none_start_time[state0] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_future_start_time[state0] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_future_start_time[state1] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_future_start_time[state2] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_past_start_time[state0] tests/engine/test_task_runner.py::TestCheckScheduledStep::test_scheduled_states_with_past_start_time[state1] tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_are_called tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_on_failure_is_not_called tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_on_failure_is_called tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_on_trigger_failure_is_called tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_are_called_on_retry tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_can_return_none tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_are_called_on_failure tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_respect_signals tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handlers_handle_retry_signals tests/engine/test_task_runner.py::TestTaskStateHandlers::test_multiple_task_handlers_are_called tests/engine/test_task_runner.py::TestTaskStateHandlers::test_multiple_task_handlers_are_called_in_sequence tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handler_that_doesnt_return_state_or_none tests/engine/test_task_runner.py::TestTaskStateHandlers::test_task_handler_errors_are_logged tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_runner_handlers_are_called tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_runner_handlers_are_called_on_retry tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_runner_handlers_are_called_on_triggerfailed tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_runner_handlers_are_called_on_mapped_parent tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_multiple_task_runner_handlers_are_called tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_multiple_task_runner_handlers_are_called_in_sequence tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_runner_handler_that_doesnt_return_state_or_none tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_handler_that_raises_signal_is_trapped tests/engine/test_task_runner.py::TestTaskRunnerStateHandlers::test_task_handler_that_has_error_is_trapped tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_mapped[state0] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_mapped[state1] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_mapped[state2] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_cached_inputs_if_rerun[state0] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_cached_inputs_if_rerun[state1] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_cached_inputs_if_rerun[state2] tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_returns_failed_if_no_success_upstream tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_sets_n_map_states tests/engine/test_task_runner.py::TestCheckTaskReadyToMapStep::test_run_mapped_handles_upstream_mapped_states tests/engine/test_task_runner.py::test_task_runner_skips_upstream_check_for_parent_mapped_task tests/engine/test_task_runner.py::test_task_runner_converts_pause_signal_to_paused_state_for_manual_only_triggers tests/engine/test_task_runner.py::test_task_runner_passes_manual_only_trigger_when_resume_state_is_passed tests/engine/test_task_runner.py::test_task_runner_converts_pause_signal_to_paused_state_for_internally_raised_pauses tests/engine/test_task_runner.py::test_task_runner_bypasses_pause_when_requested tests/engine/test_task_runner.py::test_mapped_tasks_parents_and_children_respond_to_individual_triggers tests/engine/test_task_runner.py::test_mapped_tasks_parent_regenerates_child_pipeline tests/engine/test_task_runner.py::test_retry_has_updated_metadata tests/engine/test_task_runner.py::test_pending_raised_from_endrun_has_updated_metadata tests/engine/test_task_runner.py::test_failures_arent_checkpointed[True] tests/engine/test_task_runner.py::test_failures_arent_checkpointed[None] tests/engine/test_task_runner.py::test_skips_arent_checkpointed[True] tests/engine/test_task_runner.py::test_skips_arent_checkpointed[None] tests/engine/test_task_runner.py::test_task_runner_provides_logger tests/engine/test_task_runner.py::TestLooping::test_looping_works tests/engine/test_task_runner.py::TestLooping::test_looping_calls_state_handlers_appropriately tests/engine/test_task_runner.py::TestLooping::test_looping_doesnt_aggressively_log_task_starting tests/engine/test_task_runner.py::TestLooping::test_looping_doesnt_aggressively_log_task_finished tests/engine/test_task_runner.py::TestLooping::test_looping_accumulates tests/engine/test_task_runner.py::TestLooping::test_looping_checkpoints_all_iterations[True] tests/engine/test_task_runner.py::TestLooping::test_looping_checkpoints_all_iterations[None] tests/engine/test_task_runner.py::TestLooping::test_looping_works_with_retries tests/engine/test_task_runner.py::TestLooping::test_loop_results_work_with_retries tests/engine/test_task_runner.py::test_task_tags_are_attached_to_all_states tests/engine/test_task_runner.py::test_task_runner_logs_stdout tests/engine/test_task_runner.py::test_task_runner_logs_stdout_disabled tests/engine/test_task_runner.py::test_task_runner_logs_map_index_for_mapped_tasks