Viewing File: /opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/__pycache__/contextlib2.cpython-35.pyc



t_B@s\dZddlZddlZddlZddlmZddlmZddddd	d
ddd
g	Zedg7Zej	ddd/krej
Znejde
fdfiZddZddZGdddeZGdd	d	e
ZGdddeZddZGddde
ZGddde
ZGd ddeZGd!ddeZGd"d
d
e
Zej	ddkZerd#d$Zd%d&Znd'd$Zd(d&Zydd)lmZWnek
r	eZ Yn
Xd*d+Z Gd,d
d
e
Z!Gd-dde!Z"Gd.ddeZ#dS)0zAcontextlib2 - backports and enhancements to the contextlib moduleN)deque)wrapscontextmanagerclosingnullcontextAbstractContextManagerContextDecorator	ExitStackredirect_stdoutredirect_stderrsuppressContextStackABC	__slots__cCsB||krdS|j|x|jD]}t||q'W|S)N)append	__bases___classic_mro)CresultBr/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/contextlib2.pyrs
rcGsy
|j}Wn'tk
r6tt|g}YnXxJ|D]B}x9|D]-}||jkrK|j|dkrwtSPqKWtSq>WdS)NT)__mro__AttributeErrortupler__dict__NotImplemented)rmethodsmromethodrrrr_check_methods$s



r#c@sIeZdZdZddZejddZeddZ	dS)	rz,An abstract base class for context managers.cCs|S)z0Return `self` upon entering the runtime context.r)selfrrr	__enter__8sz AbstractContextManager.__enter__cCsdS)z9Raise any exception triggered within the runtime context.Nr)r$exc_type	exc_value	tracebackrrr__exit__<szAbstractContextManager.__exit__cCs |tkrt|ddStS)z<Check whether subclass is considered a subclass of this ABC.r%r))rr#r)clsrrrr__subclasshook__Asz'AbstractContextManager.__subclasshook__N)
__name__
__module____qualname____doc__r%abcabstractmethodr)classmethodr+rrrrr5sc@s:eZdZdZddZddZddZdS)	rzJA base class or mixin that enables context managers to work as decorators.cCstjdt|jS)aReturns the context manager used to actually wrap the call to the
        decorated function.

        The default implementation just returns *self*.

        Overriding this method allows otherwise one-shot context managers
        like _GeneratorContextManager to support use as decorators via
        implicit recreation.

        DEPRECATED: refresh_cm was never added to the standard library's
                    ContextDecorator API
        z2refresh_cm was never added to the standard library)warningswarnDeprecationWarning_recreate_cm)r$rrr
refresh_cmLs
	zContextDecorator.refresh_cmcCs|S)a6Return 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.
        r)r$rrrr6]s
zContextDecorator._recreate_cmcs%tfdd}|S)Nc
s%j||SWdQRXdS)N)r6)argskwds)funcr$rrinnerjs
z(ContextDecorator.__call__.<locals>.inner)r)r$r:r;r)r:r$r__call__is!zContextDecorator.__call__N)r,r-r.r/r7r6r<rrrrrIsc@sFeZdZdZddZddZddZdd	Zd
S)_GeneratorContextManagerz%Helper for @contextmanager decorator.cCsi||||_||||_|_|_t|dd}|dkr\t|j}||_dS)Nr/)genr:r8r9getattrtyper/)r$r:r8r9docrrr__init__tsz!_GeneratorContextManager.__init__cCs|j|j|j|jS)N)	__class__r:r8r9)r$rrrr6sz%_GeneratorContextManager._recreate_cmcCs6yt|jSWntk
r1tdYnXdS)Nzgenerator didn't yield)nextr>
StopIterationRuntimeError)r$rrrr%s
z"_GeneratorContextManager.__enter__cCs&|dkrEyt|jWntk
r5dSYq"Xtdn|dkrZ|}y&|jj|||tdWntk
r}z||k	SWYdd}~Xnqtk
r}z1||krdStr|j|krdSWYdd}~Xn!tjd|k	rYnXdS)Nzgenerator didn't stopz#generator didn't stop after throw()F)	rDr>rErFthrow_HAVE_EXCEPTION_CHAINING	__cause__sysexc_info)r$r@valuer(excrrrr)s,
		z!_GeneratorContextManager.__exit__N)r,r-r.r/rBr6r%r)rrrrr=qs
r=cs"tfdd}|S)a@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=)r8r9)r:rrhelperszcontextmanager.<locals>.helper)r)r:rOr)r:rrsc@s:eZdZdZddZddZddZdS)	ra2Context 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)thing)r$rPrrrrBszclosing.__init__cCs|jS)N)rP)r$rrrr%szclosing.__enter__cGs|jjdS)N)rPclose)r$rLrrrr)szclosing.__exit__N)r,r-r.r/rBr%r)rrrrrsc@s:eZdZdZddZddZddZdS)_RedirectStreamNcCs||_g|_dS)N)_new_target_old_targets)r$
new_targetrrrrBs	z_RedirectStream.__init__cCs9|jjtt|jtt|j|j|jS)N)rTrr?rK_streamsetattrrS)r$rrrr%sz_RedirectStream.__enter__cCs tt|j|jjdS)N)rWrKrVrTpop)r$exctypeexcinstexctbrrrr)sz_RedirectStream.__exit__)r,r-r.rVrBr%r)rrrrrRsrRc@seZdZdZdZdS)r
aAContext manager for temporarily redirecting stdout to another file.

        # How to send help() to stderr
        with redirect_stdout(sys.stderr):
            help(dir)

        # How to write help() to a file
        with open('help.txt', 'w') as f:
            with redirect_stdout(f):
                help(pow)
    stdoutN)r,r-r.r/rVrrrrr
