3
€»e"  ã               @   sv   d dl Z d dlZdddgZyd dlmZ W n  ek
rJ   d dlmZ Y nX dd„ Zdd„ ZG d	d„ dƒZ	d
d„ Z
dS )é    NÚinstallÚ
NullFinderÚProtocol)r   c             C   s   t j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
   úH/tmp/pip-build-3irwxpxt/importlib-metadata/importlib_metadata/_compat.pyr      s    c              C   s&   dd„ } xt | tjƒD ]}|`qW 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_spec3   s    zNullFinder.find_specN)Ú__name__r   Ú__qualname__Ú__doc__Ústaticmethodr   Úfind_moduler
   r
   r
   r   r   -   s   
c             C   s   t jƒ dk}| | S )zY
    Adjust for variable stacklevel on partial under PyPy.

    Workaround for #327.
    ÚPyPy)ÚplatformÚpython_implementation)ÚvalZis_pypyr
   r
   r   Úpypy_partial@   s    r    )r   r   Ú__all__Útypingr   ÚImportErrorZtyping_extensionsr   r   r   r    r
   r
   r
   r   Ú<module>   s   
