o
    La
                     @   s   d dl Z d dlZg dZzd dlmZ W n ey$   	 d dlmZ Y nw dd Zdd ZG dd	 d	Z	G d
d dZ
dd ZdS )    N)install
NullFinder	PyPy_reprProtocol)r   c                 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)cls r   </usr/lib/python3/dist-packages/importlib_metadata/_compat.pyr      s   r   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 )N
__module___frozen_importlib_externalfind_distributions)getattrhasattr)finderr   r   r   matches)   s   z&disable_stdlib_finder.<locals>.matchesN)filterr   r   r   )r   r   r   r   r   r	       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_spec8   s   zNullFinder.find_specN)__name__r   __qualname____doc__staticmethodr   find_moduler   r   r   r   r   2   s
    
	r   c                   @   s,   e Zd ZdZeedZdd ZereZ[dS )r   zc
    Override repr for EntryPoint objects on PyPy to avoid __iter__ access.
    Ref #97, #102.
    pypy_version_infoc                    s*    fdd}d t| j}d| dS )Nc                    s   t  | }|  d|S )N=)r   )namevalueselfr   r   
make_paramN   s   
z-PyPy_repr.__compat_repr__.<locals>.make_paramz, zEntryPoint())joinmap_fields)r"   r#   paramsr   r!   r   __compat_repr__M   s   zPyPy_repr.__compat_repr__N)	r   r   r   r   r   r   affectedr)   __repr__r   r   r   r   r   E   s    
r   c                 C   s   t  dk}| | S )zY
    Adjust for variable stacklevel on partial under PyPy.

    Workaround for #327.
    PyPy)platformpython_implementation)valis_pypyr   r   r   pypy_partialZ   s   r1   )r   r-   __all__typingr   ImportErrortyping_extensionsr   r	   r   r   r1   r   r   r   r   <module>   s    	