@@ -45,6 +45,7 @@ def __init__(
4545 training_paused_steps = 0 ,
4646 raises_on_step = False ,
4747 requires_forward = False ,
48+ pumps_app_update = False ,
4849 ):
4950 self ._env_ids = env_ids
5051 self ._running = running
@@ -53,6 +54,7 @@ def __init__(
5354 self ._training_paused_steps = training_paused_steps
5455 self ._raises_on_step = raises_on_step
5556 self ._requires_forward = requires_forward
57+ self ._pumps_app_update = pumps_app_update
5658 self .step_calls = []
5759 self .close_calls = 0
5860
@@ -87,6 +89,9 @@ def get_visualized_env_ids(self):
8789 def requires_forward_before_step (self ):
8890 return self ._requires_forward
8991
92+ def pumps_app_update (self ):
93+ return self ._pumps_app_update
94+
9095
9196def _make_context (visualizers , provider = None ):
9297 ctx = object .__new__ (SimulationContext )
@@ -136,11 +141,21 @@ def test_update_visualizers_removes_closed_nonrunning_and_failed(caplog):
136141 assert stopped_viz .close_calls == 1
137142 assert failing_viz .close_calls == 1
138143 assert paused_viz .close_calls == 0
139- assert paused_viz .step_calls == []
144+ assert paused_viz .step_calls == [0.0 ]
140145 assert healthy_viz .step_calls == [0.1 ]
141146 assert any ("Error stepping visualizer" in r .message for r in caplog .records )
142147
143148
149+ def test_update_visualizers_skips_zero_dt_for_paused_app_pumping_visualizer ():
150+ provider = _FakeProvider ()
151+ paused_app_pumping_viz = _FakeVisualizer (rendering_paused = True , pumps_app_update = True )
152+ ctx = _make_context ([paused_app_pumping_viz ], provider = provider )
153+
154+ ctx .update_visualizers (0.3 )
155+
156+ assert paused_app_pumping_viz .step_calls == []
157+
158+
144159def test_update_visualizers_handles_training_pause_loop ():
145160 provider = _FakeProvider ()
146161 viz = _FakeVisualizer (training_paused_steps = 1 )
0 commit comments