I'm just throwing this idea out there to get feedback. Sometimes, I want to conditionally enter a context manager. This simplest (afaik) way of doing that is: with ExitStack() as stack: if condition: cm = stack.enter_context(cm_function()) suite() I suggest a more compact notation: with cm_function() as cm if condition: suite() I'm not sure that this is possible within the grammar. (For some reason with with_expr contains '"as" expr' rather than '"as" NAME'? I realize this comes up somewhat rarely. I use context managers a lot, and it comes up maybe 1 in 5k lines of code. For some extensions of this notation, an else clause could bind a value to cm in the case that condition is false. Best, Neil