U
    ƒIÀd-&  ã                   @   s,  d dl Zd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZm Z  d d
l!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* e +e,¡Z-G dd„ deƒZ.G dd„ dƒZ/G dd„ de%ƒZ0G dd„ de'ƒZ1dS )é    N)Ú
CollectionÚIterableÚIteratorÚListÚMappingÚ
NamedTupleÚOptional)Úpkg_resources)ÚRequirement)ÚNormalizedNameÚcanonicalize_name)Úparse)ÚInvalidWheelÚNoneMetadataErrorÚUnsupportedWheel)Úegg_link_path_from_location)Údisplay_pathÚnormalize_path)Úparse_wheelÚread_wheel_metadata_fileé   )ÚBaseDistributionÚBaseEntryPointÚBaseEnvironmentÚDistributionVersionÚInfoPathÚWheelc                   @   s&   e Zd ZU eed< eed< eed< dS )Ú
EntryPointÚnameÚvalueÚgroupN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© r&   r&   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pip/_internal/metadata/pkg_resources.pyr      s   
r   c                   @   s”   e Zd ZdZeeef eddœdd„Zeedœdd„Z	eedœd	d
„Z
eee dœdd„Zeedœdd„Zeee dœdd„Zeeddœdd„ZdS )ÚInMemoryMetadataz”IMetadataProvider that reads metadata files from a dictionary.

    This also maps metadata decoding exceptions to our internal exception type.
    N)ÚmetadataÚ
wheel_nameÚreturnc                 C   s   || _ || _d S ©N)Ú	_metadataÚ_wheel_name)Úselfr)   r*   r&   r&   r'   Ú__init__*   s    zInMemoryMetadata.__init__©r   r+   c                 C   s
   || j kS r,   )r-   ©r/   r   r&   r&   r'   Úhas_metadata.   s    zInMemoryMetadata.has_metadatac                 C   sV   z| j |  ¡ W S  tk
rP } z"td| j› d|› d|› d�ƒ‚W 5 d }~X Y nX d S )NzError decoding metadata for z: z in z file)r-   ÚdecodeÚUnicodeDecodeErrorr   r.   )r/   r   Úer&   r&   r'   Úget_metadata1   s    ÿzInMemoryMetadata.get_metadatac                 C   s   t  |  |¡¡S r,   )r	   Úyield_linesr7   r2   r&   r&   r'   Úget_metadata_lines:   s    z#InMemoryMetadata.get_metadata_linesc                 C   s   dS ©NFr&   r2   r&   r&   r'   Úmetadata_isdir=   s    zInMemoryMetadata.metadata_isdirc                 C   s   g S r,   r&   r2   r&   r&   r'   Úmetadata_listdir@   s    z!InMemoryMetadata.metadata_listdir)Úscript_nameÚ	namespacer+   c                 C   s   d S r,   r&   )r/   r=   r>   r&   r&   r'   Ú
run_scriptC   s    zInMemoryMetadata.run_script)r!   r"   r#   Ú__doc__r   r$   Úbytesr0   Úboolr3   r7   r   r9   r;   r   r<   r?   r&   r&   r&   r'   r(   $   s   	r(   c                   @   sZ  e Zd Zejddœdd„Zeeedœdd„ƒZ	ee
eeedœd	d
„ƒZeeeedœdd„ƒZeee dœdd„ƒZeee dœdd„ƒZeee dœdd„ƒZeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZeedœdd„Zee dœdd„Zeedœd d!„Zee dœd"d#„Z e!j"j#dœd$d%„Z$d,e%e ee& d'œd(d)„Z'ee dœd*d+„Z(dS )-ÚDistributionN)Údistr+   c                 C   s
   || _ d S r,   )Ú_dist©r/   rD   r&   r&   r'   r0   H   s    zDistribution.__init__)Ú	directoryr+   c           	      C   sŽ   |  tj¡}tj |¡\}}t ||¡}| d¡rJtj}tj 	|¡d }n.| d¡sXt
