U .eB @ s d Z ddlZddlZddlZddlmZ ddlmZ ddddd d ddd g Zedg7 Zej dd dkrnej Znede fddiZdd Zdd ZG dd deZG dd d e ZG dd deZdd ZG dd de ZG dd de ZG d d deZG d!d deZG d"d d e Zej d d#kZer@d$d% Zd&d' Znd(d% Zd)d' Zzdd*lmZ W n ek rz eZ Y n X d+d, Z G d-d d e Z!G d.d de!Z"G d/d deZ#dS )0zAcontextlib2 - backports and enhancements to the contextlib module N)dequewrapscontextmanagerclosingnullcontextAbstractContextManagerContextDecorator ExitStackredirect_stdoutredirect_stderrsuppressContextStack ) ABC __slots__ c C s0 | |krd S | | | jD ]}t|| q|S N)append __bases___classic_mro)CresultBr r ;/usr/lib/python3.8/site-packages/pip/_vendor/contextlib2.pyr s r c G sv z | j }W n" tk r, tt| g }Y nX |D ]>}|D ],}||jkr:|j| d krbt S q2q:t S q2dS )NT)__mro__AttributeErrortupler __dict__NotImplemented)r methodsmromethodr r r r _check_methods$ s r% c @ 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.r selfr r r __enter__8 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__<