You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was curious whether the commented-out NurseryManager class would actually work, so I turned it on ;-)
I had to insert one conditional because of an impedance mismatch between context managing and cancel handling. All tests pass.
On second thought (second patch), a Nursery can be its own context manager. This can be improved further (third patch) by deferring the initialization to __aenter__(), noting that a Nursery is never used outside of a context manager.
This change speeds up the full test run by a bit more than 1% on my system (tested with 3.5 and 3.6).
I should note here: the nursery implementation is going to get majorly revisited in 0.3.0 (#136), so I've been putting this off to look at as part of that.
Do you remember why you had to add the if isinstance(exc, Cancelled): return True bit to your Nursery.__aexit__ method? I don't see how it can be correct (doesn't it make nurseries swallow all Cancelled exceptions?), but I assume you ran into trouble without it...
We should probably stop using @asynccontextmanager in the nursery implementation (#229, #393). But this branch is way out of date, discussion has stalled, and I think it goes a bit to far (I like that the actual Nursery object is only returned from __aenter__, not from open_nursery). I'm going to close this for now, and we can always re-open it or steal bits from it later if we want to.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I was curious whether the commented-out NurseryManager class would actually work, so I turned it on ;-)
I had to insert one conditional because of an impedance mismatch between context managing and cancel handling. All tests pass.
On second thought (second patch), a Nursery can be its own context manager. This can be improved further (third patch) by deferring the initialization to
__aenter__(), noting that a Nursery is never used outside of a context manager.This change speeds up the full test run by a bit more than 1% on my system (tested with 3.5 and 3.6).