On Sun, Dec 06, 2015 at 11:48:41PM +0200, Ram Rachum wrote:
Hi guys,
I'm using `contextlib.ExitStack` today, and pushing context managers into it. I find myself wanting to exit specific context managers that I've pushed into it, while still inside the `with` suite of the `ExitStack`. In other words, I want to exit one of the context managers but still keep the `ExitStack`, and all other context managers, acquired. This isn't currently possible, right? What do you think about implementing this?
I'm not entirely sure what you mean. Can you give an example? Some of the examples given here: https://docs.python.org/3/library/contextlib.html#examples-and-recipes sound like they might be related to what you are trying to do. Otherwise, if I have understood your requirement correctly, I think you might have a good case for *not* using ExitStack. If you have one context manager that you want to treat differently from the others, perhaps you should write it differently from the others: with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] do_things() with open(special_file) as sf: do_other_things() do_more_things() -- Steven