Edit file File name : contextlib.cpython-36.opt-1.pyc Content :3 \j3 � @ s� d Z ddlZddlZddlZddlmZ ddlmZ ddddd d ddgZG d d� dej �Z G dd� de�ZG dd� dee �Z dd� ZG dd� de �ZG dd� de �ZG dd � d e�ZG dd� de�ZG dd� de �ZG dd � d e �ZdS )z4Utilities for with-statement contexts. See PEP 343.� N)�deque)�wraps�contextmanager�closing�AbstractContextManager�ContextDecorator� ExitStack�redirect_stdout�redirect_stderr�suppressc @ s2 e Zd ZdZdd� Zejdd� �Zedd� �Z dS ) r z,An abstract base class for context managers.c C s | S )z0Return `self` upon entering the runtime context.� )�selfr r �"/usr/lib64/python3.6/contextlib.py� __enter__ s z AbstractContextManager.__enter__c C s dS )z9Raise any exception triggered within the runtime context.Nr )r �exc_type� exc_value� tracebackr r r �__exit__ s zAbstractContextManager.__exit__c C s | t krtj|dd�S tS )Nr r )r �_collections_abc�_check_methods�NotImplemented)�cls�Cr r r �__subclasshook__ s z'AbstractContextManager.__subclasshook__N) �__name__� __module__�__qualname__�__doc__r �abc�abstractmethodr �classmethodr r r r r r s c @ s e Zd ZdZdd� Zdd� ZdS )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. r )r r r r �_recreate_cm$ s zContextDecorator._recreate_cmc s t � �� �fdd��}|S )Nc s �j � � � | |�S Q R X d S )N)r! )�args�kwds)�funcr r r �inner1 s z(ContextDecorator.__call__.<locals>.inner)r )r r$ r% r )r$ r r �__call__0 s zContextDecorator.__call__N)r r r r r! r&