B
    HeX&                 @   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 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e
ee!  e"e"e
ee!  e"e"ee! ee!ddf dddZ#ee!dddZ$ee dddZ%G dd dZ&dS )    N)	ContainerDict	GeneratorIterable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   s/var/www/downstreamdata.science/rtclock/rtclock-venv/lib/python3.7/site-packages/pip/_internal/operations/freeze.pyr      s   
r   Fr   )r   
local_only	user_onlypathsisolatedexclude_editableskipreturnc             c   sp  i }t |j|d|d}x,|D ]$}	t|	}
|r8|
jr8q|
||
j< qW | r2t }tt	}x| D ]}t
|l}xb|D ]X}| r| ds|dr| }||kr~|| |V  q~|ds|dr |dr|dd   }n|tdd   d}t||d	}nttd
| |d	}|js^td||  td q~t|j}||kr||j std|td
| |j n||j | q~t||  V  ||= ||j | q~W W d Q R X qdW x@| D ]4\}}t|dkrtd|dtt| qW dV  x8t| dd dD ] }|j|krHt| V  qHW 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>       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    	










"rO   )rJ   r$   c             C   s0   | j }t|tr | j d| S | j d| S )Nz==z===)version
isinstancer   raw_name)rJ   dist_versionr   r   r   _format_as_name_version   s    
rT   c          
   C   s  | j }|sttjtj|}ddlm}m}m	} |
|}|dkrtt| }td|| t|d| dgdS t|j}y||| j}	W n |k
r   t| }t|d| d	| dgdS  |k
r }
 z0t| }t|d| d
| dd|
j dgdS d}
~
X Y nh tk
r>   td||j t|g dS  tk
rl } ztd| W dd}~X Y nX 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AssertionErrorospathnormcaseabspathpip._internal.vcsrU   rV   rW   get_backend_for_dirrT   rA   debugr   typer   get_src_requirementrR   urlr   rC   r*   r   )rJ   rZ   locationrU   rV   rW   vcs_backenddisplayZvcs_namerK   exexcr   r   r   _get_editable_info   sR    

 rk   c               @   sJ   e Zd Zdeeeee ddddZeed dddZ	ed	d
dZ
dS )r1   r   N)r*   rK   r3   r   r$   c             C   s&   || _ t|| _|| _|| _|| _d S )N)r*   r
   r4   rK   r3   r   )selfr*   rK   r3   r   r   r   r   __init__   s
    
zFrozenRequirement.__init__)rJ   r$   c             C   sN   |j }|rt|\}}n$g }|j}|r4t||j}nt|}| |j|||dS )N)r   )r3   rk   
direct_urlr   rR   rT   )clsrJ   r3   rK   r   rn   r   r   r   r2      s    zFrozenRequirement.from_dist)r$   c             C   s4   | j }| jrd| }dt| jt|g d S )Nz-e 
)rK   r3   rF   r8   r   r   )rl   rK   r   r   r   __str__   s    
zFrozenRequirement.__str__)r   )r   r   r   r   boolr   rm   classmethodr   r2   rq   r   r   r   r   r1      s
   r1   )NFFNFFr   )'r6   loggingr\   typingr   r   r   r   r   r   r   r	   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   r   rr   rO   rT   rk   r1   r   r   r   r   <module>   s.   (
      $qB