Your IP : 3.135.186.233
��Yf�0 � @ s d Z d d l Z d d l m Z d d l m Z d d d d d d
d g Z Gd d � d e � Z Gd
d � d e � Z d d � Z
Gd d � d e � Z Gd d � d � Z Gd d � d e � Z
Gd d
� d
e � Z Gd d � d � Z Gd d � d e � Z d S)z4Utilities for with-statement contexts. See PEP 343.� N)�deque)�wraps�contextmanager�closing�ContextDecorator� ExitStack�redirect_stdout�redirect_stderr�suppressc @ s. e Z d Z d Z d d � Z d d � Z d S)r zJA base class or mixin that enables context managers to work as decorators.c C s | S)a6 Return 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.
� )�selfr r �//opt/alt/python35/lib64/python3.5/contextlib.py�_recreate_cm s
zContextDecorator._recreate_cmc s% t � � � � f d d � � } | S)Nc
s% � j � � � | | � SWd QRXd S)N)r )�args�kwds)�funcr r r
�inner s
z(ContextDecorator.__call__.<locals>.inner)r )r r r r )r r r
�__call__ s !zContextDecorator.__call__N)�__name__�
__module__�__qualname__�__doc__r r r r r r
r s c @ sF e Z d Z d Z d d � Z d d � Z d d � Z d d � Z d
S)�_GeneratorContextManagerz%Helper for @contextmanager decorator.c C si | | | � | _ | | | | _ | _ | _ t | d d � } | d k r\ t | � j } | | _ d S)Nr )�genr r r �getattr�typer )r r r r �docr r r
�__init__% s z!_GeneratorContextManager.__init__c C s | j | j | j | j � S)N)� __class__r r r )r r r r
r 3 s z%_GeneratorContextManager._recreate_cmc C s9 y t | j � SWn! t k
r4 t d � d � Yn Xd S)Nzgenerator didn't yield)�nextr �
StopIteration�RuntimeError)r r r r
� __enter__9 s
z"_GeneratorContextManager.__enter__c C s0 | d k rE y t | j � Wn t k
r5 d SYq,Xt d � � n� | d k rZ | � } y | j j | | | � Wn� t k
r� } z | | k SWYd d } ~ Xn{ t k
r� } z7 | | k r� d S| t k r� | j | k r� d S� WYd d } ~ Xn% t j � d | k rd S� Yn Xt d � � d S)NFzgenerator didn't stop� z#generator didn't stop after throw())r r r r! �throw� __cause__�sys�exc_info)r r �value� traceback�excr r r
�__exit__? s.
z!_GeneratorContextManager.__exit__N)r r r r r r r"