<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Pf$                 @   s   d dl mZ d dlZd dlZd dlZd dl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 ejdZejd	Zejd
ZejdZejdZejdZejeZG dd deZdd Zeje dS )    )absolute_importN)parse)Link)rmtreedisplay_path)
indent_log)vcsVersionControlzurl="([^"]+)"zcommitted-rev="(\d+)"z	URL: (.+)zRevision: (.+)z\s*revision="(\d+)"z<url>(.*)</url>c                   s   e Zd ZdZdZdZd"Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Z fddZdd Zdd Zdd Zdd Zed d! Z  ZS )#
Subversionsvnz.svncheckoutsvn+sshsvn+http	svn+httpssvn+svnc             C   s   |j dj| j s td| | jd|gdddid}tj|}|sftjdt	| tj
d	| dS |jdj }tj|}|stjdt	| tj
d	| |d
fS ||jdfS )z/Returns (url, revision), where both are strings/zBad directory: %sinfoFZLANGC)show_stdoutZextra_environz'Cannot determine URL of svn checkout %sz!Output that cannot be parsed: 
%sN   z,Cannot determine revision of svn checkout %s)NN)rstripendswithdirnameAssertionErrorrun_command_svn_url_researchloggerwarningr   debuggroupstrip_svn_revision_re)selflocationoutputmatchurl r(    /usr/lib/python3.6/subversion.pyget_info   s,    




zSubversion.get_infoc             C   st   | j  \}}t||}| j|}tjd|| t 6 tjj|rJt	| | j
dg| ||g dd W dQ R X dS )z@Export the svn repository at the url to the destination locationz!Exporting svn repository %s to %sexportF)r   N)get_url_revget_rev_optionsremove_auth_from_urlr   r   r   ospathexistsr   r   )r#   r$   r'   revrev_optionsr(   r(   r)   r+   ;   s    

zSubversion.exportc             C   s   | j dg| ||g  d S )Nswitch)r   )r#   destr'   r3   r(   r(   r)   r4   J   s    zSubversion.switchc             C   s   | j dg| |g  d S )Nupdate)r   )r#   r5   r3   r(   r(   r)   r6   M   s    zSubversion.updatec             C   st   | j  \}}t||}| j|}|r.d| }nd}| j||||rptjd||t| | jddg| ||g  d S )Nz (to revision %s) zChecking out %s%s to %sr   z-q)r,   r-   r.   Zcheck_destinationr   r   r   r   )r#   r5   r'   r2   r3   Zrev_displayr(   r(   r)   obtainP   s    



zSubversion.obtainc             C   sf   x`|D ]X}t |j}|sqd|kr@dj|jdd d j }n|}||jkr|jddd S qW d S )N-r   #r   )r   egg_fragmentjoinsplitlowerkey)r#   distZdependency_linksr'   r<   r@   r(   r(   r)   get_locationa   s    


zSubversion.get_locationc       
      C   s   d}xt j|D ]\}}}| j|kr2g |dd< q|j| j t jj|| jd}t jj|s^q| j|\}}||kr~|d }	n | s|j|	 rg |dd< qt	||}qW |S )zR
        Return the maximum revision for all files under a given location
        r   Nentriesr   )
r/   walkr   remover0   r=   r1   _get_svn_url_rev
startswithmax)
r#   r$   ZrevisionbasedirsfilesZ
entries_fnZdirurlZlocalrevZbase_urlr(   r(   r)   get_revisiono   s"    

zSubversion.get_revisionc                s,   t t| j \}}|jdr$d| }||fS )Nzssh://zsvn+)superr
   r,   rG   )r#   r'   r2   )	__class__r(   r)   r,      s    
zSubversion.get_url_revc             C   sV   |}xBt jjt jj|dsF|}t jj|}||krtjd| d S qW | j|d S )Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r   )r/   r0   r1   r=   r   r   r   rF   )r#   r$   Zorig_locationZlast_locationr(   r(   r)   get_url   s    zSubversion.get_urlc             C   sp  ddl m} tjj|| jd}tjj|rHt|}|j }W d Q R X nd}|j	dsj|j	dsj|j	drt
ttj|jd}|d d= |d d	 }d
d |D dg }n|j	drtj|}|std| |jd}dd tj|D dg }n^y<| jdd|gdd}	tj|	jd}dd tj|	D }W n  |k
rR   d g  }}Y nX |rdt|}
nd}
||
fS )Nr   )InstallationErrorrC   r7   89Z10z

   c             S   s,   g | ]$}t |d kr|d  rt|d  qS )	   )lenint).0dr(   r(   r)   
<listcomp>   s    z/Subversion._get_svn_url_rev.<locals>.<listcomp>z<?xmlzBadly formatted data: %rr   c             S   s   g | ]}t |jd qS )r   )rV   r    )rW   mr(   r(   r)   rY      s    r   z--xmlF)r   c             S   s   g | ]}t |jd qS )r   )rV   r    )rW   rZ   r(   r(   r)   rY      s    )Zpip.exceptionsrP   r/   r0   r=   r   r1   openreadrG   listmapstr
splitlinesr>   _svn_xml_url_rer   
ValueErrorr    _svn_rev_refinditerr   _svn_info_xml_url_re_svn_info_xml_rev_rerH   )r#   r$   rP   Zentries_pathfdatar'   Zrevsr&   Zxmlr2   r(   r(   r)   rF      s>    








zSubversion._get_svn_url_revc             C   sB   | j |}|d krd S |j jddd }| j|}d|||f S )Nr9   r   r   zsvn+%s@%s#egg=%s)rO   Zegg_namer>   rL   )r#   rA   r$   ZrepoZegg_project_namer2   r(   r(   r)   get_src_requirement   s    

zSubversion.get_src_requirementc             C   s   dS )z&Always assume the versions don't matchFr(   )r#   r5   r3   r(   r(   r)   check_version   s    zSubversion.check_versionc             C   s>   t j| }|jjdd }|j||j|j|jf}t j|}|S )N@r   r;   )	urllib_parseurlsplitnetlocr>   schemer0   ZqueryZfragmentZ
urlunsplit)r'   ZpurlZstripped_netlocZ
url_piecesZsurlr(   r(   r)   r.      s
    

zSubversion.remove_auth_from_url)r   r   r   r   r   )__name__
__module____qualname__namer   Z	repo_nameZschemesr*   r+   r4   r6   r8   rB   rL   r,   rO   rF   ri   rj   staticmethodr.   __classcell__r(   r(   )rN   r)   r
      s"   ,	r
   c             C   s   |rd|g}ng }t j| }t|dr6|j|j }}nL|d }d|krz|jdd }d|krn|jdd\}}q|d  }}nd	\}}|r|d|g7 }|r|d|g7 }|S )
Nz-rusernamer   rk   r   :z
--usernamez
--password)NN)rl   rm   hasattrrv   passwordr>   )r'   r2   r3   rrv   ry   rn   Zauthr(   r(   r)   r-      s$    


r-   )Z
__future__r   Zloggingr/   reZpip._vendor.six.moves.urllibr   rl   Z	pip.indexr   Z	pip.utilsr   r   Zpip.utils.loggingr   Zpip.vcsr   r	   compilera   rc   r   r"   rf   re   Z	getLoggerrp   r   r
   r-   registerr(   r(   r(   r)   <module>   s&   






 Y