a
    hbòf*&  ã                
   @   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d„Z#ee!dœdd„Z$ee dœdd„Z%G dd„ dƒZ&dS )é    N)Ú	ContainerÚDictÚIterableÚIteratorÚ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   ú\/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_internal/operations/freeze.pyr      s   
r   Fr   )r   Ú
local_onlyÚ	user_onlyÚpathsÚisolatedÚexclude_editableÚskipÚreturnc                 c   sn  i }t |ƒj|d|d�}|D ]$}	t |	¡}
|r6|
jr6q|
||
j< q| �r4tƒ }t t	¡}| D �]�}t
|ƒ��p}|D �]X}| ¡ r˜| ¡  d¡s˜| d¡rº| ¡ }||v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ƒ}||v�r¤||j �s’t d|t d
|¡ ¡ |j¡ n||j  |¡ qrt|| ƒ ¡ V  ||= ||j  |¡ qrW d   ƒ q\1 �sä0    Y  q\| ¡ D ]4\}}t|ƒdk�røt d|d tt|ƒƒ¡¡ �qødV  t| ¡ dd„ d�D ] }|j|v�rHt|ƒ ¡ V  �qHd 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–    	ý




ÿþÿý

þþüÿ

û4ýrP   ©rK   r$   c                 C   s0   t | jtƒr| j› d| j› �S | j› d| j› �S )Nz==z===)Ú
isinstanceÚversionr   Úraw_name)rK   r   r   r   Ú_format_as_name_version“   s    rU   c              
   C   s   | j }|sJ ‚tj tj |¡¡}ddlm}m}m} | 	|¡}|du rtt
| ƒ}t d||¡ t|d|› d�gd�S t|ƒj}z| || j¡}	W nè |yÆ   t
| ƒ}t|d|› d	|› d�gd� Y S  |�y }
 z<t
| ƒ}t|d|› d
|› d�d|
j› d�gd�W  Y d}
~
S d}
~
0  t�yH   t d||j¡ t|g d� Y S  t�yx } zt d|¡ W Y d}~nd}~0 0 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ÚosÚpathÚnormcaseÚabspathÚpip._internal.vcsrV   rW   rX   Úget_backend_for_dirrU   rB   Údebugr   Útyper   Úget_src_requirementrT   Úurlr   rD   r+   r   )rK   r[   ÚlocationrV   rW   rX   Úvcs_backendÚdisplayZvcs_namerL   ÚexÚexcr   r   r   Ú_get_editable_info™   s`    
ýþ
þ
ýþü"þrk   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   rk   Ú
direct_urlr   rT   rU   )ÚclsrK   r4   rL   r   rn   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   )rl   rL   r   r   r   Ú__str__ú   s    
zFrozenRequirement.__str__)r   )r   r   r   r   Úboolr   rm   Úclassmethodr   r3   rq   r   r   r   r   r2   Û   s    ûúr2   )NFFNFFr   )'r7   Úloggingr\   Útypingr   r   r   r   r   r   r   r	   Ú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   rr   rP   rU   rk   r2   r   r   r   r   Ú<module>   s@   (
       ù

øyB