New GitHub issue #118660 from Daverball:<br>
<hr>
<pre>
# Feature or enhancement
### Proposal:
As part of https://github.com/python/typeshed/pull/11048 `contextlib.AbstractContextManager` and `contextlib.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 like `ExitStack`.
The `contextlib` `ABC`s don't require any changes, since they accept an arbitrary number of arguments at runtime, but the aliases that live in `typing` are a different story. These will reject the additional parameter at runtime, throwing an exception.
@JelleZijlstra Added support for type var defaults for `typing._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 their `contextlib` 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
</pre>
<hr>
<a href="https://github.com/python/cpython/issues/118660">View on GitHub</a>
<p>Labels: type-feature</p>
<p>Assignee: </p>