o
    Ëý°j*&  ã                   @   sB  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de
ee!  de"de"de
ee!  de"de"dee! dee! fdd„Z#dede!fdd„Z$dede f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   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.pyr      s   
 r   Fr   r   Ú
local_onlyÚ	user_onlyÚpathsÚisolatedÚexclude_editableÚskipÚreturnc                 c   s^  � i }t |ƒj|d|d�}|D ]}	t |	¡}
|r|
jrq|
||
j< q| �rtƒ }t t	¡}| D ]Á}t
|ƒ�³}|D ]¨}| ¡ rJ| ¡  d¡sJ| d¡r[| ¡ }||vrZ| |¡ |V  q8| d¡se| d¡r‡| d¡rs|dd …  ¡ }n|tdƒd …  ¡  d¡}t||d	�}ntt d
|¡ ¡ |d	�}|js¥t d|| ¡ ¡ t d¡ q8t|jƒ}||vrÌ||j sÃt d|t d
|¡ ¡ |j¡ q8||j  |¡ q8t|| ƒ ¡ V  ||= ||j  |¡ q8W d   ƒ n1 sëw   Y  q/| ¡ D ]\}}t|ƒdk�rt d|d tt|ƒƒ¡¡ qõdV  t| ¡ dd„ d�D ]}|j|v�r+t|ƒ ¡ V  �qd 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>Ž   s   
 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#   ÚinstallationsÚdistsÚdistÚreqÚemitted_optionsÚ	req_filesÚreq_file_pathÚreq_fileÚlineÚline_reqÚline_req_canonical_namer+   ÚfilesÚinstallationr   r   r   Úfreeze   s¤   €	ý



ÿþÿý

þþüÿ

ûºÿ€Ký€€þrV   rK   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   rZ   c              
   C   sš  | j }|sJ ‚tj tj |¡¡}ddlm}m}m} | 	|¡}|du r:t
| ƒ}t d||¡ t|d|› d�gd�S t|ƒj}z	| || j¡}	W nq |yc   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}
~
w ty¢   t d||j¡ t|g d� Y S  ty¹ } zt d|¡ W Y d}~nd}~ww 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.vcsr[   r\   r]   Úget_backend_for_dirrZ   rA   Údebugr   Útyper   Úget_src_requirementrY   Úurlr   rC   r+   r   )rK   r`   Úlocationr[   r\   r]   Úvcs_backendÚdisplayÚvcs_namerL   ÚexÚexcr   r   r   Ú_get_editable_info™   sf   
ýþ

þýþ€ü€ÿþrq   c                   @   sV   e Zd Z	ddedededee ddf
dd	„Zed
edd fdd„ƒZ	defdd„Z
dS )r1   r   r+   rL   r3   r   r$   Nc                 C   s&   || _ t|ƒ| _|| _|| _|| _d S r*   )r+   r
   r4   rL   r3   r   )Úselfr+   rL   r3   r   r   r   r   Ú__init__Ü   s
   

zFrozenRequirement.__init__rK   c                 C   sN   |j }|rt|ƒ\}}ng }|j}|rt||jƒ}nt|ƒ}| |j|||d�S )N)r   )r3   rq   Ú
direct_urlr   rY   rZ   )ÚclsrK   r3   rL   r   rt   r   r   r   r2   é   s   zFrozenRequirement.from_distc                 C   s4   | j }| jrd|› �}d t| jƒt|ƒg ¡d S )Nz-e Ú
)rL   r3   rF   r8   r   r   )rr   rL   r   r   r   Ú__str__ú   s   
zFrozenRequirement.__str__)r   )r   r   r   r   Úboolr   rs   Úclassmethodr   r2   rw   r   r   r   r   r1   Û   s     ûþýüû
úr1   )NFFNFFr   )'r6   Úloggingra   Útypingr   r   r   r   r   r   r   r	   Úpip._vendor.packaging.utilsr
   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   r   Úpip._internal.metadatar   r   Úpip._internal.req.constructorsr   r   Úpip._internal.req.req_filer   Ú&pip._internal.utils.direct_url_helpersr   Ú	getLoggerr   rA   r   r   rx   rV   rZ   rq   r1   r   r   r   r   Ú<module>   sP    (
ù
ÿþý
üûúù
øyB