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>