Spade
Mini Shell
�
q�fc@s�dZddlZddlmZddlmZdddgZdefd ��YZd
�Z e d��Z
defd��YZdS(
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/lib64/python2.7/contextlib.pyt__init__scCs5y|jj�SWntk
r0td��nXdS(Nsgenerator didn't
yield(Rtnextt
StopIterationtRuntimeError(R((s"/usr/lib64/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
Rtthrowtsystexc_info(Rttypetvaluet tracebacktexc((s"/usr/lib64/python2.7/contextlib.pyt__exit__s
(t__name__t
__module__t__doc__RRR(((s"/usr/lib64/python2.7/contextlib.pyR s cst���fd��}|S(s�@contextmanager
decorator.
Typical usage:
@contextmanager
def some_generator(<arguments>):
<setup>
try:
yield <value>
finally:
<cleanup>
This makes this:
with some_generator(<arguments>) as <variable>:
<body>
equivalent to this:
<setup>
try:
<variable> = <value>
<body>
finally:
<cleanup>
cst�||��S(N(R(targstkwds(tfunc(s"/usr/lib64/python2.7/contextlib.pythelperRs(R(RR((Rs"/usr/lib64/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
RRtappendRRtpop(tmanagerstexitstvarsRtmgrtexittenter((s"/usr/lib64/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(<module>.open(<arguments>)) as f:
<block>
is equivalent to this:
f = <module>.open(<arguments>)
try:
<block>
finally:
f.close()
cCs
||_dS(N(tthing(RR&((s"/usr/lib64/python2.7/contextlib.pyR�scCs|jS(N(R&(R((s"/usr/lib64/python2.7/contextlib.pyR�scGs|jj�dS(N(R&tclose(RR((s"/usr/lib64/python2.7/contextlib.pyR�s(RRRRRR(((s"/usr/lib64/python2.7/contextlib.pyR�s (RRt functoolsRtwarningsRt__all__tobjectRRRR(((s"/usr/lib64/python2.7/contextlib.pyt<module>s- ",