‚tj}tj 	|¡d  d¡d }||||d�}| |ƒS )Nz	.egg-infor   z
.dist-infoú-)Úproject_namer)   )ÚrstripÚosÚsepÚpathÚsplitr	   ÚPathMetadataÚendswithrC   ÚsplitextÚAssertionErrorÚDistInfoDistribution)	ÚclsrG   Údist_dirÚbase_dirÚdist_dir_namer)   Údist_clsÚ	dist_namerD   r&   r&   r'   Úfrom_directoryK   s    
zDistribution.from_directory)Úmetadata_contentsÚfilenamerI   r+   c                 C   s&   d|i}t j|t||ƒ|d�}| |ƒS )NÚMETADATA©Úlocationr)   rI   )r	   rS   r(   )rT   r[   r\   rI   Úmetadata_dictrD   r&   r&   r'   Úfrom_metadata_file_contents_   s     ÿýz(Distribution.from_metadata_file_contents)Úwheelr   r+   c              
      sÆ   z>|  ¡ �,‰tˆ|ƒ\‰ }‡ ‡fdd„ˆ ¡ D ƒ}W 5 Q R X W nd tjk
rp } zt|j|ƒ|‚W 5 d }~X Y n4 tk
r¢ } zt|› d|› �ƒ‚W 5 d }~X Y nX tj	|jt
||jƒ|d�}| |ƒS )Nc                    s4   i | ],}|  ˆ › d �¡r| d d¡d tˆ|ƒ“qS )ú/r   éÿÿÿÿ)Ú
startswithrN   r   )Ú.0rM   ©Úinfo_dirÚzfr&   r'   Ú
<dictcomp>u   s   þ z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, r^   )Ú
as_zipfiler   ÚnamelistÚzipfileÚ
BadZipFiler   r_   r   r	   rS   r(   )rT   rb   r   Ú_r`   r6   rD   r&   rg   r'   Ú
from_wheelp   s     
þ$
ýzDistribution.from_wheel©r+   c                 C   s   | j jS r,   )rE   r_   ©r/   r&   r&   r'   r_   …   s    zDistribution.locationc                 C   s.   t | jƒ}|r|}n| jr"| j}nd S t|ƒS r,   )r   Úraw_namer_   r   )r/   Úegg_linkr_   r&   r&   r'   Úinstalled_location‰   s    
zDistribution.installed_locationc                 C   s   | j jS r,   )rE   Úegg_inforr   r&   r&   r'   Úinfo_location”   s    zDistribution.info_locationc                 C   s,   zt | jjjƒW S  tk
r&   Y dS X d S r:   )rB   rE   Ú	_providerrM   ÚAttributeErrorrr   r&   r&   r'   Úinstalled_by_distutils˜   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjƒS r,   )r   rE   rI   rr   r&   r&   r'   Úcanonical_name¢   s    zDistribution.canonical_namec                 C   s   t | jjƒS r,   )Úparse_versionrE   Úversionrr   r&   r&   r'   r}   ¦   s    zDistribution.version)rM   r+   c                 C   s   | j  t|ƒ¡S r,   )rE   r3   r$   )r/   rM   r&   r&   r'   Úis_fileª   s    zDistribution.is_filec                 c   s   | j  d¡E d H  d S )NÚscripts)rE   r<   rr   r&   r&   r'   Úiter_distutils_script_names­   s    z(Distribution.iter_distutils_script_namesc                 C   s>   t |ƒ}| j |¡st|ƒ‚| j |¡}|d kr:t| |ƒ‚|S r,   )r$   rE   r3   ÚFileNotFoundErrorr7   r   )r/   rM   r   Úcontentr&   r&   r'   Ú	read_text°   s    
zDistribution.read_textc                 c   sZ   | j  ¡  ¡ D ]F\}}| ¡ D ]4\}}t|ƒ d¡\}}}t| ¡ | ¡ |d�V  qqd S )Nú=)r   r   r    )rE   Úget_entry_mapÚitemsr$   Ú	partitionr   Ústrip)r/   r    Úentriesr   Úentry_pointro   r   r&   r&   r'   Úiter_entry_points¹   s    zDistribution.iter_entry_pointsc                 C   s„   t | jtjƒrd}nd}z|  |¡}W n@ tk
rf   | jrHt| jƒ}n
t| jƒ}t	 
d|¡ d}Y nX tj ¡ }| |¡ | ¡ S )z�
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        r]   zPKG-INFOzNo metadata found in %sÚ )Ú
isinstancerE   r	   rS   rƒ   r�   r_   r   ÚreprÚloggerÚwarningÚemailÚparserÚ
FeedParserÚfeedÚclose)r/   Úmetadata_namer)   Údisplaying_pathÚfeed_parserr&   r&   r'   Ú_metadata_impl¿   s    



zDistribution._metadata_implr&   )Úextrasr+   c                 C   s"   |rt |ƒ | jj¡}| j |¡S r,   )Ú	frozensetÚintersectionrE   rš   Úrequires)r/   rš   r&   r&   r'   Úiter_dependenciesÕ   s    zDistribution.iter_dependenciesc                 C   s   | j jS r,   )rE   rš   rr   r&   r&   r'   Úiter_provided_extrasÚ   s    z!Distribution.iter_provided_extras)r&   ))r!   r"   r#   r	   rC   r0   Úclassmethodr$   r   rZ   rA   ra   r   rp   Úpropertyr   r_   ru   rw   rB   rz   r   r{   r   r}   r   r~   r   r€   rƒ   r   r   r‹   r‘   ÚmessageÚMessager™   r   r
   rž   rŸ   r&   r&   r&   r'   rC   G   s<   û
		rC   c                   @   s†   e Zd Zejddœdd„Zeedœdd„ƒZee	e
e  edœd	d
„ƒZee dœdd„Zee	e dœdd„Zee	e dœdd„ZdS )ÚEnvironmentN)Úwsr+   c                 C   s
   || _ d S r,   )Ú_ws)r/   r¥   r&   r&   r'   r0   ß   s    zEnvironment.__init__rq   c                 C   s
   | t jƒS r,   )r	   Úworking_set)rT   r&   r&   r'   Údefaultâ   s    zEnvironment.default)Úpathsr+   c                 C   s   | t  |¡ƒS r,   )r	   Ú
WorkingSet)rT   r©   r&   r&   r'   Ú
from_pathsæ   s    zEnvironment.from_pathsc                 c   s   | j D ]}t|ƒV  qd S r,   )r¦   rC   rF   r&   r&   r'   Ú_iter_distributionsê   s    
zEnvironment._iter_distributionsr1   c                 C   s,   t |ƒ}|  ¡ D ]}|j|kr|  S qdS )zÛFind a distribution matching the ``name`` in the environment.

        This searches from *all* distributions available in the environment, to
        match the behavior of ``pkg_resources.get_distribution()``.
        N)r   Úiter_all_distributionsr{   )r/   r   r{   rD   r&   r&   r'   Ú_search_distributionî   s
    

z Environment._search_distributionc                 C   sF   |   |¡}|r|S z| j |¡ W n tjk
r:   Y d S X |   |¡S r,   )r®   r¦   Úrequirer	   ÚDistributionNotFound)r/   r   rD   r&   r&   r'   Úget_distributionú   s    

zEnvironment.get_distribution)r!   r"   r#   r	   rª   r0   r    r   r¨   r   r   r$   r«   r   r   r¬   r®   r±   r&   r&   r&   r'   r¤   Þ   s   r¤   )2Úemail.messager‘   Úemail.parserÚloggingrK   rm   Útypingr   r   r   r   r   r   r   Úpip._vendorr	   Ú"pip._vendor.packaging.requirementsr
   Zpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   r|   Úpip._internal.exceptionsr   r   r   Úpip._internal.utils.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.wheelr   r   Úbaser   r   r   r   r   r   Ú	getLoggerr!   r�   r   r(   rC   r¤   r&   r&   r&   r'   Ú<module>   s(   $ 	
# 