ž ¦ÿf¥#c@s¬dZddlZddlmZddlmZddddgZGd d„deƒZGd d „d eƒZ d d„Z Gd d„deƒZ Gdd„deƒZ dS(u4Utilities for with-statement contexts. See PEP 343.iN(udeque(uwrapsucontextmanageruclosinguContextDecoratoru ExitStackcBs2|EeZdZdZdd„Zdd„ZdS(uContextDecoratoruJA base class or mixin that enables context managers to work as decorators.cCs|S(u6Return a recreated instance of self. Allows an otherwise one-shot context manager like _GeneratorContextManager to support use as a decorator via implicit recreation. This is a private interface just for _GeneratorContextManager. See issue #11647 for details. ((uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu _recreate_cm s uContextDecorator._recreate_cmcs%tˆƒ‡‡fdd†ƒ}|S(Nc s$ˆjƒˆ||ŽSWdQXdS(N(u _recreate_cm(uargsukwds(ufuncuself(u//opt/alt/python33/lib64/python3.3/contextlib.pyuinners u(ContextDecorator.__call__..inner(uwraps(uselfufuncuinner((ufuncuselfu//opt/alt/python33/lib64/python3.3/contextlib.pyu__call__s!uContextDecorator.__call__N(u__name__u __module__u __qualname__u__doc__u _recreate_cmu__call__(u __locals__((u//opt/alt/python33/lib64/python3.3/contextlib.pyuContextDecorator s cBsJ|EeZdZdZdd„Zdd„Zdd„Zdd „Zd S( u_GeneratorContextManageru%Helper for @contextmanager decorator.cOs3|||Ž|_||||_|_|_dS(N(ugenufuncuargsukwds(uselfufuncuargsukwds((u//opt/alt/python33/lib64/python3.3/contextlib.pyu__init__$su!_GeneratorContextManager.__init__cCs|j|j|j|jŽS(N(u __class__ufuncuargsukwds(uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu _recreate_cm(su%_GeneratorContextManager._recreate_cmc Cs6yt|jƒSWntk r1tdƒ‚YnXdS(Nugenerator didn't yield(unextugenu StopIterationu RuntimeError(uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu __enter__.s u"_GeneratorContextManager.__enter__cCsÜ|dkrEyt|jƒWntk r5dSYqØXtdƒ‚n“|dkr]|ƒ}ny&|jj|||ƒtdƒ‚WnRtk r´}z||k SWYdd}~Xn$tjƒd|k rÓ‚nYnXdS(Nugenerator didn't stopu#generator didn't stop after throw()i(uNoneunextugenu StopIterationu RuntimeErroruthrowusysuexc_info(uselfutypeuvalueu tracebackuexc((u//opt/alt/python33/lib64/python3.3/contextlib.pyu__exit__4s      u!_GeneratorContextManager.__exit__N(u__name__u __module__u __qualname__u__doc__u__init__u _recreate_cmu __enter__u__exit__(u __locals__((u//opt/alt/python33/lib64/python3.3/contextlib.pyu_GeneratorContextManager!s    u_GeneratorContextManagercs"tˆƒ‡fdd†ƒ}|S(uÜ@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(u_GeneratorContextManager(uargsukwds(ufunc(u//opt/alt/python33/lib64/python3.3/contextlib.pyuhelperqsucontextmanager..helper(uwraps(ufuncuhelper((ufuncu//opt/alt/python33/lib64/python3.3/contextlib.pyucontextmanagerUscBs>|EeZdZdZdd„Zdd„Zdd„ZdS( uclosingu2Context 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(uthing(uselfuthing((u//opt/alt/python33/lib64/python3.3/contextlib.pyu__init__ˆsuclosing.__init__cCs|jS(N(uthing(uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu __enter__Šsuclosing.__enter__cGs|jjƒdS(N(uthinguclose(uselfuexc_info((u//opt/alt/python33/lib64/python3.3/contextlib.pyu__exit__Œsuclosing.__exit__N(u__name__u __module__u __qualname__u__doc__u__init__u __enter__u__exit__(u __locals__((u//opt/alt/python33/lib64/python3.3/contextlib.pyuclosingws  cBs†|EeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dS(u ExitStacku‹Context manager for dynamic management of a stack of exit callbacks For example: with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # All opened files will automatically be closed at the end of # the with statement, even if attempts to open files later # in the list raise an exception cCstƒ|_dS(N(udequeu_exit_callbacks(uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu__init__suExitStack.__init__cCs+t|ƒƒ}|j|_tƒ|_|S(u?Preserve the context stack by transferring it to a new instance(utypeu_exit_callbacksudeque(uselfu new_stack((u//opt/alt/python33/lib64/python3.3/contextlib.pyupop_all s  uExitStack.pop_allcs/‡‡fdd†}ˆ|_|j|ƒdS(u:Helper to correctly register callbacks to __exit__ methodscs ˆˆ|ŒS(N((u exc_details(ucmucm_exit(u//opt/alt/python33/lib64/python3.3/contextlib.pyu _exit_wrapper©su.ExitStack._push_cm_exit.._exit_wrapperN(u__self__upush(uselfucmucm_exitu _exit_wrapper((ucmucm_exitu//opt/alt/python33/lib64/python3.3/contextlib.pyu _push_cm_exit§s uExitStack._push_cm_exitc CsRt|ƒ}y |j}Wn"tk r=|jj|ƒYnX|j||ƒ|S(uRegisters a callback with the standard __exit__ method signature Can suppress exceptions the same way __exit__ methods can. Also accepts any object with an __exit__ method (registering a call to the method instead of the object itself) (utypeu__exit__uAttributeErroru_exit_callbacksuappendu _push_cm_exit(uselfuexitu_cb_typeu exit_method((u//opt/alt/python33/lib64/python3.3/contextlib.pyupush®s   uExitStack.pushcs2‡‡‡fdd†}ˆ|_|j|ƒˆS(u\Registers an arbitrary callback and arguments. Cannot suppress exceptions. csˆˆˆŽdS(N((uexc_typeuexcutb(uargsucallbackukwds(u//opt/alt/python33/lib64/python3.3/contextlib.pyu _exit_wrapperÇsu)ExitStack.callback.._exit_wrapper(u __wrapped__upush(uselfucallbackuargsukwdsu _exit_wrapper((uargsucallbackukwdsu//opt/alt/python33/lib64/python3.3/contextlib.pyucallbackÂs  uExitStack.callbackcCs8t|ƒ}|j}|j|ƒ}|j||ƒ|S(uªEnters the supplied context manager If successful, also pushes its __exit__ method as a callback and returns the result of the __enter__ method. (utypeu__exit__u __enter__u _push_cm_exit(uselfucmu_cm_typeu_exituresult((u//opt/alt/python33/lib64/python3.3/contextlib.pyu enter_contextÏs   uExitStack.enter_contextcCs|jdddƒdS(u$Immediately unwind the context stackN(u__exit__uNone(uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyucloseÜsuExitStack.closecCs|S(N((uself((u//opt/alt/python33/lib64/python3.3/contextlib.pyu __enter__àsuExitStack.__enter__c s |ddk }tjƒd‰‡fdd†}d}d}xy|jr¹|jjƒ}y%||Œr}d}d}d}nWqAtjƒ}||d|dƒd}|}YqAXqAW|ry|dj}|d‚Wqtk rÿ||d_‚YqXn|o |S(NiicsNx>|j}||krdS|dks4|ˆkr8Pn|}q||_dS(N(u __context__uNone(unew_excuold_excu exc_context(u frame_exc(u//opt/alt/python33/lib64/python3.3/contextlib.pyu_fix_exception_contextés   u2ExitStack.__exit__.._fix_exception_contextFT(NNN( uNoneusysuexc_infouFalseu_exit_callbacksupopuTrueu __context__u BaseException( uselfu exc_detailsu received_excu_fix_exception_contextusuppressed_excu pending_raiseucbunew_exc_detailsu fixed_ctx((u frame_excu//opt/alt/python33/lib64/python3.3/contextlib.pyu__exit__ãs2        uExitStack.__exit__N( u__name__u __module__u __qualname__u__doc__u__init__upop_allu _push_cm_exitupushucallbacku enter_contextucloseu __enter__u__exit__(u __locals__((u//opt/alt/python33/lib64/python3.3/contextlib.pyu ExitStack‘s       ( u__doc__usysu collectionsudequeu functoolsuwrapsu__all__uobjectuContextDecoratoru_GeneratorContextManagerucontextmanageruclosingu ExitStack(((u//opt/alt/python33/lib64/python3.3/contextlib.pyus 4 "