<!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|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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)
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"   r.   r#   r#   r$   r/   J   s    zSubversion.switchc             C   s   | j dg| |g  d S )Nupdate)r   )r   r0   r.   r#   r#   r$   r1   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   r0   r"   r-   r.   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"   r7   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entries/)
r*   walkdirnameremover+   r8   r,   _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'   rD   )r   r"   r-   )	__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*   r+   r,   r8   rA   r   r   rC   )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   )InstallationErrorr>   r2   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   )rS   r   )rT   mr#   r#   r$   rV      s    r   z--xmlF)r   c             S   s   g | ]}t |jd qS )r   )rS   r   )rT   rW   r#   r#   r$   rV      s    )Zpip.exceptionsrM   r*   r+   r8   rA   r,   openreadrD   listmapstr
splitlinesr9   _svn_xml_url_rer   
ValueErrorr   _svn_rev_refinditerr   _svn_info_xml_url_re_svn_info_xml_rev_rerE   )r   r   rM   Zentries_pathfdatar"   Zrevsr!   Zxmlr-   r#   r#   r$   rC      s>    








zSubversion._get_svn_url_revc             C   sB   | j |}|d krd S |j jddd }| j|}d|||f S )Nr4   r   r   zsvn+%s@%s#egg=%s)rL   Zegg_namer9   rI   )r   r<   r   ZrepoZegg_project_namer-   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   r0   r.   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   r6   )	urllib_parseurlsplitnetlocr9   schemer+   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__namerA   Z	repo_nameZschemesr%   r&   r/   r1   r3   r=   rI   r'   rL   rC   rf   rg   staticmethodr)   __classcell__r#   r#   )rK   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   rh   r   :z
--usernamez
--password)NN)ri   rj   hasattrrs   passwordr9   )r"   r-   r.   rrs   rv   rk   Zauthr#   r#   r$   r(      s$    


r(   )Z
__future__r   Zloggingr*   reZpip._vendor.six.moves.urllibr   ri   Z	pip.indexr   Z	pip.utilsr   r   Zpip.utils.loggingr   Zpip.vcsr   r	   compiler^   r`   r   r   rc   rb   Z	getLoggerrm   r   r
   r(   registerr#   r#   r#   r$   <module>   s&   






 Y