ó õ^‚Rc@s‰dZddlZddlmZddlmZdddgZdefd „ƒYZd „Z e d „ƒZ defd „ƒYZ dS( s4Utilities for with-statement contexts. See PEP 343.iÿÿÿÿN(twraps(twarntcontextmanagertnestedtclosingtGeneratorContextManagercBs)eZdZd„Zd„Zd„ZRS(s%Helper for @contextmanager decorator.cCs ||_dS(N(tgen(tselfR((s /usr/lib/python2.7/contextlib.pyt__init__ scCs5y|jjƒSWntk r0tdƒ‚nXdS(Nsgenerator didn't yield(Rtnextt StopIterationt RuntimeError(R((s /usr/lib/python2.7/contextlib.pyt __enter__s cCsÂ|dkrAy|jjƒWntk r1dSXtdƒ‚n}|dkrY|ƒ}ny&|jj|||ƒtdƒ‚Wn<tk r›}||k Stjƒd|k r¾‚q¾nXdS(Nsgenerator didn't stops#generator didn't stop after throw()i(tNoneRR R R tthrowtsystexc_info(Rttypetvaluet tracebacktexc((s /usr/lib/python2.7/contextlib.pyt__exit__s      (t__name__t __module__t__doc__RR R(((s /usr/lib/python2.7/contextlib.pyR s  cstˆƒ‡fd†ƒ}|S(sÜ@contextmanager decorator. Typical usage: @contextmanager def some_generator(): try: yield finally: This makes this: with some_generator() as : equivalent to this: try: = finally: cstˆ||ŽƒS(N(R(targstkwds(tfunc(s /usr/lib/python2.7/contextlib.pythelperRs(R(RR((Rs /usr/lib/python2.7/contextlib.pyR6scgsütdtdƒg}g}d}zcyIx=|D]5}|j}|j}|j|ƒƒ|j|ƒq/W|VWntjƒ}nXWdxE|rÏ|jƒ}y||Œrµd}nWq‹tjƒ}q‹Xq‹W|d kr÷|d|d|d‚nXdS( sµCombine multiple context managers into a single nested context manager. This function has been deprecated in favour of the multiple manager form of the with statement. The one advantage of this function over the multiple manager form of the with statement is that argument unpacking allows it to be used with a variable number of context managers as follows: with nested(*managers): do_something() s>With-statements now directly support multiple context managersiNiii(NNN(NNN(NNN( RtDeprecationWarningR RR tappendRRtpop(tmanagerstexitstvarsRtmgrtexittenter((s /usr/lib/python2.7/contextlib.pyRXs0          cBs)eZdZd„Zd„Zd„ZRS(s2Context to automatically close something at the end of a block. Code like this: with closing(.open()) as f: is equivalent to this: f = .open() try: finally: f.close() cCs ||_dS(N(tthing(RR&((s /usr/lib/python2.7/contextlib.pyR•scCs|jS(N(R&(R((s /usr/lib/python2.7/contextlib.pyR —scGs|jjƒdS(N(R&tclose(RR((s /usr/lib/python2.7/contextlib.pyR™s(RRRRR R(((s /usr/lib/python2.7/contextlib.pyR„s  ( RRt functoolsRtwarningsRt__all__tobjectRRRR(((s /usr/lib/python2.7/contextlib.pyts - ",