@@ -215,15 +215,9 @@ async def test_power_distributor_one_user(self, mocker: MockerFixture) -> None:
215215            await  requests_channel .new_sender ().send (request )
216216            result_rx  =  results_channel .new_receiver ()
217217
218-             done , pending  =  await  asyncio .wait (
219-                 [asyncio .create_task (result_rx .receive ())],
220-                 timeout = SAFETY_TIMEOUT .total_seconds (),
221-             )
222- 
223-         assert  len (pending ) ==  0 
224-         assert  len (done ) ==  1 
218+             async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
219+                 result  =  await  result_rx .receive ()
225220
226-         result : Result  =  done .pop ().result ()
227221        assert  isinstance (result , Success )
228222        assert  result .succeeded_power .isclose (Power .from_kilowatts (1.0 ))
229223        assert  result .excess_power .isclose (Power .from_watts (200.0 ))
@@ -284,15 +278,9 @@ async def test_power_distributor_exclusion_bounds(
284278                await  requests_channel .new_sender ().send (request )
285279                result_rx  =  results_channel .new_receiver ()
286280
287-                 done , pending  =  await  asyncio .wait (
288-                     [asyncio .create_task (result_rx .receive ())],
289-                     timeout = SAFETY_TIMEOUT .total_seconds (),
290-                 )
281+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
282+                     result  =  await  result_rx .receive ()
291283
292-                 assert  len (pending ) ==  0 
293-                 assert  len (done ) ==  1 
294- 
295-                 result : Result  =  done .pop ().result ()
296284                assert  isinstance (result , Success )
297285                assert  result .succeeded_power .isclose (Power .zero (), abs_tol = 1e-9 )
298286                assert  result .excess_power .isclose (Power .zero (), abs_tol = 1e-9 )
@@ -308,15 +296,9 @@ async def test_power_distributor_exclusion_bounds(
308296                await  requests_channel .new_sender ().send (request )
309297                result_rx  =  results_channel .new_receiver ()
310298
311-                 done , pending  =  await  asyncio .wait (
312-                     [asyncio .create_task (result_rx .receive ())],
313-                     timeout = SAFETY_TIMEOUT .total_seconds (),
314-                 )
315- 
316-                 assert  len (pending ) ==  0 
317-                 assert  len (done ) ==  1 
299+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
300+                     result  =  await  result_rx .receive ()
318301
319-                 result  =  done .pop ().result ()
320302                assert  isinstance (
321303                    result , OutOfBounds 
322304                ), f"Expected OutOfBounds, got { result }  " 
@@ -380,15 +362,9 @@ async def test_two_batteries_one_inverters(self, mocker: MockerFixture) -> None:
380362                await  requests_channel .new_sender ().send (request )
381363                result_rx  =  results_channel .new_receiver ()
382364
383-                 done , pending  =  await  asyncio .wait (
384-                     [asyncio .create_task (result_rx .receive ())],
385-                     timeout = SAFETY_TIMEOUT .total_seconds (),
386-                 )
387- 
388-                 assert  len (pending ) ==  0 
389-                 assert  len (done ) ==  1 
365+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
366+                     result  =  await  result_rx .receive ()
390367
391-                 result : Result  =  done .pop ().result ()
392368                assert  isinstance (result , Success )
393369                # Inverter bounded at 500 
394370                assert  result .succeeded_power .isclose (Power .from_watts (500.0 ))
@@ -459,15 +435,8 @@ async def test_two_batteries_one_broken_one_inverters(
459435                await  requests_channel .new_sender ().send (request )
460436                result_rx  =  results_channel .new_receiver ()
461437
462-                 done , pending  =  await  asyncio .wait (
463-                     [asyncio .create_task (result_rx .receive ())],
464-                     timeout = SAFETY_TIMEOUT .total_seconds (),
465-                 )
466- 
467-                 assert  len (pending ) ==  0 
468-                 assert  len (done ) ==  1 
469- 
470-                 result : Result  =  done .pop ().result ()
438+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
439+                     result  =  await  result_rx .receive ()
471440
472441                assert  isinstance (result , Error )
473442                assert  result .request  ==  request 
@@ -516,15 +485,9 @@ async def test_battery_two_inverters(self, mocker: MockerFixture) -> None:
516485                await  requests_channel .new_sender ().send (request )
517486                result_rx  =  results_channel .new_receiver ()
518487
519-                 done , pending  =  await  asyncio .wait (
520-                     [asyncio .create_task (result_rx .receive ())],
521-                     timeout = SAFETY_TIMEOUT .total_seconds (),
522-                 )
523- 
524-                 assert  len (pending ) ==  0 
525-                 assert  len (done ) ==  1 
488+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
489+                     result  =  await  result_rx .receive ()
526490
527-                 result : Result  =  done .pop ().result ()
528491                assert  isinstance (result , Success )
529492                # Inverters each bounded at 500, together 1000 
530493                assert  result .succeeded_power .isclose (Power .from_watts (1000.0 ))
@@ -569,15 +532,9 @@ async def test_two_batteries_three_inverters(self, mocker: MockerFixture) -> Non
569532                await  requests_channel .new_sender ().send (request )
570533                result_rx  =  results_channel .new_receiver ()
571534
572-                 done , pending  =  await  asyncio .wait (
573-                     [asyncio .create_task (result_rx .receive ())],
574-                     timeout = SAFETY_TIMEOUT .total_seconds (),
575-                 )
576- 
577-                 assert  len (pending ) ==  0 
578-                 assert  len (done ) ==  1 
535+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
536+                     result  =  await  result_rx .receive ()
579537
580-                 result : Result  =  done .pop ().result ()
581538                assert  isinstance (result , Success )
582539                # each inverter is bounded at 500 and we have 3 inverters 
583540                assert  result .succeeded_power .isclose (Power .from_watts (1500.0 ))
@@ -656,15 +613,9 @@ async def test_two_batteries_one_inverter_different_exclusion_bounds_2(
656613                await  requests_channel .new_sender ().send (request )
657614                result_rx  =  results_channel .new_receiver ()
658615
659-                 done , pending  =  await  asyncio .wait (
660-                     [asyncio .create_task (result_rx .receive ())],
661-                     timeout = SAFETY_TIMEOUT .total_seconds (),
662-                 )
663- 
664-                 assert  len (pending ) ==  0 
665-                 assert  len (done ) ==  1 
616+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
617+                     result  =  await  result_rx .receive ()
666618
667-                 result : Result  =  done .pop ().result ()
668619                assert  isinstance (result , OutOfBounds )
669620                assert  result .request  ==  request 
670621                assert  result .bounds  ==  PowerBounds (- 1000 , - 500 , 500 , 1000 )
@@ -744,15 +695,9 @@ async def test_two_batteries_one_inverter_different_exclusion_bounds(
744695                await  requests_channel .new_sender ().send (request )
745696                result_rx  =  results_channel .new_receiver ()
746697
747-                 done , pending  =  await  asyncio .wait (
748-                     [asyncio .create_task (result_rx .receive ())],
749-                     timeout = SAFETY_TIMEOUT .total_seconds (),
750-                 )
751- 
752-                 assert  len (pending ) ==  0 
753-                 assert  len (done ) ==  1 
698+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
699+                     result  =  await  result_rx .receive ()
754700
755-                 result : Result  =  done .pop ().result ()
756701                assert  isinstance (result , OutOfBounds )
757702                assert  result .request  ==  request 
758703                # each inverter is bounded at 500 
@@ -809,15 +754,9 @@ async def test_connected_but_not_requested_batteries(
809754                await  requests_channel .new_sender ().send (request )
810755                result_rx  =  results_channel .new_receiver ()
811756
812-                 done , pending  =  await  asyncio .wait (
813-                     [asyncio .create_task (result_rx .receive ())],
814-                     timeout = SAFETY_TIMEOUT .total_seconds (),
815-                 )
816- 
817-                 assert  len (pending ) ==  0 
818-                 assert  len (done ) ==  1 
757+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
758+                     result  =  await  result_rx .receive ()
819759
820-                 result : Result  =  done .pop ().result ()
821760                assert  isinstance (result , Error )
822761                assert  result .request  ==  request 
823762                assert  (
@@ -865,15 +804,9 @@ async def test_battery_soc_nan(self, mocker: MockerFixture) -> None:
865804                await  requests_channel .new_sender ().send (request )
866805                result_rx  =  results_channel .new_receiver ()
867806
868-                 done , pending  =  await  asyncio .wait (
869-                     [asyncio .create_task (result_rx .receive ())],
870-                     timeout = SAFETY_TIMEOUT .total_seconds (),
871-                 )
807+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
808+                     result  =  await  result_rx .receive ()
872809
873-             assert  len (pending ) ==  0 
874-             assert  len (done ) ==  1 
875- 
876-             result : Result  =  done .pop ().result ()
877810            assert  isinstance (result , Success )
878811            assert  result .succeeded_components  ==  {19 }
879812            assert  result .succeeded_power .isclose (Power .from_watts (500.0 ))
@@ -921,15 +854,9 @@ async def test_battery_capacity_nan(self, mocker: MockerFixture) -> None:
921854                await  requests_channel .new_sender ().send (request )
922855                result_rx  =  results_channel .new_receiver ()
923856
924-                 done , pending  =  await  asyncio .wait (
925-                     [asyncio .create_task (result_rx .receive ())],
926-                     timeout = SAFETY_TIMEOUT .total_seconds (),
927-                 )
857+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
858+                     result  =  await  result_rx .receive ()
928859
929-             assert  len (pending ) ==  0 
930-             assert  len (done ) ==  1 
931- 
932-             result : Result  =  done .pop ().result ()
933860            assert  isinstance (result , Success )
934861            assert  result .succeeded_components  ==  {19 }
935862            assert  result .succeeded_power .isclose (Power .from_watts (500.0 ))
@@ -996,15 +923,9 @@ async def test_battery_power_bounds_nan(self, mocker: MockerFixture) -> None:
996923                await  requests_channel .new_sender ().send (request )
997924                result_rx  =  results_channel .new_receiver ()
998925
999-                 done , pending  =  await  asyncio .wait (
1000-                     [asyncio .create_task (result_rx .receive ())],
1001-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1002-                 )
1003- 
1004-             assert  len (pending ) ==  0 
1005-             assert  len (done ) ==  1 
926+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
927+                     result  =  await  result_rx .receive ()
1006928
1007-             result : Result  =  done .pop ().result ()
1008929            assert  isinstance (result , Success )
1009930            assert  result .succeeded_components  ==  {19 }
1010931            assert  result .succeeded_power .isclose (Power .from_kilowatts (1.0 ))
@@ -1041,13 +962,9 @@ async def test_power_distributor_invalid_battery_id(
1041962                await  requests_channel .new_sender ().send (request )
1042963                result_rx  =  results_channel .new_receiver ()
1043964
1044-                 done , _  =  await  asyncio .wait (
1045-                     [asyncio .create_task (result_rx .receive ())],
1046-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1047-                 )
965+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
966+                     result  =  await  result_rx .receive ()
1048967
1049-             assert  len (done ) ==  1 
1050-             result : Result  =  done .pop ().result ()
1051968            assert  isinstance (result , Error )
1052969            assert  result .request  ==  request 
1053970            assert  result .msg  ==  "No battery 100, available batteries: 9, 19, 29" 
@@ -1086,15 +1003,9 @@ async def test_power_distributor_one_user_adjust_power_consume(
10861003                await  requests_channel .new_sender ().send (request )
10871004                result_rx  =  results_channel .new_receiver ()
10881005
1089-                 done , pending  =  await  asyncio .wait (
1090-                     [asyncio .create_task (result_rx .receive ())],
1091-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1092-                 )
1093- 
1094-             assert  len (pending ) ==  0 
1095-             assert  len (done ) ==  1 
1006+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
1007+                     result  =  await  result_rx .receive ()
10961008
1097-             result  =  done .pop ().result ()
10981009            assert  isinstance (result , OutOfBounds )
10991010            assert  result  is  not   None 
11001011            assert  result .request  ==  request 
@@ -1134,15 +1045,9 @@ async def test_power_distributor_one_user_adjust_power_supply(
11341045                await  requests_channel .new_sender ().send (request )
11351046                result_rx  =  results_channel .new_receiver ()
11361047
1137-                 done , pending  =  await  asyncio .wait (
1138-                     [asyncio .create_task (result_rx .receive ())],
1139-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1140-                 )
1048+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
1049+                     result  =  await  result_rx .receive ()
11411050
1142-             assert  len (pending ) ==  0 
1143-             assert  len (done ) ==  1 
1144- 
1145-             result  =  done .pop ().result ()
11461051            assert  isinstance (result , OutOfBounds )
11471052            assert  result  is  not   None 
11481053            assert  result .request  ==  request 
@@ -1182,15 +1087,9 @@ async def test_power_distributor_one_user_adjust_power_success(
11821087                await  requests_channel .new_sender ().send (request )
11831088                result_rx  =  results_channel .new_receiver ()
11841089
1185-                 done , pending  =  await  asyncio .wait (
1186-                     [asyncio .create_task (result_rx .receive ())],
1187-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1188-                 )
1090+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
1091+                     result  =  await  result_rx .receive ()
11891092
1190-             assert  len (pending ) ==  0 
1191-             assert  len (done ) ==  1 
1192- 
1193-             result  =  done .pop ().result ()
11941093            assert  isinstance (result , Success )
11951094            assert  result .succeeded_power .isclose (Power .from_kilowatts (1.0 ))
11961095            assert  result .excess_power .isclose (Power .zero (), abs_tol = 1e-9 )
@@ -1229,14 +1128,9 @@ async def test_not_all_batteries_are_working(self, mocker: MockerFixture) -> Non
12291128                await  requests_channel .new_sender ().send (request )
12301129                result_rx  =  results_channel .new_receiver ()
12311130
1232-                 done , pending  =  await  asyncio .wait (
1233-                     [asyncio .create_task (result_rx .receive ())],
1234-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1235-                 )
1131+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
1132+                     result  =  await  result_rx .receive ()
12361133
1237-                 assert  len (pending ) ==  0 
1238-                 assert  len (done ) ==  1 
1239-                 result  =  done .pop ().result ()
12401134                assert  isinstance (result , Success )
12411135                assert  result .succeeded_components  ==  {19 }
12421136                assert  result .excess_power .isclose (Power .from_watts (700.0 ))
@@ -1284,13 +1178,9 @@ async def test_partial_failure_result(self, mocker: MockerFixture) -> None:
12841178                await  requests_channel .new_sender ().send (request )
12851179                result_rx  =  results_channel .new_receiver ()
12861180
1287-                 done , pending  =  await  asyncio .wait (
1288-                     [asyncio .create_task (result_rx .receive ())],
1289-                     timeout = SAFETY_TIMEOUT .total_seconds (),
1290-                 )
1291-                 assert  len (pending ) ==  0 
1292-                 assert  len (done ) ==  1 
1293-                 result  =  done .pop ().result ()
1181+                 async  with  asyncio .timeout (SAFETY_TIMEOUT .total_seconds ()):
1182+                     result  =  await  result_rx .receive ()
1183+ 
12941184                assert  isinstance (result , PartialFailure )
12951185                assert  result .succeeded_components  ==  batteries  -  failed_batteries 
12961186                assert  result .failed_components  ==  failed_batteries 
0 commit comments