a
    ýÓEbð$  ã                   @   s$  d dl Z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$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#ƒZ.G dd„ de%ƒZ/dS )é    N)Ú
CollectionÚIterableÚIteratorÚListÚMappingÚ
NamedTupleÚOptional)Úpkg_resources)ÚRequirement)ÚNormalizedNameÚcanonicalize_name)Úparse)ÚInvalidWheelÚNoneMetadataErrorÚUnsupportedWheel)Údisplay_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$   úd/home/ja/django-apps/lartica_env/lib/python3.9/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 )ÚWheelMetadataz”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WheelMetadata.__init__©r   r)   c                 C   s
   || j v S r*   )r+   ©r-   r   r$   r$   r%   Úhas_metadata.   s    zWheelMetadata.has_metadatac                 C   sX   z| j |  ¡ W S  tyR } z*td| j› d|› d|› d�ƒ‚W Y d }~n
d }~0 0 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WheelMetadata.get_metadatac                 C   s   t  |  |¡¡S r*   )r	   Zyield_linesr5   r0   r$   r$   r%   Úget_metadata_lines:   s    z WheelMetadata.get_metadata_linesc                 C   s   dS ©NFr$   r0   r$   r$   r%   Úmetadata_isdir=   s    zWheelMetadata.metadata_isdirc                 C   s   g S r*   r$   r0   r$   r$   r%   Úmetadata_listdir@   s    zWheelMetadata.metadata_listdir)Úscript_nameÚ	namespacer)   c                 C   s   d S r*   r$   )r-   r:   r;   r$   r$   r%   Ú
run_scriptC   s    zWheelMetadata.run_script)r   r    r!   Ú__doc__r   r"   Úbytesr.   Úboolr1   r5   r   r6   r8   r   r9   r<   r$   r$   r$   r%   r&   $   s   	r&   c                   @   s4  e Zd Zejddœdd„Zeed dœdd„ƒZee	ed 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ej dœdd„Zeedœdd„Zee dœdd„Ze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-   rA   r$   r$   r%   r.   H   s    zDistribution.__init__)Ú	directoryr)   c           	      C   sŽ   |  tj¡}tj |¡\}}t ||¡}| d¡rJtj}tj 	|¡d }n.| d¡sXJ ‚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ÚDistInfoDistribution)	ÚclsrD   Zdist_dirÚbase_dirZdist_dir_namer'   Zdist_clsÚ	dist_namerA   r$   r$   r%   Úfrom_directoryK   s    
zDistribution.from_directory)Úwheelr   r)   c              
      sÞ   zR|  ¡ �6‰tˆ|ƒ\‰ }‡ ‡fdd„ˆ ¡ D ƒ}W d  ƒ n1 sF0    Y  W nh tjy† } zt|j|ƒ|‚W Y d}~n>d}~0  tyº } zt|› d|› �ƒ‚W Y d}~n
d}~0 0 tj	|jt
||jƒ|d�}| |ƒS )a  Load the distribution from a given wheel.

        :raises InvalidWheel: Whenever loading of the wheel causes a
            :py:exc:`zipfile.BadZipFile` exception to be thrown.
        :raises UnsupportedWheel: If the wheel is a valid zip, but malformed
            internally.
        c                    s4   i | ],}|  ˆ › d �¡r| d d¡d tˆ|ƒ“qS )ú/r   éÿÿÿÿ)Ú
