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    ú	