a
    sh~&                  
   @  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   [/var/www/html/assistant/venv/lib/python3.9/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 std|td| |j n||j | qrt||  V  ||= ||j | qrW d    q\1 s0    Y  q\| D ]4\}}t|dkrtd|dtt| qd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   Z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rR   r   r   rM   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)rM   dist_versionr   r   r   _format_as_name_version   s
    
rW   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.vcsrX   rY   rZ   get_backend_for_dirrW   rD   debugr   typer   get_src_requirementrU   urlr   rF   r.   r   )rM   r]   locationrX   rY   rZ   vcs_backendZdisplayZvcs_namerN   exexcr   r   r   _get_editable_info   s`    


"rl   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 )r4   r   r.   rN   r   r6   )default_factoryzIterable[str]r   r	   )r%   c                 C  s
   t | jS r-   )r
   r.   )selfr   r   r   r7      s    z FrozenRequirement.canonical_namer   rS   c                 C  sN   |j }|rt|\}}n$g }|j}|r4t||j}nt|}| |j|||dS )N)r   )r6   rl   
direct_urlr   rU   rW   )clsrM   r6   rN   r   rp   r   r   r   r5      s    zFrozenRequirement.from_distc                 C  s4   | j }| jrd| }dt| jt|g d S )Nz-e 
)rN   r6   rI   r;   r   r   )ro   rN   r   r   r   __str__   s    
zFrozenRequirement.__str__N)r   r   r   r   r   tupler   propertyr7   classmethodr5   rs   r   r   r   r   r4      s   
r4   )NFFNFFr   )(
__future__r   r9   loggingr^   collections.abcr   r   r   Zdataclassesr   r   typingr   pip._vendor.packaging.utilsr	   r
   Zpip._vendor.packaging.versionr   pip._internal.exceptionsr   r   Zpip._internal.metadatar   r   pip._internal.req.constructorsr   r   Zpip._internal.req.req_filer   &pip._internal.utils.direct_url_helpersr   	getLoggerr   rD   r   rR   rW   rl   r4   r   r   r   r   <module>   s6   
       y
B