o
    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Z$d,d"d#Z%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   R/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.pyr      s   
 r   Fr   r   list[str] | None
local_onlybool	user_onlypathsisolatedexclude_editableskipContainer[str]returnGenerator[str, None, None]c                 c  sT   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r|drn|dd   }n|tdd   d	}t||d
}nttd| |d
}|jstd||  td q8t|j}||vr||j std|td| |j q8||j | q8t||  V  ||= ||j | q8W d    n1 sw   Y  q/| D ]\}}t|dkr	t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>   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   subr1   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_namer1   filesinstallationr   r   r   freeze   s   	








Kr\   rQ   r   r   c                 C  s@   z| j }W n ty   | j d| j  Y S w | j d| S )Nz===z==)versionr   raw_nameraw_version)rQ   dist_versionr   r   r   _format_as_name_version   s   
ra   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.vcsrb   rc   rd   get_backend_for_dirra   rG   debugr   typer   get_src_requirementr^   urlr   rI   r1   r   )rQ   rg   locationrb   rc   rd   vcs_backenddisplayvcs_namerR   exexcr   r   r   _get_editable_info   sf   


rx   T)frozenc                   @  s^   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Ze	dddZ
dddZdS )r7   r   r1   rR   r    r9   )default_factoryzIterable[str]r   r'   r	   c                 C  s
   t | jS r0   )r
   r1   )selfr   r   r   r:      s   
z FrozenRequirement.canonical_namerQ   r   c                 C  sN   |j }|rt|\}}ng }|j}|rt||j}nt|}| |j|||dS )N)r   )r9   rx   
direct_urlr   r^   ra   )clsrQ   r9   rR   r   r|   r   r   r   r8      s   zFrozenRequirement.from_distc                 C  s4   | j }| jrd| }dt| jt|g d S )Nz-e 
)rR   r9   rL   r>   r   r   )r{   rR   r   r   r   __str__   s   
zFrozenRequirement.__str__N)r'   r	   )rQ   r   r'   r7   )r'   r   )r   r   r   r   r   tupler   propertyr:   classmethodr8   r   r   r   r   r   r7      s   
 r7   )NFFNFFr   )r   r   r   r    r!   r    r"   r   r#   r    r$   r    r%   r&   r'   r(   )rQ   r   r'   r   )rQ   r   r'   r   )(
__future__r   r<   loggingrh   collections.abcr   r   r   dataclassesr   r   typingr   pip._vendor.packaging.utilsr	   r
   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   rG   r   r\   ra   rx   r7   r   r   r   r   <module>   s8    

y

B