U
    Ðvag3'  ã                   @   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* dddgZ+e ,e-¡Z.dZ/G dd„ deƒZ0G dd„ dƒZ1G dd„ de%ƒZ2G dd„ de'ƒZ3d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ÚWheelÚNAMEÚDistributionÚEnvironmentr	   c                   @   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)   úX/var/www/html/myvenv/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/   )r0   ©r2   r!   r)   r)   r*   Úhas_metadata2   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)r0   ÚdecodeÚUnicodeDecodeErrorr   r1   )r2   r!   Úer)   r)   r*   Úget_metadata5   s    ÿzInMemoryMetadata.get_metadatac                 C   s   t  |  |¡¡S r/   )r	   Zyield_linesr:   r5   r)   r)   r*   Úget_metadata_lines>   s    z#InMemoryMetadata.get_metadata_linesc                 C   s   dS ©NFr)   r5   r)   r)   r*   Úmetadata_isdirA   s    zInMemoryMetadata.metadata_isdirc                 C   s   g S r/   r)   r5   r)   r)   r*   Úmetadata_listdirD   s    z!InMemoryMetadata.metadata_listdir)Úscript_nameÚ	namespacer.   c                 C   s   d S r/   r)   )r2   r?   r@   r)   r)   r*   Ú
run_scriptG   s    zInMemoryMetadata.run_script)r$   r%   r&   Ú__doc__r   r'   Úbytesr3   Úboolr6   r:   r   r;   r=   r   r>   rA   r)   r)   r)   r*   r+   (   s   	r+   c                   @   sj  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(eed,œd-d.„Z)dS )0r   N)Údistr.   c                 C   s
   || _ d S r/   )Ú_dist©r2   rE   r)   r)   r*   r3   L   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	   ZPathMetadataÚendswithr   ÚsplitextÚAssertionErrorÚDistInfoDistribution)	ÚclsrH   Zdist_dirÚbase_dirZdist_dir_namer,   Zdist_clsÚ	dist_namerE   r)   r)   r*   Úfrom_directoryO   s    
zDistribution.from_directory)Úmetadata_contentsÚfilenamerJ   r.   c                 C   s&   d|i}t j|t||ƒ|d�}| |ƒS )NÚMETADATA©Úlocationr,   rJ   )r	   rS   r+   )rT   rX   rY   rJ   Úmetadata_dictrE   r)   r)   r*   Úfrom_metadata_file_contentsc   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   éÿÿÿÿ)Ú
startswithrO   r   )Ú.0rN   ©Úinfo_dirÚzfr)   r*   Ú
<dictcomp>y   s   þ z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, r[   )Ú
as_zipfiler   ÚnamelistÚzipfileÚ
BadZipFiler   r\   r   r	   rS   r+   )rT   r_   r!   Ú_r]   r9   rE   r)   rd   r*   Ú
from_wheelt   s     
þ$
ýzDistribution.from_wheel©r.   c                 C   s   | j jS r/   )rF   r\   ©r2   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   )r2   Úegg_linkr\   r)   r)   r*   Úinstalled_location�   s    
zDistribution.installed_locationc                 C   s   | j jS r/   )rF   Úegg_inforo   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<   )rD   rF   Z	_providerrN   ÚAttributeErrorro   r)   r)   r*   Úinstalled_by_distutilsœ   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjƒS r/   )r   rF   rJ   ro   r)   r)   r*   Úcanonical_name¦   s    zDistribution.canonical_namec                 C   s   t | jjƒS r/   )Úparse_versionrF   Úversionro   r)   r)   r*   ry   ª   s    zDistribution.version)rN   r.   c                 C   s   | j  t|ƒ¡S r/   )rF   r6   r'   )r2   rN   r)   r)   r*   Úis_file®   s    zDistribution.is_filec                 c   s   | j  d¡E d H  d S )NÚscripts)rF   r>   ro   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'   rF   r6   ÚFileNotFoundErrorr:   r   )r2   rN   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#   )rF   Zget_entry_mapÚitemsr'   Ú	partitionr    Ústrip)r2   r#   Úentriesr!   Úentry_pointrl   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.
        rZ   zPKG-INFOzNo metadata found in %sÚ )Ú
isinstancerF   r	   rS   r   r}   r\   r   ÚreprÚloggerÚwarningÚemailÚparserÚ
FeedParserÚfeedÚclose)r2   Úmetadata_namer,   Zdisplaying_pathZfeed_parserr)   r)   r*   Ú_metadata_implÃ   s    



zDistribution._metadata_implr)   )Úextrasr.   c                 C   s0   |r$t dd„ |D ƒƒ}| | jj¡}| j |¡S )Nc                 s   s   | ]}t  |¡V  qd S r/   )r	   Ú
safe_extra)rc   r9   r)   r)   r*   Ú	<genexpr>Û   s     z1Distribution.iter_dependencies.<locals>.<genexpr>)Ú	frozensetÚintersectionrF   r“   Úrequires)r2   r“   r)   r)   r*   Úiter_dependenciesÙ   s    zDistribution.iter_dependenciesc                 C   s   | j jS r/   )rF   r“   ro   r)   r)   r*   Úiter_provided_extrasß   s    z!Distribution.iter_provided_extras)Úextrar.   c                 C   s   t  |¡| jjkS r/   )r	   r”   rF   r“   )r2   r›   r)   r)   r*   Úis_extra_providedâ   s    zDistribution.is_extra_provided)r)   )*r$   r%   r&   r	   r   r3   Úclassmethodr'   r   rW   rC   r^   r   rm   Úpropertyr   r\   rr   rt   rD   rv   r   rw   r   ry   r   rz   r   r|   r   r   r   r†   rŒ   ÚmessageÚMessager’   r   r
   r™   rš   rœ   r)   r)   r)   r*   r   K   s>   û
		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 )r   N)Úwsr.   c                 C   s
   || _ d S r/   )Ú_ws)r2   r¡   r)   r)   r*   r3   ç   s    zEnvironment.__init__rn   c                 C   s
   | t jƒS r/   )r	   Z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¢   r   rG   r)   r)   r*   Ú_iter_distributionsò   s    
zEnvironment._iter_distributionsr4   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_distributionsrw   )r2   r!   rw   rE   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¢   Zrequirer	   ÚDistributionNotFound)r2   r!   rE   r)   r)   r*   Úget_distribution  s    

zEnvironment.get_distribution)r$   r%   r&   r	   r¥   r3   r�   r   r£   r   r   r'   r¦   r   r   r§   r©   r«   r)   r)   r)   r*   r   æ   s   )4Úemail.messagerŒ   Úemail.parserÚloggingrL   rj   Útypingr   r   r   r   r   r   r   Úpip._vendorr	   Ú"pip._vendor.packaging.requirementsr
   Zpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rx   Ú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   Ú__all__Ú	getLoggerr$   rŠ   r   r    r+   r   r   r)   r)   r)   r*   Ú<module>   s,   $ 	

# 