From 8e4965ed174018fdaa4714fed377c21132c1633c Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 28 Apr 2021 14:35:25 -0400 Subject: [PATCH] De-compact async with tuple on 3.8- Turns out can't use the nicer syntax before python 3.9 (even though it doesn't seem documented anywhere?). Relates to #207 --- tests/test_discovery.py | 46 +++++++++++++++++++++-------------------- tests/test_pubsub.py | 7 +++---- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/tests/test_discovery.py b/tests/test_discovery.py index d1f84740b..af03ce654 100644 --- a/tests/test_discovery.py +++ b/tests/test_discovery.py @@ -268,28 +268,30 @@ async def close_chans_before_nursery( portal2 = await tn.start_actor( 'consumer2', enable_modules=[__name__]) - async with ( - portal1.open_stream_from(stream_forever) as agen1, - portal2.open_stream_from(stream_forever) as agen2, - ): - async with trio.open_nursery() as n: - n.start_soon(streamer, agen1) - n.start_soon(cancel, use_signal, .5) - try: - await streamer(agen2) - finally: - # Kill the root nursery thus resulting in - # normal arbiter channel ops to fail during - # teardown. It doesn't seem like this is - # reliably triggered by an external SIGINT. - # tractor.current_actor()._root_nursery.cancel_scope.cancel() - - # XXX: THIS IS THE KEY THING that happens - # **before** exiting the actor nursery block - - # also kill off channels cuz why not - await agen1.aclose() - await agen2.aclose() + # TODO: compact this back as was in last commit once + # 3.9+, see https://github.com/goodboy/tractor/issues/207 + async with portal1.open_stream_from(stream_forever) as agen1: + async with portal2.open_stream_from( + stream_forever + ) as agen2: + async with trio.open_nursery() as n: + n.start_soon(streamer, agen1) + n.start_soon(cancel, use_signal, .5) + try: + await streamer(agen2) + finally: + # Kill the root nursery thus resulting in + # normal arbiter channel ops to fail during + # teardown. It doesn't seem like this is + # reliably triggered by an external SIGINT. + # tractor.current_actor()._root_nursery.cancel_scope.cancel() + + # XXX: THIS IS THE KEY THING that happens + # **before** exiting the actor nursery block + + # also kill off channels cuz why not + await agen1.aclose() + await agen2.aclose() finally: with trio.CancelScope(shield=True): await trio.sleep(1) diff --git a/tests/test_pubsub.py b/tests/test_pubsub.py index 48e65b26e..d41e32337 100644 --- a/tests/test_pubsub.py +++ b/tests/test_pubsub.py @@ -60,14 +60,13 @@ def pred(i): def pred(i): return isinstance(i, int) + # TODO: https://github.com/goodboy/tractor/issues/207 async with tractor.find_actor(pub_actor_name) as portal: - async with ( - portal.open_stream_from( + async with portal.open_stream_from( pubber, topics=which, seed=seed, - ) as stream - ): + ) as stream: task_status.started(stream) times = 10 count = 0