a
    ñ»j~&  ã                
   @  s,  d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
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 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ddddddddœdd„Z$dddœdd„Z%dddœdd„Z&e
dd �G d!d"„ d"ƒƒZ'dS )$é    )ÚannotationsN)Ú	ContainerÚ	GeneratorÚIterable)Ú	dataclassÚfield)Ú
NamedTuple)ÚNormalizedNameÚcanonicalize_name)ÚInvalidVersion)Ú
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 ded< ded< dS )Ú_EditableInfoÚstrÚrequirementz	list[str]ÚcommentsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r   r   úEE:\soccer\ml_env\Lib\site-packages\pip/_internal/operations/freeze.pyr      s   
r   Fr   zlist[str] | NoneÚboolzContainer[str]zGenerator[str, None, None])r   Ú
local_onlyÚ	user_onlyÚpathsÚisolatedÚexclude_editableÚskipÚreturnc                 c  sd  i }t |ƒj|d|d�}|D ]$}	t |	¡}
|r6|
jr6q|
||
j< q| �r*tƒ }t t	¡}| D �]†}t
|ƒ��f}|D �]N}| ¡ r˜| ¡  d¡s˜| d¡rº| ¡ }||vrr| |¡ |V  qr| d¡�r
| d¡râ|dd …  ¡ }n|tdƒd …  ¡  d	¡}t||d
�}ntt d|¡ ¡ |d
�}|j�sHt 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�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-feature)ú-eú
--editabler'   é   r(   ú=)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ýrS   r   r   ©rN   r%   c                 C  sD   z
| j }W n$ ty.   | j› d| j› � Y S 0 | j› d|› �S d S )Nz===z==)Úversionr   Úraw_nameZraw_version)rN   Údist_versionr   r   r   Ú_format_as_name_version—   s
    
rX   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.vcsrY   rZ   r[   Úget_backend_for_dirrX   rE   Údebugr   Útyper   Úget_src_requirementrV   Úurlr   rG   r.   r   )rN   r^   ÚlocationrY   rZ   r[   Úvcs_backendÚdisplayZvcs_namerO   ÚexÚexcr   r   r   Ú_get_editable_info¡   s`    
ýþ
þ
ýþü"þrn   T)Úfrozenc                   @  sl   e Zd ZU ded< ded< ded< eed�Zded< ed	d
œdd„ƒZe	dd dœdd„ƒZ
dd
œdd„ZdS )r5   r   r.   rO   r   r7   )Údefault_factoryzIterable[str]r   r	   )r%   c                 C  s
   t | jƒS r-   )r
   r.   )Úselfr   r   r   r8   ê   s    z FrozenRequirement.canonical_namer   rT   c                 C  sN   |j }|rt|ƒ\}}n$g }|j}|r4t||jƒ}nt|ƒ}| |j|||d�S )N)r   )r7   rn   Ú
direct_urlr   rV   rX   )ÚclsrN   r7   rO   r   rr   r   r   r   r6   î   s    zFrozenRequirement.from_distc                 C  s4   | j }| jrd|› �}d t| jƒt|ƒg ¡d S )Nz-e Ú
)rO   r7   rJ   r<   r   r   )rq   rO   r   r   r   Ú__str__ÿ   s    
zFrozenRequirement.__str__N)r   r   r   r   r   Útupler   Úpropertyr8   Úclassmethodr6   ru   r   r   r   r   r5   ã   s   
r5   )NFFNFFr   )(Ú
__future__r   r:   Úloggingr_   Úcollections.abcr   r   r   Údataclassesr   r   Útypingr   Úpip._vendor.packaging.utilsr	   r
   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   rE   r   rS   rX   rn   r5   r   r   r   r   Ú<module>   s6   
       ùy
B