startswithrK   r   )Ú.0rJ   ©Úinfo_dirÚzfr$   r%   Ú
<dictcomp>k   s   þz+Distribution.from_wheel.<locals>.<dictcomp>Nz has an invalid wheel, )Úlocationr'   rF   )Ú
as_zipfiler   ÚnamelistÚzipfileÚ
BadZipFiler   r\   r   r	   rN   r&   )rO   rS   r   Ú_Zmetadata_textr4   rA   r$   rX   r%   Ú
from_wheel_   s     	
þ("(
ýzDistribution.from_wheel©r)   c                 C   s   | j jS r*   )rB   r\   ©r-   r$   r$   r%   r\   {   s    zDistribution.locationc                 C   s   | j jS r*   )rB   Úegg_inford   r$   r$   r%   Úinfo_location   s    zDistribution.info_locationc                 C   s*   zt | jjjƒW S  ty$   Y dS 0 d S r7   )r?   rB   Z	_providerrJ   ÚAttributeErrorrd   r$   r$   r%   Úinstalled_by_distutilsƒ   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjƒS r*   )r   rB   rF   rd   r$   r$   r%   Úcanonical_name�   s    zDistribution.canonical_namec                 C   s   t | jjƒS r*   )Úparse_versionrB   Úversionrd   r$   r$   r%   rk   ‘   s    zDistribution.version)rJ   r)   c                 C   s   | j  t|ƒ¡S r*   )rB   r1   r"   )r-   rJ   r$   r$   r%   Úis_file•   s    zDistribution.is_filec                 c   sT   t |ƒ}| j |¡st|ƒ‚| j |¡s0t|ƒ‚| j |¡D ]}t ||¡V  q<d S r*   )	r"   rB   r1   ÚFileNotFoundErrorÚisdirÚNotADirectoryErrorr9   ÚpathlibÚPurePosixPath)r-   rJ   r   Úchildr$   r$   r%   Úiterdir˜   s    zDistribution.iterdirc                 C   s>   t |ƒ}| j |¡st|ƒ‚| j |¡}|d u r:t| |ƒ‚|S r*   )r"   rB   r1   rm   r5   r   )r-   rJ   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   )rB   Zget_entry_mapÚitemsr"   Ú	partitionr   Ústrip)r-   r   Úentriesr   Úentry_pointra   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yd   | jrFt| jƒ}n
t| jƒ}t	 
d|¡ d}Y n0 tj ¡ }| |¡ | ¡ S )z�
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        ZMETADATAzPKG-INFOzNo metadata found in %sÚ )Ú
isinstancerB   r	   rN   ru   rm   r\   r   ÚreprÚloggerÚwarningÚemailÚparserÚ
FeedParserÚfeedÚclose)r-   Úmetadata_namer'   Zdisplaying_pathZfeed_parserr$   r$   r%   r'   °   s    



zDistribution.metadatar$   )Úextrasr)   c                 C   s"   |rt |ƒ | jj¡}| j |¡S r*   )Ú	frozensetÚintersectionrB   rˆ   Úrequires)r-   rˆ   r$   r$   r%   Úiter_dependenciesÇ   s    zDistribution.iter_dependenciesc                 C   s   | j jS r*   )rB   rˆ   rd   r$   r$   r%   Úiter_provided_extrasÌ   s    z!Distribution.iter_provided_extras)r$   )'r   r    r!   r	   r@   r.   Úclassmethodr"   rR   r   rb   Úpropertyr   r\   rf   r?   rh   r   ri   r   rk   r   rl   r   rp   rq   rs   ru   r   r   r|   r‚   ÚmessageÚMessager'   r   r
   rŒ   r�   r$   r$   r$   r%   r@   G   s.   			r@   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	e dœdd„Zee	e dœdd„Zee dœdd„ZdS )ÚEnvironmentN)Úwsr)   c                 C   s
   || _ d S r*   )Ú_ws)r-   r“   r$   r$   r%   r.   Ñ   s    zEnvironment.__init__rc   c                 C   s
   | t jƒS r*   )r	   Zworking_set)rO   r$   r$   r%   ÚdefaultÔ   s    zEnvironment.default)Úpathsr)   c                 C   s   | t  |¡ƒS r*   )r	   Ú
WorkingSet)rO   r–   r$   r$   r%   Ú
from_pathsØ   s    zEnvironment.from_pathsr/   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_distributionsri   )r-   r   ri   rA   r$   r$   r%   Ú_search_distributionÜ   s
    

z Environment._search_distributionc                 C   sD   |   |¡}|r|S z| j |¡ W n tjy8   Y d S 0 |   |¡S r*   )rš   r”   Zrequirer	   ÚDistributionNotFound)r-   r   rA   r$   r$   r%   Úget_distributionè   s    

zEnvironment.get_distributionc                 c   s   | j D ]}t|ƒV  qd S r*   )r”   r@   rC   r$   r$   r%   Ú_iter_distributionsþ   s    
zEnvironment._iter_distributions)r   r    r!   r	   r—   r.   rŽ   r   r•   r   r   r"   r˜   r   rš   rœ   r   r�   r$   r$   r$   r%   r’   Ð   s   r’   )0Úemail.messager‚   Úemail.parserÚloggingrH   rp   r_   Útypingr   r   r   r   r   r   r   Úpip._vendorr	   Ú"pip._vendor.packaging.requirementsr
   Úpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rj   Úpip._internal.exceptionsr   r   r   Úpip._internal.utils.miscr   Úpip._internal.utils.wheelr   r   Úbaser   r   r   r   r   r   Ú	getLoggerr   r€   r   r&   r@   r’   r$   r$   r$   r%   Ú<module>   s(   $ 	
# 
