Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
Feature or enhancement
Proposal:
As part ofpython/typeshed#11048contextlib.AbstractContextManager andcontextlib.AbstractAsyncContextManager received an additional optional type parameter for the return value of__exit__ in order to have greater control over code-flow analysis in type checkers with things likeExitStack.
ThecontextlibABCs don't require any changes, since they accept an arbitrary number of arguments at runtime, but the aliases that live intyping are a different story. These will reject the additional parameter at runtime, throwing an exception.
@JelleZijlstra Added support for type var defaults fortyping._SpecialGenericAlias in#118648, we could leverage that work to add the new optional parameter to the typing aliases, so they can support the same number of type parameters as theircontextlib counterparts.
Has this already been discussed elsewhere?
I have already discussed this feature proposal on Discourse
Links to previous discussion of this feature:
https://discuss.python.org/t/add-an-else-clause-to-with-statements-to-detect-early-termination/38031