U
    ƒIÀdX&  ã                   @   s(  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
mZ d dl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 d dlmZ d d	lmZ e e¡ZG d
d„ de	ƒZ de
ee!  e"e"e
ee!  e"e"ee! ee!ddf dœdd„Z#ee!dœdd„Z$ee dœdd„Z%G dd„ dƒZ&dS )é    N)Ú	ContainerÚDictÚ	GeneratorÚIterableÚListÚ
NamedTupleÚOptionalÚSet)Úcanonicalize_name)ÚVersion)Ú
BadCommandÚInstallationError)ÚBaseDistributionÚget_environment)Úinstall_req_from_editableÚinstall_req_from_line)Ú
COMMENT_RE)Ú%direct_url_as_pep440_direct_referencec                   @   s"   e Zd ZU eed< ee ed< dS )Ú_EditableInfoÚrequirementÚcommentsN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   © r   r   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pip/_internal/operations/freeze.pyr      s   
r   Fr   )r   Ú
local_onlyÚ	user_onlyÚpathsÚisolatedÚexclude_editableÚskipÚreturnc                 c   sX  i }t |ƒj|d|d�}|D ]$}	t |	¡}
|r6|
jr6q|
||
j< q| �rtƒ }t t	¡}| D �]z}t
|ƒ��f}|D �]X}| ¡ r˜| ¡  d¡s˜| d¡rº| ¡ }||krr| |¡ |V  qr| d¡sÐ| d¡�r| d¡rì|dd …  ¡ }n|tdƒd …  ¡  d¡}t||d	�}ntt d
|¡ ¡ |d	�}|j�sRt d|| ¡ ¡ t d¡ qrt|jƒ}||k�r¤||j �s’t d|t d
|¡ ¡ |j¡ n||j  |¡ qrt|| ƒ ¡ V  ||= ||j  |¡ qrW 5 Q R X q\| ¡ D ]4\}}t|ƒdk�rât d|d tt|ƒƒ¡¡ �qâdV  t| ¡ dd„ d�D ] }|j|k�r2t|ƒ ¡ V  �q2d S )Nr   )r   r#   r   ú#)z-rz--requirementz-fz--find-linksz-iz--index-urlz--prez--trusted-hostz--process-dependency-linksz--extra-index-urlz--use-featurez-ez
--editableé   ú=)r!   Ú zWSkipping line in requirement file [%s] because it's not clear what it would install: %sz9  (add #egg=PackageName to the URL to avoid this warning)zBRequirement file [%s] contains %s, but package %r is not installedé   z+Requirement %s included multiple times [%s]z, z7## The following requirements were added by pip freeze:c                 S   s
   | j  ¡ S ©N)ÚnameÚlower)Úxr   r   r   Ú<lambda>Ž   ó    zfreeze.<locals>.<lambda>)Úkey) r   Úiter_installed_distributionsÚFrozenRequirementÚ	from_distÚeditableÚcanonical_nameÚsetÚcollectionsÚdefaultdictÚlistÚopenÚstripÚ
startswithÚrstripÚaddÚlenÚlstripr   r   r   Úsubr+   ÚloggerÚinfor
   ÚwarningÚappendr   ÚitemsÚjoinÚsortedÚvalues)r   r   r   r    r!   r"   r#   ZinstallationsÚdistsÚdistÚreqZemitted_optionsZ	req_filesZreq_file_pathÚreq_fileÚlineZline_reqZline_req_canonical_namer+   ÚfilesZinstallationr   r   r   Úfreeze   s–    	ý




ÿþÿý

þþüÿ

ûýrP   ©rK   r$   c                 C   s0   | j }t|tƒr | j› d|› �S | j› d|› �S )Nz==z===)ÚversionÚ
isinstancer   Úraw_name)rK   Údist_versionr   r   r   Ú_format_as_name_version“   s    
rV   c              
   C   s¤  | j }|st‚tj tj |¡¡}ddlm}m}m	} | 
|¡}|dkrtt| ƒ}t d||¡ t|d|› d�gd�S t|ƒj}z| || j¡}	W nì |k
rÈ   t| ƒ}t|d|› d	|› d�gd� Y S  |k
�r }
 z8t| ƒ}t|d|› d
|› d�d|
j› d�gd� W Y ¢S d}
~
X Y nl tk
�rN   t d||j¡ t|g d� Y S  tk
�r| } zt d|¡ W 5 d}~X Y nX t|	g d�S t d|¡ t|dgd�S )za
    Compute and return values (req, comments) for use in
    FrozenRequirement.from_dist().
    r   )ÚRemoteNotFoundErrorÚRemoteNotValidErrorÚvcsNz1No VCS found for editable requirement "%s" in: %rz,# Editable install with no version control (ú))r   r   z# Editable z install with no remote (z
 install (z4) with either a deleted local remote or invalid URI:z# 'ú'zPcannot determine version of editable source in %s (%s command not found in path)z6Error when trying to get requirement for VCS system %sz-Could not determine repository location of %sz-## !! Could not determine repository location)Úeditable_project_locationÚAssertionErrorÚosÚpathÚnormcaseÚabspathÚpip._internal.vcsrW   rX   rY   Úget_backend_for_dirrV   rB   Údebugr   Útyper   Úget_src_requirementrT   Úurlr   rD   r+   r   )rK   r\   ÚlocationrW   rX   rY   Úvcs_backendÚdisplayZvcs_namerL   ÚexÚexcr   r   r   Ú_get_editable_infoš   s`    
ýþ
þ
ýþüþrm   c                   @   sJ   e Zd Zdeeeee ddœdd„Zeed dœdd„ƒZ	ed	œd
d„Z
dS )r2   r   N)r+   rL   r4   r   r$   c                 C   s&   || _ t|ƒ| _|| _|| _|| _d S r*   )r+   r
   r5   rL   r4   r   )Úselfr+   rL   r4   r   r   r   r   Ú__init__Ý   s
    
zFrozenRequirement.__init__rQ   c                 C   sN   |j }|rt|ƒ\}}n$g }|j}|r4t||jƒ}nt|ƒ}| |j|||d�S )N)r   )r4   rm   Ú
direct_urlr   rT   rV   )ÚclsrK   r4   rL   r   rp   r   r   r   r3   ê   s    zFrozenRequirement.from_dist)r$   c                 C   s4   | j }| jrd|› �}d t| jƒt|ƒg ¡d S )Nz-e Ú
)rL   r4   rG   r9   r   r   )rn   rL   r   r   r   Ú__str__û   s    
zFrozenRequirement.__str__)r   )r   r   r   r   Úboolr   ro   Úclassmethodr   r3   rs   r   r   r   r   r2   Ü   s    ûúr2   )NFFNFFr   )'r7   Úloggingr^   Útypingr   r   r   r   r   r   r   r	   Zpip._vendor.packaging.utilsr
   Zpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   r   Úpip._internal.metadatar   r   Úpip._internal.req.constructorsr   r   Zpip._internal.req.req_filer   Ú&pip._internal.utils.direct_url_helpersr   Ú	getLoggerr   rB   r   r   rt   rP   rV   rm   r2   r   r   r   r   Ú<module>   s@   (
       ù

øyB