o
    |ŸŽiQ*  ã                   @   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mZ d dl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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ÚUnion)ÚRequirement)Ú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 ed< eed< ee ed< dS )Ú_EditableInfoÚrequirementÚeditableÚcommentsN)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__Úboolr   © r    r    úiC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\pip/_internal/operations/freeze.pyr       s   
 r   Fr    c                 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   ƒ q/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    )Ú
local_onlyÚskipÚ	user_onlyú#)z-rz--requirementz-fz--find-linksz-iz--index-urlz--prez--trusted-hostz--process-dependency-linksz--extra-index-urlz--use-featurez-ez
--editableé   ú=)ÚisolatedÚ 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_distr   Ú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$   Úpathsr(   Zexclude_editabler#   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¨   €
ý



ÿþ

þþýÿÿ
ûÿÿÁÿDÿ€ÿ
ÿ€ýrP   rK   Úreturnc                 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
tddg d�S | jdu r%t| ƒ}t d|¡ tddd|› d�gd�S tj tj 	| j¡¡}dd	l
m}m}m} | |¡}|du rZt| ƒ}t d
||¡ t|dd|› d�gd�S t|ƒj}z	| || j¡}W nt |y„   t| ƒ}t|dd|› d|› d�gd� Y S  |y® }	 zt| ƒ}t|dd|› d|› d�d|	j› d�gd�W  Y d}	~	S d}	~	w tyÅ   t d||j¡ tddg d� Y S  tyÜ }
 zt d|
¡ W Y d}
~
nd}
~
ww t|dg d�S t d|¡ tdddgd�S )zk
    Compute and return values (req, editable, comments) for use in
    FrozenRequirement.from_dist().
    NF)r   r   r   z*Editable requirement not found on disk: %sTz# Editable install not found (ú)r   )ÚRemoteNotFoundErrorÚRemoteNotValidErrorÚvcsz1No VCS found for editable requirement "%s" in: %rz,# Editable install with no version control (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)zYError when trying to get requirement for VCS system %s, falling back to uneditable formatz-Could not determine repository location of %sz-## !! Could not determine repository location)r   r   ÚlocationrU   rA   rC   ÚosÚpathÚnormcaseÚabspathÚpip._internal.vcsrW   rX   rY   Úget_backend_for_dirÚdebugÚtyper   Úget_src_requirementrT   Úurlr   r,   r   )rK   Zdisplayr[   rW   rX   rY   Úvcs_backendZvcs_namerL   ÚexÚexcr    r    r!   Ú_get_editable_info    s‚   
ý
þý

ýýý€
üþ€ÿýri   c                   @   s4   e Zd Zddd„Zededd fdd„ƒZdd	„ Zd
S )r2   r    c                 C   s&   || _ t|ƒ| _|| _|| _|| _d S r+   )r,   r   r4   rL   r   r   )Úselfr,   rL   r   r   r    r    r!   Ú__init__ô   s
   

zFrozenRequirement.__init__rK   rQ   c                 C   sV   t |ƒ\}}}|d u r|s|j}|rt||jƒ}g }|d u r"t|ƒ}| |j|||d�S )N)r   )ri   Ú
direct_urlr   rT   rU   )ÚclsrK   rL   r   r   rl   r    r    r!   r3   ü   s   ÿzFrozenRequirement.from_distc                 C   s4   | j }| jrd|› �}d t| jƒt|ƒg ¡d S )Nz-e Ú
)rL   r   rF   r8   r   r   )rj   rL   r    r    r!   Ú__str__  s   
zFrozenRequirement.__str__N)r    )r   r   r   rk   Úclassmethodr   r3   ro   r    r    r    r!   r2   ó   s
    
r2   )NFFNFFr    ))r6   Úloggingr\   Útypingr   r   r   r   r   r   r   r	   r
   Z"pip._vendor.packaging.requirementsr   Ú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   rA   r   rP   r   rU   ri   r2   r    r    r    r!   Ú<module>   s2    ,

ùtS