o
    ñ‘OjI$  ã                   @   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&   új/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.pyr      s   
 r   c                   @   s¦   e Zd ZdZdeeef deddfdd„Zdedefd	d
„Z	dedefdd„Z
dedee fdd„Zdedefdd„Zdedee fdd„Zdededdfdd„ZdS )ÚWheelMetadataz”IMetadataProvider that reads metadata files from a dictionary.

    This also maps metadata decoding exceptions to our internal exception type.
    ÚmetadataÚ
wheel_nameÚreturnNc                 C   s   || _ || _d S ©N)Ú	_metadataÚ_wheel_name)Úselfr)   r*   r&   r&   r'   Ú__init__*   s   
zWheelMetadata.__init__r   c                 C   s
   || j v S r,   )r-   ©r/   r   r&   r&   r'   Úhas_metadata.   ó   
zWheelMetadata.has_metadatac                 C   sH   z| j |  ¡ W S  ty# } ztd| j› d|› d|› d�ƒ‚d }~ww )NzError decoding metadata for z: z in z file)r-   ÚdecodeÚUnicodeDecodeErrorr   r.   )r/   r   Úer&   r&   r'   Úget_metadata1   s   ÿ€þzWheelMetadata.get_metadatac                 C   s   t  |  |¡¡S r,   )r	   Úyield_linesr7   r1   r&   r&   r'   Úget_metadata_lines:   ó   z WheelMetadata.get_metadata_linesc                 C   s   dS ©NFr&   r1   r&   r&   r'   Úmetadata_isdir=   ó   zWheelMetadata.metadata_isdirc                 C   s   g S r,   r&   r1   r&   r&   r'   Úmetadata_listdir@   r=   zWheelMetadata.metadata_listdirÚscript_nameÚ	namespacec                 C   s   d S r,   r&   )r/   r?   r@   r&   r&   r'   Ú
run_scriptC   r=   zWheelMetadata.run_script)r!   r"   r#   Ú__doc__r   r$   Úbytesr0   Úboolr2   r7   r   r9   r<   r   r>   rA   r&   r&   r&   r'   r(   $   s    	r(   c                   @   sP  e Zd Zdejddfdd„Zededefdd„ƒZ	ed	e
d
edefdd„ƒZedee fdd„ƒZedee fdd„ƒZedee fdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZdedefdd„Zdee fdd„Zdedefdd„Zdee fd d!„Zdej j!fd"d#„Z"d*d%e#e dee$ fd&d'„Z%dee fd(d)„Z&dS )+ÚDistributionÚdistr+   Nc                 C   ó
   || _ d S r,   )Ú_dist©r/   rF   r&   r&   r'   r0   H   r3   zDistribution.__init__Ú	directoryc           	      C   sŽ   |  tj¡}tj |¡\}}t ||¡}| d¡r%tj}tj 	|¡d }n| d¡s,J ‚tj
}tj 	|¡d  d¡d }||||d�}| |ƒS )Nz	.egg-infor   z
.dist-infoú-)Úproject_namer)   )ÚrstripÚosÚsepÚpathÚsplitr	   ÚPathMetadataÚendswithrE   ÚsplitextÚDistInfoDistribution)	ÚclsrJ   Údist_dirÚbase_dirÚdist_dir_namer)   Údist_clsÚ	dist_namerF   r&   r&   r'   Úfrom_directoryK   s   
zDistribution.from_directoryÚwheelr   c              
      sÆ   z)|  ¡ �‰tˆ|ƒ\‰ }‡ ‡fdd„ˆ ¡ D ƒ}W d   ƒ n1 s#w   Y  W n( tjy= } zt|j|ƒ|‚d }~w tyQ } z	t|› d|› �ƒ‚d }~ww tj	|jt