sc@seZdZdZdZdS)rzCContext manager for temporarily redirecting stderr to another file.stderrN)r,r-r.r/rVrrrrrsc@s:eZdZdZddZddZddZdS)	ra?Context manager to suppress specified exceptions

    After the exception is suppressed, execution proceeds with the next
    statement following the with statement.

         with suppress(FileNotFoundError):
             os.remove(somefile)
         # Execution still resumes here if the file was already removed
    cGs
||_dS)N)_exceptions)r$
exceptionsrrrrB)szsuppress.__init__cCsdS)Nr)r$rrrr%,szsuppress.__enter__cCs|dk	ot||jS)N)
issubclassr^)r$rYrZr[rrrr)/s
zsuppress.__exit__N)r,r-r.r/rBr%r)rrrrrs	csfdd}|S)NcsLx<|j}||krdS|dks4|kr5P|}qW||_dS)N)__context__)new_excold_excexc_context)	frame_excrr_fix_exception_context@s	
z3_make_context_fixer.<locals>._fix_exception_contextr)rerfr)rer_make_context_fixer?s
rgcCsDy|dj}|dWn"tk
r?||d_YnXdS)NrG)ra
BaseException)exc_details	fixed_ctxrrr_reraise_with_existing_contextOs


rkcCs
ddS)NcSsdS)Nr)rbrcrrr<lambda>[sz%_make_context_fixer.<locals>.<lambda>r)rerrrrgZscCs|\}}}tddS)Nz!raise exc_type, exc_value, exc_tb)exec)rir&r'exc_tbrrrrk_s)InstanceTypecCs#t|}|tkr|jS|S)N)r@rorC)objZobj_typerrr	_get_typeksrqc@seZdZdZddZddZddZdd	Zd
dZdd
Z	ddZ
ddZddZdS)r	aContext 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)r_exit_callbacks)r$rrrrBszExitStack.__init__cCs+t|}|j|_t|_|S)z?Preserve the context stack by transferring it to a new instance)r@rrr)r$	new_stackrrrpop_allszExitStack.pop_allcs/fdd}|_|j|dS)z:Helper to correctly register callbacks to __exit__ methodscs
|S)Nr)ri)cmcm_exitrr
_exit_wrappersz.ExitStack._push_cm_exit.<locals>._exit_wrapperN)__self__push)r$rurvrwr)rurvr
_push_cm_exits	zExitStack._push_cm_exitcCsRt|}y
|j}Wn"tk
r=|jj|YnX|j|||S)aRegisters 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)
        )rqr)rrrrrz)r$exit_cb_typeexit_methodrrrrys


zExitStack.pushcs2fdd}|_|j|S)z\Registers an arbitrary callback and arguments.

        Cannot suppress exceptions.
        csdS)Nr)r&rNtb)r8callbackr9rrrwsz)ExitStack.callback.<locals>._exit_wrapper)__wrapped__ry)r$rr8r9rwr)r8rr9rrs	
zExitStack.callbackcCs8t|}|j}|j|}|j|||S)zEnters the supplied context manager

        If successful, also pushes its __exit__ method as a callback and
        returns the result of the __enter__ method.
        )rqr)r%rz)r$ru_cm_type_exitrrrr
enter_contexts
	zExitStack.enter_contextcCs|jddddS)z$Immediately unwind the context stackN)r))r$rrrrQszExitStack.closecCs|S)Nr)r$rrrr%szExitStack.__enter__c	
Gs|ddk	}tjd}t|}d}d}xv|jr|jj}y"||rtd}d}d}Wq;tj}||d|dd}|}Yq;Xq;W|rt||o|S)NrrGFT)NNN)rKrLrgrrrXrk)	r$rireceived_excrerfsuppressed_exc
pending_raisecbnew_exc_detailsrrrr)s(

zExitStack.__exit__N)
r,r-r.r/rBrtrzryrrrQr%r)rrrrr	ss

csLeZdZdZfddZddZddZdd	ZS)
r
z+Backwards compatibility alias for ExitStackcs'tjdttt|jdS)Nz*ContextStack has been renamed to ExitStack)r3r4r5superr
rB)r$)rCrrrBs	zContextStack.__init__cCs
|j|S)N)ry)r$rrrr
register_exitszContextStack.register_exitcOs|j|||S)N)r)r$rr8r9rrrregisterszContextStack.registercCs
|jS)N)rt)r$rrrpreserveszContextStack.preserve)r,r-r.r/rBrrrrr)rCrr
s
c@s=eZdZdZdddZddZddZdS)	raMContext manager that does no additional processing.
    Used as a stand-in for a normal context manager, when a particular
    block of code is only sometimes used with a normal context manager:
    cm = optional_cm if condition else nullcontext()
    with cm:
        # Perform operation, using optional_cm if condition is True
    NcCs
||_dS)N)enter_result)r$rrrrrBsznullcontext.__init__cCs|jS)N)r)r$rrrr%sznullcontext.__enter__cGsdS)Nr)r$excinforrrr)sznullcontext.__exit__)r,r-r.r/rBr%r)rrrrrs)rr)$r/r0rKr3collectionsr	functoolsr__all__version_infor_abc_ABCABCMetaobjectrr#rrr=rrrRr
rrrIrgrktypesroImportErrorr@rqr	r
rrrrr<module>sL	

(H"
q
Back to Directory File Manager