<br><br><div class="gmail_quote">On 2 April 2012 12:40, Giampaolo Rodolà <span dir="ltr"><<a href="mailto:g.rodola@gmail.com">g.rodola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Il 01 aprile 2012 22:25, Ram Rachum <<a href="mailto:ram.rachum@gmail.com">ram.rachum@gmail.com</a>> ha scritto:<br>
<div><div class="h5">> I'd like to be able to do this:<br>
><br>
> with *context_managers:<br>
>     pass # Some suite.<br>
><br>
><br>
> This is useful when you have an unknown number of context managers that you<br>
> want to use. I currently use `contextlib.nested`, but I'd like the *star<br>
> syntax much better.<br>
><br>
> What do you think?<br>
><br>
><br>
> Ram.<br>
<br>
</div></div>I believe writing a specialized context manager object which is able<br>
to hold multiple context managers altogheter is better than<br>
introducing a new syntax for such a use case which should be pretty<br>
rare/uncommon.<br></blockquote><div><br><br>There's now an example of a need for this in the standard library. mock.patch collects together an arbitrary number of context managers that need to be entered sequentially (together). As there is no replacement for contextlib.nested it has custom code calling __enter__ and __exit__ on all the context managers and keeping track of which ones have been successfully entered (because if there is an exception whilst entering one, only those that have *already* been entered should have __exit__ called).<br>
 </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Also, it's not clear what to expect from "with *context_managers as ctx: ...".<br>
<br></blockquote><div><br>It is clear. It should be a tuple of results (what else *could* it be).<br><br>Michael<br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

Regards,<br>
<br>
--- Giampaolo<br>
<a href="http://code.google.com/p/pyftpdlib/" target="_blank">http://code.google.com/p/pyftpdlib/</a><br>
<a href="http://code.google.com/p/psutil/" target="_blank">http://code.google.com/p/psutil/</a><br>
<a href="http://code.google.com/p/pysendfile/" target="_blank">http://code.google.com/p/pysendfile/</a><br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><pre cols="72"><a href="http://www.voidspace.org.uk/" target="_blank">http://www.voidspace.org.uk/</a><br><br>May you do good and not evil<br>May you find forgiveness for yourself and forgive others<br>
May you share freely, never taking more than you give.<br>-- the sqlite blessing <a href="http://www.sqlite.org/different.html" target="_blank">http://www.sqlite.org/different.html</a></pre>
<br>