||jƒ|d�}| |ƒS )Nc                    s4   i | ]}|  ˆ › d �¡r| d d¡d tˆ|ƒ“qS )ú/r   éÿÿÿÿ)Ú
startswithrQ   r   )Ú.0rP   ©Úinfo_dirÚzfr&   r'   Ú
<dictcomp>d   s    ýÿz+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, )Úlocationr)   rL   )Ú
as_zipfiler   ÚnamelistÚzipfileÚ
BadZipFiler   rf   r   r	   rU   r(   )rV   r]   r   Ú_Úmetadata_textr6   rF   r&   rb   r'   Ú
from_wheel_   s*   
þþ€€€ÿ
ýzDistribution.from_wheelc                 C   ó   | j jS r,   )rH   rf   ©r/   r&   r&   r'   rf   t   ó   zDistribution.locationc                 C   s2   t | jƒ}|r|}t|ƒS | jr| j}t|ƒS d S r,   )r   Úraw_namerf   r   )r/   Úegg_linkrf   r&   r&   r'   Úinstalled_locationx   s   
üÿzDistribution.installed_locationc                 C   rn   r,   )rH   Úegg_inforo   r&   r&   r'   Úinfo_locationƒ   rp   zDistribution.info_locationc                 C   s&   zt | jjjƒW S  ty   Y dS w r;   )rD   rH   Ú	_providerrP   ÚAttributeErrorro   r&   r&   r'   Úinstalled_by_distutils‡   s
   ÿz#Distribution.installed_by_distutilsc                 C   ó   t | jjƒS r,   )r   rH   rL   ro   r&   r&   r'   Úcanonical_name‘   ó   zDistribution.canonical_namec                 C   ry   r,   )Úparse_versionrH   Úversionro   r&   r&   r'   r}   •   r{   zDistribution.versionrP   c                 C   s   | j  t|ƒ¡S r,   )rH   r2   r$   )r/   rP   r&   r&   r'   Úis_file™   r:   zDistribution.is_filec                 c   s   � | j  d¡E d H  d S )NÚscripts)rH   r>   ro   r&   r&   r'   Úiter_distutils_script_namesœ   s   €z(Distribution.iter_distutils_script_namesc                 C   s>   t |ƒ}| j |¡st|ƒ‚| j |¡}|d u rt| |ƒ‚|S r,   )r$   rH   r2   ÚFileNotFoundErrorr7   r   )r/   rP   r   Úcontentr&   r&   r'   Ú	read_textŸ   s   
zDistribution.read_textc                 c   s\   � | j  ¡  ¡ D ]#\}}| ¡ D ]\}}t|ƒ d¡\}}}t| ¡ | ¡ |d�V  qqd S )Nú=)r   r   r    )rH   Úget_entry_mapÚitemsr$   Ú	partitionr   Ústrip)r/   r    Úentriesr   Úentry_pointrk   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y2   | jr#t| jƒ}nt| jƒ}t	 
d|¡ d}Y nw tj ¡ }| |¡ | ¡ S )z�
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        ÚMETADATAzPKG-INFOzNo metadata found in %sÚ )Ú
isinstancerH   r	   rU   rƒ   r�   rf   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&   Úextrasc                 C   s"   |rt |ƒ | jj¡}| j |¡S r,   )Ú	frozensetÚintersectionrH   r›   Úrequires)r/   r›   r&   r&   r'   Úiter_dependenciesÄ   s   zDistribution.iter_dependenciesc                 C   rn   r,   )rH   r›   ro   r&   r&   r'   Úiter_provided_extrasÉ   s   z!Distribution.iter_provided_extras)r&   )'r!   r"   r#   r	   rE   r0   Úclassmethodr$   r   r\   r   rm   Úpropertyr   rf   rs   ru   rD   rx   r   rz   r   r}   r   r~   r   r€   rƒ   r   r   r‹   r’   ÚmessageÚMessagerš   r   r
   rŸ   r    r&   r&   r&   r'   rE   G   s2    
		rE   c                   @   sŽ   e Zd Zdejddfdd„Zedefdd„ƒZede	e
e  defd	d
„ƒZdee fdd„Zdede	e fdd„Zdede	e fdd„ZdS )ÚEnvironmentÚwsr+   Nc                 C   rG   r,   )Ú_ws)r/   r¦   r&   r&   r'   r0   Î   r3   zEnvironment.__init__c                 C   s
   | t jƒS r,   )r	   Úworking_set)rV   r&   r&   r'   ÚdefaultÑ   s   
zEnvironment.defaultÚpathsc                 C   s   | t  |¡ƒS r,   )r	   Ú
WorkingSet)rV   rª   r&   r&   r'   Ú
from_pathsÕ   s   zEnvironment.from_pathsc                 c   s   � | j D ]}t|ƒV  qd S r,   )r§   rE   rI   r&   r&   r'   Ú_iter_distributionsÙ   s   €
ÿzEnvironment._iter_distributionsr   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_distributionsrz   )r/   r   rz   rF   r&   r&   r'   Ú_search_distributionÝ   s   
ÿz Environment._search_distributionc                 C   sD   |   |¡}|r	|S z| j |¡ W n tjy   Y d S w |   |¡S r,   )r¯   r§   Úrequirer	   ÚDistributionNotFound)r/   r   rF   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ÚloggingrN   ri   Útypingr   r   r   r   r   r   r   Úpip._vendorr	   Ú"pip._vendor.packaging.requirementsr
   Úpip._vendor.packaging.utilsr   r   Ú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(   rE   r¥   r&   r&   r&   r'   Ú<module>   s*    $ 
	# 