U
    1^,                     @   s  d dl mZ d dlZd dlZd dlZd dlZejdkrvd dlZd dlm	Z	 d dl
mZ ejZejZejZejZejZnDd dlm	Z	 d dlmZ d dlmZ eefZeefZeefZeefZejdkrd dlZnd dlZz
ejZW n eefk
r   eZY nX ejdkrd dlmZ nG d	d
 d
eZe Z!ddd
ddddddddgZ"dd Z#dd Z$G dd dZ%dd Z&ejdk r|e&nej'Z(G dd dZ)dS )    )absolute_importN)   )ConfigParser)suppress)imap)r      )MetaPathFinderc                   @   s   e Zd ZejZdS )r   N)__name__
__module____qualname__abcABCMeta__metaclass__ r   r   </usr/lib/python3/dist-packages/importlib_metadata/_compat.pyr   )   s   r   install
NullFinderModuleNotFoundErrorpathlibr   mapr   FileNotFoundErrorNotADirectoryErroremail_message_from_stringc                 C   s   t j|   t  | S )z
    Class decorator for installation on sys.meta_path.

    Adds the backport DistributionFinder to sys.meta_path and
    attempts to disable the finder functionality of the stdlib
    DistributionFinder.
    )sys	meta_pathappenddisable_stdlib_finder)clsr   r   r   r   5   s    c                  C   s"   dd } t | tjD ]}|`qdS )z
    Give the backport primacy for discovering path-based distributions
    by monkey-patching the stdlib O_O.

    See #91 for more background for rationale on this sketchy
    behavior.
    c                 S   s   t | dd dkot| dS )Nr
   _frozen_importlib_externalfind_distributions)getattrhasattr)finderr   r   r   matchesJ   s    z&disable_stdlib_finder.<locals>.matchesN)filterr   r   r   )r#   r"   r   r   r   r   B   s    r   c                   @   s    e Zd ZdZedd ZeZdS )r   zj
    A "Finder" (aka "MetaClassFinder") that never finds any modules,
    but may find distributions.
    c                  O   s   d S Nr   )argskwargsr   r   r   	find_specX   s    zNullFinder.find_specN)r	   r
   r   __doc__staticmethodr(   find_moduler   r   r   r   r   S   s   
	c                 C   s   t | }t|S r%   )ioStringIOemailZmessage_from_file)textZ	io_bufferr   r   r   py2_message_from_stringe   s    
r0   c                   @   s,   e Zd ZdZeedZdd Zer&eZ[dS )	PyPy_reprzc
    Override repr for EntryPoint objects on PyPy to avoid __iter__ access.
    Ref #97, #102.
    Zpypy_version_infoc                    s,    fdd}d t| j}djf t S )Nc                    s   t  | }djf t S )Nz{name}={value!r})r    formatlocals)namevalueselfr   r   
make_param{   s    
z-PyPy_repr.__compat_repr__.<locals>.make_paramz, zEntryPoint({params}))joinr   _fieldsr2   r3   )r7   r8   Zparamsr   r6   r   __compat_repr__z   s    zPyPy_repr.__compat_repr__N)	r	   r
   r   r)   r!   r   Zaffectedr;   __repr__r   r   r   r   r1   s   s   
r1   )*Z
__future__r   r,   r   r   r.   version_infobuiltinsconfigparserr   
contextlibr   r   IsADirectoryErrorr   PermissionErrorr   Zbackports.configparser	itertoolsr   Zcontextlib2IOErrorOSErrorr   Zpathlib2r   	NameErrorAttributeErrorImportErrorimportlib.abcr   objecttyper   __all__r   r   r   r0   Zmessage_from_stringr   r1   r   r   r   r   <module>   sh   




        	