Your IP : 3.147.86.30
�
e fw- � @ s� d Z d d l Z d d l m Z d d l m Z 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
� 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�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/python34/lib64/python3.4/contextlib.py�_recreate_cm s
zContextDecorator._recreate_cmc s% t � � � � f d d � � } | S)Nc
s$ � j � � � | | � SWd QXd 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 sl | | | � | _ | | | | _ | _ | _ t | d d � } | d k r_ t | � j } n | | _ 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 s� | d k rE y t | j � Wn t k
r5 d SYq� Xt d � � n� | d k r] | � } n y&